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