Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ, Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π²ΠΊΠ»ΡΡΠ²Π° 745 ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΈΠ·Π³ΠΎΡΠ²Π΅Π½ΠΈ Ρ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° 74 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΎΡ ΠΊΠΎΠΈΡΠΎ 18 ΡΡΠ°ΡΡΠ²Π°Ρ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ.
- ΠΠ°Π»ΠΈΡΠ΅Π½ ΠΎΡ Π²Π΅ΡΡΠΈΡ 1.18, Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π±Π°Π·ΠΈΡΠ°Π½Π΅ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ βgit rebase --rebase-mergesβ Π·Π°ΠΌΠ΅ΡΡΠ²Π° ΡΡΠ°ΡΠ°ΡΠ° ΠΎΠΏΡΠΈΡ β--preserve-mergesβ, ΠΊΠΎΡΡΠΎ Π²Π΅ΡΠ΅ Π΅ ΠΎΡΡ
Π²ΡΡΠ»Π΅Π½Π°. ΠΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° "git rebase" ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π·Π°ΠΌΡΠ½Π° Π½Π° ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ Ρ Π½ΠΎΠ² ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠΎΠΌΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΊΠ»ΠΎΠ½, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° Π½ΡΠΊΠ°ΠΊΠ²Π° Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΡΠΌ ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ ΠΊΠ»ΠΎΠ½, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ»Π΅Π΄ ΠΊΠ»ΠΎΠ½Π° :
ΠΎ - ΠΎ - ΠΎ (ΠΌΠΎΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ)
/
ΠΎ - ΠΎ - ΠΎ - ΠΎ - ΠΎ (ΠΌΠ°ΠΉΡΡΠΎΡ)
ΠΎ - ΠΎ - ΠΎ (ΠΌΠΎΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ)
/
ΠΎ - ΠΎ - ΠΎ - ΠΎ - ΠΎ (ΠΌΠ°ΠΉΡΡΠΎΡ)
ΠΠ° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΊΠ»ΠΎΠ½Π° Π² ΠΌΠΈΠ³ΡΠΈΡΠ°Π½ ΠΊΠ»ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠΏΡΠΈΡΡΠ° β--preserve-mergeβ, ΠΊΠΎΡΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ (git rebase -i --preserve-merge), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈΡΠ΅, Π½ΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ° ΠΏΡΠ»Π½ΠΎΡΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ. ΠΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ β--rebase-mergesβ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΠΊΠ»ΠΎΠ½Π°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΌΠΈΠ³ΡΠΈΡΠ°, ΠΊΠ°ΡΠΎ ΡΡΡΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΏΡΠ»Π΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅, ΠΏΡΠ΅Π³ΡΡΠΏΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ "--rebase-merge"
Π’Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΊΠ»ΠΎΠ½ ΠΊΡΠΌ ΠΏΠΎ-Π½ΠΎΠ² Π³Π»Π°Π²Π΅Π½ ΠΊΠ»ΠΎΠ½, ΠΊΠ°ΡΠΎ ΡΡΡΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΊΠ»ΠΎΠ½Π° Π² ΠΌΠΈΠ³ΡΠΈΡΠ°Π½ΠΈΡ ΠΊΠ»ΠΎΠ½ ΠΈ ΠΏΡΠ°Π²ΠΈ Π½ΡΠΊΠΎΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π±Π΅Π»Π΅ΠΆΠΊΠΈΡΠ΅ Π·Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. - ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ² ΠΊΠ»ΠΎΠ½ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° Π΄Π²Π° Π΄ΡΡΠ³ΠΈ ΠΊΠ»ΠΎΠ½Π° (Π±Π°Π·Π° Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅, ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ ΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½ΠΈΠΊ), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ βgit branch new A...Bβ ΠΈ βgit checkout -b new A...B", Π² ΠΊΠΎΠΉΡΠΎ "A ...B" Π²ΠΊΠ»ΡΡΠ²Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π·Π° Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²Π° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ "git checkout A...B" ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π° HEAD ΠΊΡΠΌ Π±Π°Π·ΠΎΠ²ΠΈΡ ΠΊΠΎΠΌΠΈΡ ΠΈ "diff A. ..B" ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ "B" ΠΈ ΡΡΡΠΎΡΠΎ ΠΊΠ°ΡΠΎ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ "A" "Ancestor.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π²ΡΡΡ Ρ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΊΠ»ΠΎΠ½ my-feature, ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΊΠ»ΠΎΠ½, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡ ΡΡΡΠΎΡΠΎ ΠΌΡΡΡΠΎ Π² Π³Π»Π°Π²Π½ΠΈΡ ΠΊΠ»ΠΎΠ½, ΠΎΡ ΠΊΠΎΠΉΡΠΎ Π΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ ΠΊΠ»ΠΎΠ½ΡΡ my-feature. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠ΅ ΡΡΡΠ½ΠΎ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π±Π΅ΡΠ΅ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ ΡΠ΅ Π³ΠΎΠ»ΡΠΌΠ° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ βgit merge-base master my-featureβ, Π·Π° Π΄Π° ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅ Ρ Π΅ΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅ master ΠΈ my-feature ΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ² ΠΊΠ»ΠΎΠ½ ΡΠΏΡΡΠΌΠΎ ΠΎΠ±ΡΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½ΠΈΠΊ β git branch my-other-feature hash. Π Git 2.22 ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° "git branch my-other-feature A...B", Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΊΠ»ΠΎΠ½ ΡΠΏΡΡΠΌΠΎ Π±Π°Π·Π°ΡΠ° Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° Π΄Π²Π° Π΄ΡΡΠ³ΠΈ ΠΊΠ»ΠΎΠ½Π°;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ "git branch --show-current" Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΠΎΠ½Π°, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΠ»Π°ΡΠ°Π½Π΅;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡΡΠ° βgit checkout βno-overlay β dirβ, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° dir Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅ Π²ΡΠ² ΡΠΎΡΠΌΠ°, ΠΊΠΎΡΡΠΎ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ ΠΊΠ»ΠΎΠ½. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΈΠΌΠ° ΡΠ°ΠΉΠ» Π² Π»ΠΎΠΊΠ°Π»Π½ΠΎΡΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° dir, ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π΅ Π² Π³Π»Π°Π²Π½ΠΈΡ ΠΊΠ»ΠΎΠ½, ΡΠΎΠ³Π°Π²Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° βgit checkout master - dirβ ΡΠΎΠΉ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΡΡΠ°Π²Π΅Π½ ΠΈ Π°ΠΊΠΎ β--no-overlay β Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° ΠΎΠΏΡΠΈΡ, ΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΡΡΠΈΡΠ°;
- ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° "git diff" ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ API Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΡΠΈΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π΄Π½Π°ΠΊΠ²ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΎΠΏΡΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΈ git ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π² βgit diffβ Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΡΠΈΠΈ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°Ρ ΡΠ²ΠΎΠΈΡΠ΅ Π°Π½ΡΠ°Π³ΠΎΠ½ΠΈΡΡΠΈ (β--function-contextβ ΠΈ β--no-function-contextβ);
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ°Π³ΠΎΠ²Π΅, ΠΏΡΠΈΠΊΠ°ΡΠ΅Π½ΠΈ ΠΊΡΠΌ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ Π² ΠΈΠ·Ρ
ΠΎΠ΄Π° βgit logβ (βΡΡΠ΅ΠΉΠ»ΡΡβ - ΡΠ»Π°Π³ΠΎΠ²Π΅ Π·Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠ°ΡΠΎ Signed-off-by ΠΈ Co-authored-by). ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠΈΠ»ΡΡΠΈΡΠ°ΡΠ΅ Π΅ΡΠΈΠΊΠ΅ΡΠΈ ΠΊΠ°ΠΊΡΠΎ ΠΏΠΎ ΠΊΠ»ΡΡ, ΡΠ°ΠΊΠ° ΠΈ ΠΏΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
"git log --pretty="%(trailers:key=Reviewed-by,valueonly)"; - ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½ΠΎΠ²Π° ΠΌΠ°ΡΠΈΠ½Π° Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅, Trace2, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΏΠΎ-Π³ΡΠ²ΠΊΠ°Π² ΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΡΠΎΡΠΌΠ°Ρ. Trace2 Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ±ΠΈΡΠ°ΡΠ΅ ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π·Π° ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π΅Π½ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ (ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΡΡ ΡΠ΅ Π·Π°Π΄Π°Π²Π° ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Ρ Π²ΡΠ½ΡΠ½ΠΎ);
- ΠΡΡΠ΅ΡΡΡ βgit bisectβ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ ΠΏΠΎ-ΡΠ΅ΡΠ»ΠΈΠ², Π² ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΈΡΠ΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ Π²Π΅ΡΠ΅ ΡΠ° ΠΏΠΎ-ΡΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π½ΠΈ ΠΈ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΠ» (Π½Π° Π½ΠΈΠ²ΠΎ Π±ΡΠΎΠΉ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅);
- ΠΠ²ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈΡ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π΅ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½Π°, Π·Π° Π΄Π° ΡΠ΅ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° ΡΠ°Π»ΡΠΈΠ²ΠΎΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΅ΡΠΈΠΊΠ΅ΡΠΈ Π·Π° ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΠΌΠ½ΡΠ²Π°ΡΠ΅, ΡΠ°ΠΊΠΈΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π²Π΅ΡΠ΅ ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Ρ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ½ΠΈ;
- ΠΠΎΠΊΠ°Π·Π²Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΡΠ°Π³ Π½Π° Π΄ΡΡΠ³ ΡΠ°Π³, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΠΏΠΎ ΠΏΠΎΠ³ΡΠ΅ΡΠΊΠ° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΡΠ°Π³Π° Π½Π° Π³ΡΠ΅ΡΠ΅Π½ ΠΊΠΎΠΌΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΊΠ°ΡΠΎ βgit tag -f -m βΠ°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅β my-tag1 my-tag2β³ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΅ΡΠΈΠΊΠ΅Ρ Π²ΡΡΡ Ρ ΡΡΠ°ΡΠΈΡ ΠΌΠ°ΡΠΊΠ΅Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π΅ ΠΎΡΠ°ΠΊΠ²Π°Π» Π½ΠΎΠ²ΠΈΡΡ Π΅ΡΠΈΠΊΠ΅Ρ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠ°, ΠΊΡΠΌ ΠΊΠΎΠΉΡΠΎ ΡΠΎΡΠΈ ΡΡΠ°ΡΠΈΡΡ ΠΌΠ°ΡΠΊΠ΅Ρ);
- ΠΠ΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ Π·Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π° ΡΠ°ΡΡΠ΅ΡΠ½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Π΄ΠΈΡΠΊ ΡΡΡΡΠΊΡΡΡΠ° βΡΠ°ΡΡΡΠΎΠ²ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡβ), ΠΊΠΎΠΈΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π΄Π°Π½Π½ΠΈ Π·Π° Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΠΎΠ±Π΅ΠΊΡΠΈ, Π½Π°Π»ΠΈΡΠ½ΠΈ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΈΡ, ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π±ΡΡΠ·ΠΎ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΎΠ±Π΅ΠΊΡ. Π’Π°Π·ΠΈ ΡΡΡΡΠΊΡΡΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ (git fetch).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru