Git master merge: 35. Π‘Π»ΠΈΡΠ½ΠΈΠ΅ Π² Π²Π΅ΡΠΊΡ master
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ | Atlassian Git Tutorial
ΠΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git rebase
, ΡΠ»ΠΎΠ²Π½ΠΎ ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΌΠ°Π³ΠΈΠ΅ΠΉ, ΡΠ°ΡΡΠΎ ΠΏΡΠ³Π°ΡΡ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ². Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΠΆΠΈΠ·Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase
ΡΠΎ ΡΡ
ΠΎΠΆΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git merge
ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ
ΡΠΌΠ΅ΡΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Git.
ΠΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ²
Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° git rebase
ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΅ΡΠΈΡΡ ΡΡ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΡΠΎ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° git merge
. ΠΠ±Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π² Π΄ΡΡΠ³ΡΡ, Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π²Ρ Π½Π°ΡΠ°Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ Π½ΠΎΠ²ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΠΎΠΌ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ»Π΅Π½ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² Π³Π»Π°Π²Π½ΡΡ
Π²Π΅ΡΠΊΡ. ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΡΡΠΎΡΠΈΡ ΡΠΎΡΠΊΠΎΠ², Π·Π½Π°ΠΊΠΎΠΌΠ°Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ, ΠΊΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Git Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅
Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅. ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π² ΡΠ²ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π²Π΅ΡΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°: merge ΠΈΠ»ΠΈ rebase.
Π‘ΠΏΠΎΡΠΎΠ± ΡΠ»ΠΈΡΠ½ΠΈΡ (merge)
ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π²Π΅ΡΠΊΠΈ master
Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
gitΒ checkoutΒ feature
gitΒ mergeΒ master
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ:
gitΒ mergeΒ featureΒ master
ΠΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π² Π²Π΅ΡΠΊΠ΅ feature
Π½ΠΎΠ²ΡΠΉ Β«ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡΒ», ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΈΡΡΠΎΡΠΈΠΈ ΠΎΠ±Π΅ΠΈΡ
Π²Π΅ΡΠΎΠΊ. Π‘ΡΡΡΠΊΡΡΡΠ° Π²Π΅ΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
Π‘Π»ΠΈΡΠ½ΠΈΠ΅ (merge) β ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ Π½Π΅ΡΠ°Π·ΡΡΡΠ°ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π²Π΅ΡΠΊΠΈ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ. ΠΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ rebase (ΠΈ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π½ΠΈΠΆΠ΅).
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π²Π΅ΡΠΊΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ. ΠΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ° Π²
Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅
Π²Π΅Π΄Π΅ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎ, ΠΈΡΡΠΎΡΠΈΡ Π²Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π±ΡΡΡΡΠΎ Π·Π°ΡΠΎΡΠΈΡΡΡ. Π₯ΠΎΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΡΠ°Π½ΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git log
, Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΡΡΠΆΠ΅Π»ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π‘ΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (rebase)
ΠΠΌΠ΅ΡΡΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ (feature
) Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ (master
) Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΊΠΎΠΌΠ°Π½Π΄:
gitΒ checkoutΒ feature
gitΒ rebaseΒ master
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ
Π²Π΅ΡΠΊΠ° ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Π³Π»Π°Π²Π½ΠΎΠΉ
, Π²ΠΊΠ»ΡΡΠ°Ρ Π² ΡΠ΅Π±Ρ Π²ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅
. ΠΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ merge ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ°Ρ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ rebase, ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ° Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅.
ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ rebase β Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΠ°Ρ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΡΡΡΠ°Π½ΡΠ΅Ρ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ git merge
. ΠΠΎ-Π²ΡΠΎΡΡΡ
, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ Π²ΡΡΠ΅, ΠΊΠΎΠΌΠ°Π½Π΄Π° rebase ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° β Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ
ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»
Π΄ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ ΡΠΎΡΠΊΠΎΠ². ΠΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊΠΈΡ
ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠ°ΠΊ git log
, git bisect
ΠΈ gitk
.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΊΠ°Ρ Π±Π΅Π·ΡΠΏΡΠ΅ΡΠ½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΆΠ΅ΡΡΠ²: ΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡΡ. ΠΡΠ»ΠΈ Π½Π΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΠΎΠ»ΠΎΡΠΎΠΌΡ ΠΏΡΠ°Π²ΠΈΠ»Ρ Rebase, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡ ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π΅ΡΠ½ΡΡΡΡΡ ΠΊΠ°ΡΠ°ΡΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌΠΈ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ rebase ΡΠ΅ΡΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ Π² ΠΊΠΎΠΌΠΌΠΈΡΠ΅ ΡΠΎ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ: Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π».
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ rebase ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΏΡΠΈ ΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ Π² Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ. ΠΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΡΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ rebase, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π°Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π²Π΅ΡΠΊΠΈ. ΠΠ±ΡΡΠ½ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ»ΠΈΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²Π΅ΡΠΊΡ Π²
Π³Π»Π°Π²Π½ΡΡ
.
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ i
ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git rebase
:
gitΒ checkoutΒ feature
gitΒ rebaseΒ -iΒ master
ΠΡΠΊΡΠΎΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ. Π Π½Π΅ΠΌ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ:
pickΒ 33d5b7aΒ MessageΒ forΒ commitΒ #1
pickΒ 9480b3dΒ MessageΒ forΒ commitΒ #2
pickΒ 5c67e61Β MessageΒ forΒ commitΒ #3
ΠΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠ½ΠΎ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π²Π΅ΡΠΊΠ° ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ·ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ pick
ΠΈ (ΠΈΠ»ΠΈ) ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ΄Π°ΡΡ ΠΈΡΡΠΎΡΠΈΠΈ Π²Π΅ΡΠΊΠΈ Π½ΡΠΆΠ½ΡΠΉ Π²ΠΈΠ΄. Π’Π°ΠΊ, Π΅ΡΠ»ΠΈ Π²ΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ, ΠΈΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ fixup
:
pickΒ 33d5b7aΒ MessageΒ forΒ commitΒ #1
fixupΒ 9480b3dΒ MessageΒ forΒ commitΒ #2
pickΒ 5c67e61Β MessageΒ forΒ commitΒ #3
ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π·Π°ΠΊΡΠΎΠ΅ΡΠ΅ ΡΠ°ΠΉΠ», Git Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²Π°ΡΠΈΠΌΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΡΠΌΠΈ. ΠΡΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π±ΡΡΡΡΠ΅Π΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΈΡΡΠΎΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ. ΠΠΎΠΌΠ°Π½Π΄Π° git merge
ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΠΎΠ»ΠΎΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π Π°Π·ΠΎΠ±ΡΠ°Π²ΡΠΈΡΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ rebase, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠΎΠ»ΠΎΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase
β Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ
Π²Π΅ΡΠΊΠ°Ρ
.
Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ rebase Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ
Π² ΡΠ²ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π²Π΅ΡΠΊΡ.
ΠΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π²Π΅ΡΠΊΠΈ master
Π² ΠΊΠΎΠ½Π΅Ρ Π²Π΅ΡΠΊΠΈ feature
. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ master
. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ, Git Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΈΡΡΠΎΡΠΈΡ Π²Π°ΡΠ΅ΠΉ Π²Π΅ΡΠΊΠΈ master
ΡΠ°Π·ΠΎΡΠ»Π°ΡΡ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π²Π΅ Π³Π»Π°Π²Π½ΡΠ΅
Π²Π΅ΡΠΊΠΈ β Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΡ
ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅. ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΈ Π΄Π²ΡΠΌ Π½Π°Π±ΠΎΡΠ°ΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Π²Π°ΡΠ΅ΠΉ Π²Π΅ΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅ rebase). ΠΡΠΆΠ½ΠΎ Π»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ, ΡΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ Π·Π°ΠΏΡΡΠ°Π½Π½Π°Ρ?
ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase
ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΠΊΡ Π½Π΅ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΊΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ. ΠΡΠ»ΠΈ Π² Π½Π΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π΅Π΄Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°, ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΠ΅ Π»ΡΠ±ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈ ΠΏΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ΡΠ°Π·ΡΡΡΠ°ΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git revert
). Π ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
ΡΠ»ΡΡΠ°ΡΡ
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
Git Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΠΏΡΡΠΊΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ Π³Π»Π°Π²Π½ΡΡ
Π²Π΅ΡΠΊΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π²ΡΡΡΠΏΠΈΡ Π² ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π½ΠΎΠΉ
Π²Π΅ΡΠΊΠΎΠΉ. ΠΠΎ ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠ»Π°Π³ --force
:
# ΠΡΠ΄ΡΡΠ΅ ΠΊΡΠ°ΠΉΠ½Π΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ Ρ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ! git push --force
ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ΄Π°Π»Π΅Π½Π½Π°Ρ Π³Π»Π°Π²Π½Π°Ρ
Π²Π΅ΡΠΊΠ° ΡΡΠ°Π½Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π²Π΅ΡΠΊΠ΅ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅ rebase. Π ΠΈΡΠΎΠ³Π΅ ΠΏΡΡΠ°ΡΡΡΡ Π½Π°ΡΠ½ΡΡ ΠΈ Π²Π°ΡΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π±ΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΡΠ΅Π³ΠΎ Ρ
ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±ΠΈΡΡΡΡ.
ΠΠ΄Π½Π° ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, β ΡΡΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΎΡΠΈΡΡΠΊΠ° ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ). ΠΡΠΎ ΡΠ°Π²Π½ΠΎΡΠ΅Π½Π½ΠΎ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΡ: Β«ΠΠΉ, Ρ Π²Π΅Π΄Ρ Π½Π΅ Ρ ΠΎΡΠ΅Π» ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ. ΠΡΡΡΠ΅ Π²ΠΎΠ·ΡΠΌΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΡΠΈΡΒ». ΠΠ΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π½ΠΈΠΊΡΠΎ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π½Π΅ Π½Π°ΡΠ°Π» ΡΠ°Π±ΠΎΡΡ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ.
ΠΠΎΡΠ°Π³ΠΎΠ²ΡΠΉ ΡΠ°Π·Π±ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°
ΠΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Git ΡΠΎΠ²Π½ΠΎ Π² ΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°Ρ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΡΠ°ΠΏΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°.
Π Π»ΡΠ±ΠΎΠΌ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase
ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π²Π΅ΡΠΊΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π²Π΅ΡΠΎΠΊ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΎΡΠΈΡΡΠΊΠ°
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ
ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ
ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ β ΡΡΠΎ ΠΎΡΠΈΡΡΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π²Π΅ΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π΅ΡΠ΅ Π²Π΅Π΄Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ Π² Π²Π°ΡΠ΅ΠΉ Π²Π΅ΡΠΊΠ΅ Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΠ΅Ρ ΡΠΌΡΡΠ»Π°. ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π΅ ΡΠ°ΡΠΏΠ°Π΄Π΅ΡΡΡ Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ. ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ»ΡΡΠΈΡΡΡ, ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase
Π΅ΡΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π΅ΡΠΊΠΈ: Π²ΡΡΠ΅ΡΡΠΎΡΡΠ°Ρ Π²Π΅ΡΠΊΠ° Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π»Π°Π²Π½Π°Ρ Π²Π΅ΡΠΊΠ°
) ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅. ΠΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π»ΡΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ rebase. ΠΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΄ΠΎΠ±Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄Π°Π²Π½ΠΈΡ
ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ rebase ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ 3 ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ².
git checkout feature git rebase -i HEAD~3
Π£ΠΊΠ°Π·Π°Π² HEAD~3
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΠ΅ Π²Π΅ΡΠΊΡ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΡΡ, Π° Π»ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅ΡΠ΅ 3 ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΊΠΎΠΌΠΌΠΈΡΠ°. Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
Π²Π΅ΡΠΊΡ.
ΠΡΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²Π΅ΡΠΊΡ, Π½Π°ΠΉΡΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ
Π²Π΅ΡΠΊΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° git merge-base
. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ID ΠΊΠΎΠΌΠΌΠΈΡΠ° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase
:
git merge-base feature master
Π’Π°ΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ rebase ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ git rebase
Π² ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π°ΡΡΠΎΠ½Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΠΊΠΈ. ΠΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ²ΠΈΠ΄ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ.
ΠΠΎΠ²ΡΠΎΡΠΈΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²Π΅ΡΠΎΠΊ. ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ, ΠΎΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ Π΅Π΅ ΠΈΡΡΠΎΡΠΈΡ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ.
ΠΠ°ΡΠΈΠ°Π½ΡΠ° ΠΎΡΠΈΡΡΠΊΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ rebase Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git merge
Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΡΡ
ΠΎΠ΄ΡΡΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²Π΅ΡΠΊΡ
Π ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ²Β» ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΎΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π²Π΅ΡΠΊΠΈ master
Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²Π΅ΡΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git merge
ΠΈΠ»ΠΈ git rebase
. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π²ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°: ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π²Π΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΊΠΎΠ½Π΅Ρ Π²Π΅ΡΠΊΠΈ master
.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° git rebase
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΎΡΠΈΡΡΠΊΠ° (ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ), Π½ΠΎ ΠΏΡΠΈ Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Π²Π΅ΡΠΊΠΈ master
.
ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ rebase Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΠΊΡ, ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΎΡ Π³Π»Π°Π²Π½ΠΎΠΉ
. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ ΠΏΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ ΠΎΠ΄Π½ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΠΎΠΌ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΆΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π²Π°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΠΆΠΎΠ½ΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² Π²Π΅ΡΠΊΡ feature
, ΡΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ feature
ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΠΆΠΎΠ½Π° Π²Π°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π‘ ΡΠ°ΠΊΠΈΠΌ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ
: Π»ΠΈΠ±ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ merge Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²Π΅ΡΠΊΡ
Π΄Π»Ρ Π²Π΅ΡΠΊΠΈ john/feature
, Π»ΠΈΠ±ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ rebase Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ
ΠΏΠΎΠ²Π΅ΡΡ
Π²Π΅ΡΠΊΠΈ john/feature
.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΡΠ°ΠΊΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π½Π°ΡΡΡΠ°Π΅Ρ Β«Π·ΠΎΠ»ΠΎΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΒ», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΌΠΈΡΡ Π²Π°ΡΠ΅ΠΉ Π²Π΅ΡΠΊΠΈ feature
, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅ΡΡΠΎΠ½ΡΡΡΠΌΠΈ. Π ΡΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΠΈΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠ°ΠΌ ΠΠΆΠΎΠ½Π°. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ° ΡΠ»ΠΈΡΠ½ΠΈΡ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° git pull
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»ΠΈΡΠ½ΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ --rebase
, Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π·Π°ΠΏΡΠΎΡΠ° pull
ΠΡΠ»ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠ»-ΡΠ΅ΠΊΠ²Π΅ΡΡΡ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase
ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠ°. Π‘ΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠ° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΌΠΎΠ³ΡΡ Π²ΠΈΠ΄Π΅ΡΡ Π²Π°ΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΡΠΎ Π΅ΡΡΡ Π²Π°ΡΠ° Π²Π΅ΡΠΊΠ° ΡΡΠ°Π½Π΅Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΉ. Π ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ Π΅Π΅ ΠΈΡΡΠΎΡΠΈΠΈ Git ΠΈ Π²Π°ΡΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π½Π΅ ΡΠΌΠΎΠ³ΡΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²Π΅ΡΠΊΡ.
ΠΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git merge
, Π° Π½Π΅ git rebase
.
ΠΠΎΡΡΠΎΠΌΡ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΡΡΠΊΠ° ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ rebase ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠ°.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠΎΡΠ»Π΅ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΎΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π΅ rebase Π² ΠΊΠΎΠ½Π΅Ρ Π³Π»Π°Π²Π½ΠΎΠΉ
, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git merge
Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π±Π°Π·Ρ ΠΊΠΎΠ΄Π°.
ΠΡΠΎ ΠΏΠΎΡ
ΠΎΠΆΠ΅ Π½Π° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²Π΅ΡΠΊΡ, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΉ
Π²Π΅ΡΠΊΠ΅ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git merge
. ΠΡΠΏΠΎΠ»Π½ΡΡ rebase ΠΏΠ΅ΡΠ΅Π΄ merge, Π²Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΠ΅ ΡΡΠΊΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΈ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΈΡΡΠΎΡΠΈΡ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ»Π΅ΠΈΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ Π΄ΠΎ Π·Π°ΠΊΡΡΡΠΈΡ ΠΏΡΠ»-ΡΠ΅ΠΊΠ²Π΅ΡΡΠ°.
ΠΡΠ»ΠΈ Π²Ρ Π΅ΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git rebase
, Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ rebase Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅ΡΠΊΡ. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π·Π°ΠΏΡΡΠ°Π΅ΡΠ΅ ΠΈΡΡΠΎΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ, Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ Π²Π΅ΡΠΊΡ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ½ΠΎΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
gitΒ checkoutΒ feature
gitΒ checkoutΒ -bΒ temporary-branch
gitΒ rebaseΒ -iΒ master
#Β [CleanΒ upΒ theΒ history]
gitΒ checkoutΒ master
gitΒ mergeΒ temporary-branch
Π Π΅Π·ΡΠΌΠ΅
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ rebase Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ
Π²Π΅ΡΠΎΠΊ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠΈΡΡΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΈΡΡΠΎΡΠΈΡ Π±Π΅Π· Π½Π΅Π½ΡΠΆΠ½ΡΡ
ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase
Π²ΠΌΠ΅ΡΡΠΎ git merge
ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠΊΠΈ.
ΠΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ»Π½ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ
ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git merge
. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅, Π½ΠΎ ΠΈ ΠΎΡΠ΅Π½ΠΈΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase
β ΠΎΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ Π² ΡΠ°Π±ΠΎΡΠ΅.
ΠΠ°ΡΠ΅ΠΌ ΠΌΠ½Π΅ «master» Π² git merge origin/master?
Π‘ΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ git ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ°:
git fetch
git merge origin/master
Π― Π·Π½Π°Ρ, ΡΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ git pull
, Π½ΠΎ ΠΌΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° origin/master
. Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΠ°ΡΡΡ
master
? ΠΡΠ»ΠΈ Ρ ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°Ρ git merge origin
(Π±Π΅Π· master
), ΡΡΠΎ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π― Π·Π½Π°Ρ, ΡΡΠΎ master
-ΡΡΠΎ Π²Π΅ΡΠ²Ρ, Π½ΠΎ Π΅ΡΠ»ΠΈ Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠ²ΠΈ ΠΏΡΠ»ΡΡΠ° Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π±ΡΠ΄Π΅Ρ Π»ΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ merge Π΄Π»Ρ Π²ΡΠ΅Ρ
Π½ΠΈΡ
?
git
merge
branch
git-merge
branching-and-merging
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
ΠΡΡΠΎΡΠ½ΠΈΠΊ
Marc Stober Β Β
26 ΡΠ΅Π²ΡΠ°Π»Ρ 2014 Π² 21:22
2 ΠΎΡΠ²Π΅ΡΠ°
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ origin/master Π² git ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ origin master?
Π― Ρ ΠΎΡΠ΅Π» Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊ ΠΎΡΠ²Π΅ΡΡ @KevinBallard Π·Π΄Π΅ΡΡ What’s ΡΠ°Π·Π½ΠΈΡΠ° «origin master» ΠΏΡΠΎΡΠΈΠ² «origin/master» , Π½ΠΎ ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π±ΡΠ» ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄Π»ΠΈΠ½Π½ΡΠΌ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ ΡΠ°ΠΊΠΎΠ²: ΠΡΠ»ΠΈ Ρ Π½Π°Ρ ΠΎΠΆΡΡΡ Π² Π²Π΅ΡΠΊΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ topic , ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ…
- ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ git pull master Π½Π΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Ρ origin master
ΠΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°Π³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»: ΡΠΎΠ²Π΅ΡΡΠΈΠ» ΠΌΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΎΡΡΠ°ΡΠ»ΠΈ, ΡΡΠΎΠ±Ρ ΠΌΠ΅ΡΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠ΅Ρ (ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ(ΠΊΠΎΠΌΠΌΠΈΡΠ°) dc9afg2k ) git fetch origin master && git merge origin master git checkout master git pull (ΡΡΠΎ Π²ΡΡΡΠ½ΡΠ»ΠΎ Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ) git fetch origin.
..
4
ΠΠΎΠ³Π΄Π° Π²Π΅ΡΠ²Ρ Π½Π΅ ΡΠΊΠ°Π·Π°Π½Π°, git merge origin
Π±ΡΠ΄Π΅Ρ merge Π² Π»ΡΠ±ΠΎΠΉ Π²Π΅ΡΠ²ΠΈ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Ρ ΠΏΡΠ»ΡΡΠ° origin
(ΠΎΠ±ΡΡΠ½ΠΎ master
). Π² ΡΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
git merge origin
ΠΈ git merge origin/master
Π±ΡΠ΄ΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π±Ρ Π²Ρ Ρ
ΠΎΡΠ΅Π»ΠΈ merge Π² Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠ²ΠΈ ΠΎΡ origin
, Π²Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΡ Π²Π΅ΡΠ²Ρ.
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
mipadi Β Β
26 ΡΠ΅Π²ΡΠ°Π»Ρ 2014 Π² 22:03
4
ΠΡΠ³ΡΠΌΠ΅Π½Ρ(Ρ) ΠΊ merge
ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ Π΄Π»Ρ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ(ΠΊΠΎΠΌΠΌΠΈΡΠ°)-IDs. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° Π² gitrevisions ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ. Π ΠΎΠ±ΡΠ΅ΠΌ, origin/name
ΡΠ΅ΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· «remote branchs», ΡΡΠΎ git fetch
ΠΈ git push
Π΄Π΅ΡΠΆΠ°Ρ up-to-date Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ fetch-and-push.
«Π£Π΄Π°Π»Π΅Π½Π½Π°Ρ Π²Π΅ΡΠ²Ρ», ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ «Π²Π΅ΡΠ²ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ», — ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π²Π΅ΡΠ²Π΅ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΌΠ΅ΡΠΊΠ°, ΡΠ΅ΠΉ «full name» Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ refs/remotes/
. ΠΡΠ΅ ΡΠ΅, ΡΡΠΎ Π΄Π»Ρ ΠΏΡΠ»ΡΡΠ° Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ
origin
, Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² refs/remotes/origin/
. ΠΡΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ git fetch
ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, origin
) ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ git ΠΈ ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ: «ΠΠΉ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ Π²Π°Ρ ΡΠ°ΠΌ Π²Π΅ΡΠ²ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎΠ²Ρ ΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΡ SHA-1?» ΠΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΡΠ²Π΅ΡΡ, ΠΎΠ½ Ρ
ΡΠ°Π½ΠΈΡ ΠΈΡ
Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, Π² Π²Π°ΡΠ΅ΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ git: refs/remotes/origin/master
, refs/remotes/origin/devel
ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π°ΠΊ ΡΡΠΎ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ Π²ΡΠ΅ Π²ΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ «ΡΠ°ΠΌ», ΠΊΠΎΠ³Π΄Π° Π²Π°Ρ git Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Π· ΠΈΠΌΠ΅Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ.
ΠΡ
Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ git Π½Π°Π·ΡΠ²Π°Π΅Ρ «tracking branches» (ΠΈΠ»ΠΈ «local tracking branches»). Local branches are labels whose «full name» Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ refs/heads/
. ΠΠ½ΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ «tracking», Π΅ΡΠ»ΠΈ Ρ Π½ΠΈΠΌΠΈ ΡΠ²ΡΠ·Π°Π½Π° «upstream» ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΠΎΡΡ
ΠΎΠ΄ΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π²Π΅ΡΠ²ΠΈβΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
Π²Π΅ΡΠ²Π΅ΠΉ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ «same» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ
Π²Π΅ΡΠ²Π΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ master
ΠΏΡΠΎΡΠΈΠ² origin/master
, — ΠΈΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ (ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ) Π΅Π΅ ΠΏΠΎΠ·ΠΆΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ git branch --set-upstream-to
.
ΠΡΠ΅ ΠΎΠ½ΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° git pull
: git pull origin master
Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ΅, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡ ΠΈΠ΄Π΅Π΅ «remote-tracking branches». 1 ΡΠ°ΠΊΠΎΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΡ
ΠΎΠ΄ΡΡΠ²ΠΎ, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΡΠ°Π½ΠΈΡΡ (Ρ Π·Π½Π°Ρ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄ ΡΡΠΎ ΡΠ±ΠΈΠ²Π°Π»ΠΎ ΠΌΠ΅Π½Ρ Ρ ΡΠΎΠ»ΠΊΡ).
1 Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ (ΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅) git pull
ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ URL, Π° Π½Π΅ «remote». ΠΡΠΎ ΠΏΠΎΡΠ»ΠΎ (ΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΠ΄Π΅Ρ) Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ git, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π΅Π³ΠΎ Π²Π΅ΡΠ²Π΅ΠΉ (ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Ρ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ). ΠΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π΅Π³ΠΎ Π²Π΅ΡΠ²ΠΈ, Π° Π½Π΅ Π²Π°ΡΠΈ, ΠΎΠ½ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ FETCH_HEAD
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ½ ΠΏΡΠΈΠ½Π΅ΡΠ΅Ρ master
ΠΈΠ· «ΡΠ°ΠΌ», Π½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡ Π΅Π³ΠΎ Π² FETCH_HEAD
, Π° Π½Π΅ Π² Π²Π΅ΡΠ²Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ-Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ URL Ρ Π²Π°Ρ Π½Π΅Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π½Π°Π·Π²Π°ΡΡ Π²Π΅ΡΠ²Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ: Π½Π΅Ρ origin
, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ refs/remotes/origin
. ΠΡΠ³ΡΠΌΠ΅Π½Ρ
master
Π΄Π»Ρ git-pull
ΡΠΎΠ³Π΄Π° ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ: «ΠΈΠ΄ΠΈΡΠ΅ ΠΈΡΠΊΠ°ΡΡ ΡΠ΅ΡΠ΅Π· FETCH_HEAD
, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΈΡ
Π²Π΅ΡΠ²Ρ master
.»
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
torek Β Β
26 ΡΠ΅Π²ΡΠ°Π»Ρ 2014 Π² 23:39
ΠΠΎΡ ΠΎΠΆΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ:
ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ git merge origin/master?
ΠΠΎΡΠ»Π΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Ρ ΠΏΡΠ»ΡΡΠ° Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ git fetch Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ git merge origin/master Π― Ρ ΠΎΡΠ΅Π» Π±Ρ Π·Π½Π°ΡΡ, Π΄Π΅Π»Π°Π΅Ρ Π»ΠΈ ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° git commit ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ?…
git pull origin master Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ origin/master?
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, git pull Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ git fetch , Π° Π·Π°ΡΠ΅ΠΌ git merge, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ git pull origin master Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ git fetch origin master , Π²Π΅ΡΠ½ΠΎ? ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ,…
ΠΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ «git merge origin master» ΠΈ » git merge origin/master`?
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ git merge origin master ΠΈ git merge origin/master ? Π― ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ΄Π΅Π»Π°Π» git merge origin master . ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΡΠΎ ΠΊΠ°ΠΊΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΡΠ±ΡΠΎΡΠ° ΡΡΠΎΠ³ΠΎ…
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ origin/master Π² git ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ origin master?
Π― Ρ ΠΎΡΠ΅Π» Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊ ΠΎΡΠ²Π΅ΡΡ @KevinBallard Π·Π΄Π΅ΡΡ What’s ΡΠ°Π·Π½ΠΈΡΠ° «origin master» ΠΏΡΠΎΡΠΈΠ² «origin/master» , Π½ΠΎ ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π±ΡΠ» ΡΠ»ΠΈΡΠΊΠΎΠΌ…
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ git pull master Π½Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Ρ origin master
ΠΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°Π³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»: ΡΠΎΠ²Π΅ΡΡΠΈΠ» ΠΌΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΎΡΡΠ°ΡΠ»ΠΈ, ΡΡΠΎΠ±Ρ ΠΌΠ΅ΡΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠ΅Ρ (ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ(ΠΊΠΎΠΌΠΌΠΈΡΠ°) dc9afg2k ) git fetch origin master && git merge…
ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ git merge origin/master ΠΈ git pull
Π― ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ ΠΌΠ΅ΡΡΠ½ΡΠΌ Π²Π΅ΡΠΊΠΎΠΉ BDD-local ΠΈ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π²Π΅ΡΠ²Ρ, ΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ, ΠΎΠ½ΠΈ…
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ git merge ΠΠ°ΡΡΠ΅Ρ ΠΈ origin/master?
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git merge origin/master : javanoob@DELL:~/workspace/PROJECT_One$ git merge origin/master Updating d83ef9c. .dd520ea error: The following untracked working tree files…
git merge origin master Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
git status ΠΠ½ ΠΏΠΎΠ»ΡΡΠΈΡ: On branch master Your branch is behind ‘origin/master’ by 1 commit, and can be fast-forwarded. (use git pull to update your local branch) nothing to commit, working tree clean…
Π ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ «git merge origin/master»» ΠΈ «git merge master»
Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΡΠ°Π»ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ Π²Π΅ΡΠ²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ ΠΌΠ°ΡΡΠ΅ΡΠΎΠΌ , ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΠΏΡΡΠ°ΡΡΡ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ. ΠΠ»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π΄Π²Π΅ Π²Π΅ΡΠΈ , ΠΈ…
ΠΠ°ΠΊ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ git master, origin/master ΠΈ upstream master
ΠΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Π³Π΄Π΅ ΡΠ΅ΠΉΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ master ΠΈ Π΅Π³ΠΎ 2 ΡΠ΄Π°Π»Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΠ²ΠΈ ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΡ. ΠΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρ remotes/upstream/master ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ 2 Π²Π΅ΡΠ²ΡΠΌΠΈ. ΠΠ°ΠΊ ΠΌΠ½Π΅…
Git: ΠΠΏΡΠΈΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄ merge ΠΈ pull
Π Git Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄ merge ΠΈ pull ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΎΠΏΡΠΈΡ -s <ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ> ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
- resolve
- recursive
- octopus
- ours
- subtree
Π’Π°ΠΊ ΠΆΠ΅ Π΅ΡΡΡ ΡΡΠΎΡΠ½ΡΡΡΠ°Ρ ΠΎΠΏΡΠΈΡ -X<ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ>, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
- ours
- theirs
- subtree[=path]
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΅ΡΡΡ ΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ours, ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ours, ΠΈ ΡΡΠΎ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΠΈ!
ΠΡΠ΄Π΅ΡΠΆΠΊΠ° ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
The merge mechanism (git-merge and git-pull commands) allows the
backend merge strategies to be chosen with -s option. Some strategies
can also take their own options, which can be passed by giving
-X<option> arguments to git-merge and/or git-pull.
resolve
This can only resolve two heads (i.e. the current branch and
another branch you pulled from) using a 3-way merge algorithm. It
tries to carefully detect criss-cross merge ambiguities and is
considered generally safe and fast.
recursive
This can only resolve two heads using a 3-way merge algorithm. When
there is more than one common ancestor that can be used for 3-way
merge, it creates a merged tree of the common ancestors and uses
that as the reference tree for the 3-way merge. This has been
reported to result in fewer merge conflicts without causing
mis-merges by tests done on actual merge commits taken from Linux
2.6 kernel development history. Additionally this can detect and
handle merges involving renames. This is the default merge strategy
when pulling or merging one branch.
The recursive strategy can take the following options:
ours
This option forces conflicting hunks to be auto-resolved
cleanly by favoring our version. Changes from the other tree
that do not conflict with our side are reflected to the merge
result.
This should not be confused with the ours merge strategy, which
does not even look at what the other tree contains at all. It
discards everything the other tree did, declaring our history
contains all that happened in it.
theirs
This is opposite of ours.
subtree[=path]
This option is a more advanced form of subtree strategy, where
the strategy makes a guess on how two trees must be shifted to
match with each other when merging. Instead, the specified path
is prefixed (or stripped from the beginning) to make the shape
of two trees to match.
octopus
This resolves cases with more than two heads, but refuses to do a
complex merge that needs manual resolution. It is primarily meant
to be used for bundling topic branch heads together. This is the
default merge strategy when pulling or merging more than one
branch.
ours
This resolves any number of heads, but the resulting tree of the
merge is always that of the current branch head, effectively
ignoring all changes from all other branches. It is meant to be
used to supersede old development history of side branches. Note
that this is different from the -Xours option to the recursive
merge strategy.
subtree
This is a modified recursive strategy. When merging trees A and B,
if B corresponds to a subtree of A, B is first adjusted to match
the tree structure of A, instead of reading the trees at the same
level. This adjustment is also done to the common ancestor tree.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ (Π½Π° ΡΡΡΡΠΊΠΎΠΌ) ΡΡΡ:
http://habrahabr.ru/post/195674/
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ resolve
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ resolve β ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΡΠ΅Ρ
ΡΡΠΎΡΠΎΠ½Π΅Π΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ (three-way merge). Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΡΠ΅Ρ
ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄Π²ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΎΠ±ΡΠΈΠΌ ΠΏΡΠ΅Π΄ΠΊΠΎΠΌ. Π£ΡΠ»ΠΎΠ²Π½ΠΎ ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠ°Π³ΠΎΠ²:
- ΠΏΠΎΠΈΡΠΊ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ°,
- ΠΏΠΎΠΈΡΠΊ Π±Π»ΠΎΠΊΠΎΠ², ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠΈΡ ΡΡ Π² ΠΎΠ±Π΅ΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ°,
- Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π±Π»ΠΎΠΊΠΈ, ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ,
- Π±Π»ΠΎΠΊΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠΈΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ², Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅,
- Π±Π»ΠΎΠΊΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠΈΠ΅ΡΡ Π² ΠΎΠ±Π΅ΠΈΡ Π²Π΅ΡΡΠΈΡΡ , Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ, Π² ΠΈΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄ΠΈΠ½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ: Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ° Π΄Π²ΡΡ Π²Π΅ΡΠΎΠΊ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΠΉ ΠΎΠ±ΡΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ. ΠΠ»Ρ ΡΠ»ΡΡΠ°Ρ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΡΠΎ Π½Π΅ ΡΡΡΠ°ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π»ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ git merge feature -s resolve, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌ:
master: A — B — C — D — (M)
\ /
feature: X — Y
ΠΠ΄Π΅ΡΡ C β ΠΎΠ±ΡΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ Π΄Π²ΡΡ
Π²Π΅ΡΠΎΠΊ, Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΡΠΎΠΌΡ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π·Π° ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ°. ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π² Π²Π΅ΡΠΊΠ°Ρ
master ΠΈ feature ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠΈΡΠ° (M) ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π΄Π΅ΡΠ΅Π²Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠ½ΠΊΡΠ°ΠΌΠΈ 4 ΠΈ 5 Π½Π°ΡΠ΅Π³ΠΎ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°.
Π ΠΊΠ°ΠΊΠΎΠΌ ΠΆΠ΅ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ resolve? ΠΠ½ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠΈΡΠ° (M) Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ Π΅ΡΠ΅ ΡΠ°Π· Ρ ΠΎΡΠΈΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ git merge feature -s resolve. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ° ΡΠ½ΠΎΠ²Π° Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΊΠΎΠΌΠΌΠΈΡ C, ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ ΡΠ½ΠΎΠ²Π° ΠΈ Π±ΡΠ΄ΡΡ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² Π½Π°ΡΠ΅ΠΌ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π΅.
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ recursive
ΠΠ°Π½Π½Π°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ resolve. ΠΠ½Π° ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΠ΅Ρ ΡΡΠΎΡΠΎΠ½Π½Π΅Π΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅, Π½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠ΅Π΄ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ, Π° Β«Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉΒ» ΠΏΡΠ΅Π΄ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ:
- ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠΈΡΠΊ Π²ΡΠ΅Ρ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΎΠ² Π½Π° ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ°,
- ΠΏΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΎΠ², Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ Β«Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉΒ» ΠΏΡΠ΅Π΄ΠΎΠΊ, ΠΏΡΠΈΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΠΆΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ².
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π·Π° ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ° ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ΅Ρ ΡΡΠΎΡΠΎΠ½Π΅Π΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅.
ΠΠ»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΡΡΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΏΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΡΡΠ°ΡΡΠΈ Merge recursive strategy ΠΈΠ· Π±Π»ΠΎΠ³Π° Β«The plasticscm blogΒ»:
ΠΡΠ°ΠΊ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π΅ Π²Π΅ΡΠΊΠΈ: main ΠΈ task001. Π ΡΠ°ΠΊ Π²ΡΡΠ»ΠΎ, ΡΡΠΎ Π½Π°ΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π½Π°ΡΡ ΡΠΎΠ»ΠΊ Π² ΠΈΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡΡ : ΠΎΠ½ΠΈ ΡΠ»ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ 15 ΠΈΠ· Π²Π΅ΡΠΊΠΈ main Ρ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ 12 ΠΈΠ· Π²Π΅ΡΠΊΠΈ task001, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ 16 Ρ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ 11. ΠΠΎΠ³Π΄Π° Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ ΡΠ»ΠΈΡΡ Π²Π΅ΡΠΊΠΈ, ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ ΠΏΠΎΠΈΡΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ° β Π΄Π΅Π»ΠΎ Π½Π΅Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΠ΅, Π½ΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ recursive Ρ Π΅Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Β«Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎΒ» ΠΏΡΠ΅Π΄ΠΊΠ° Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ:
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ recursive ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git-merge Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ° -X:
- ours ΠΈ theirs
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ². Ours β ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ Β«Π½Π°ΡΡΒ» Π²Π΅ΡΡΠΈΡ, Π²Π΅ΡΡΠΈΡ Β«dstΒ», theirs β ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ Β«ΠΈΡ Β» Π²Π΅ΡΡΠΈΡ. - renormalize (no-renormalize)
ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΏΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊ. - diff-algorithm=[patience|minimal|histogram|myers], Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΎΠΏΡΠΈΡ patience
ΠΡΠ±ΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°ΡΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΈΡ ΠΎΠΏΡΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ git-diff. ΠΡΠ»ΠΈ ΠΊΡΠ°ΡΠΊΠΎ, ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
default, myers β ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ, ΠΆΠ°Π΄Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
minimal β ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΡΡΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
patience β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Β«patience diffΒ». Π Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Ρ Π°Π²ΡΠΎΡΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, Π»ΠΈΠ±ΠΎ Π² ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ Π½Π° SO.
histogram β ΡΠ°ΡΡΠΈΡΡΠ΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ patience Ρ ΡΠ΅Π»ΡΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ Β«support low-occurrence common elementsΒ». Π‘ΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΡΡΠ½ΠΎ, Ρ Π½Π΅ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ° Π½Π° Π²ΠΎΠΏΡΠΎΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΡΠ»ΡΡΠ°ΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡΡΡ ΠΈ Π±ΡΠ΄Ρ ΠΎΡΠ΅Π½Ρ ΡΠ°Π΄, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΡΡΠΎΡ ΠΎΡΠ²Π΅Ρ. - ignore-space-change, ignore-all-space, ignore-space-at-eol
ΠΠΎΡΠ½ΠΈ ΡΡΠΈΡ ΠΎΠΏΡΠΈΠΉ Π»Π΅ΠΆΠ°Ρ, ΠΎΠΏΡΡΡ ΠΆΠ΅, Π² git-diff ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°ΡΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΈ.
ignore-space-change β ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ Π² ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ², ΠΈΠ΄ΡΡΠΈΡ ΠΏΠΎΠ΄ΡΡΠ΄, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ,
ignore-all-space β ΠΏΡΠΎΠ±Π΅Π»Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ,
ignore-space-at-eol β ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ Π² ΠΏΡΠΎΠ±Π΅Π»Π°Ρ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ. - rename-threshold=<n>
ΠΠ°Π½Π½Π°Ρ ΠΎΠΏΡΠΈΡ Π·Π°Π΄Π°Π΅Ρ ΠΏΠΎΡΠΎΠ³, ΠΏΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΈΡΠ°ΡΡΡΡ Π½Π΅ Π½ΠΎΠ²ΡΠΌ, Π° ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ git-diff Π½Π΅ Π΄ΠΎΡΡΠΈΡΠ°Π»ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, -Xrename-threshold=90% ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡ 90% ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. - subtree[=<path>]
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ Ρ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠ΅ΠΉ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ subtree, Π³Π΄Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠ°ΠΊ Π΄Π΅ΡΠ΅Π²ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΡΡΡΡ ΠΏΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ.
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ octopus
ΠΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π΄Π²ΡΡ
Π²Π΅ΡΠΎΠΊ. ΠΠΎΠ»ΡΡΠΈΠ²ΡΠΈΠΉΡΡ Π² ΠΈΡΠΎΠ³Π΅ ΠΊΠΎΠΌΠΌΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π±ΠΎΠ»ΡΡΠ΅ Π΄Π²ΡΡ
ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ.
ΠΠ°Π½Π½Π°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ². Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ ΠΏΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠΊΠ°Π· Π² ΡΠ»ΠΈΡΠ½ΠΈΠΈ ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ octopus.
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ ours
ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ours ΠΈ ΠΎΠΏΡΠΈΡ ours ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ recursive.
ΠΡΠΏΠΎΠ»Π½ΡΡ git merge -s ours obsolete, Π²Ρ ΠΊΠ°ΠΊ Π±Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅: Ρ Ρ ΠΎΡΡ ΡΠ»ΠΈΡΡ ΠΈΡΡΠΎΡΠΈΠΈ Π²Π΅ΡΠΎΠΊ, Π½ΠΎ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ Π² Π²Π΅ΡΠΊΠ΅ obsolete. ΠΠ½ΠΎΠ³Π΄Π° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ours ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ:
$ git checkout obsolete
$ git merge -s recursive -Xtheirs master
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ ours β Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π΄ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ.
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ subtree
ΠΠ»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· Π³Π»Π°Π²Ρ Π‘Π»ΠΈΡΠ½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² ΠΊΠ½ΠΈΠ³ΠΈ Β«Pro GitΒ».
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, rack:
$ git remote add rack_remote [email protected]:schacon/rack.git
$ git fetch rack_remote
warning: no common commits
remote: Counting objects: 3184, done.
remote: Compressing objects: 100% (1465/1465), done.
remote: Total 3184 (delta 1952), reused 2770 (delta 1675)
Receiving objects: 100% (3184/3184), 677.42 KiB | 4 KiB/s, done.
Resolving deltas: 100% (1952/1952), done.
From [email protected]:schacon/rack
* [new branch] build -> rack_remote/build
* [new branch] master -> rack_remote/master
* [new branch] rack-0.4 -> rack_remote/rack-0.4
* [new branch] rack-0.9 -> rack_remote/rack-0.9
$ git checkout -b rack_branch rack_remote/master
Branch rack_branch set up to track remote branch refs/remotes/rack_remote/master.
Switched to a new branch «rack_branch»
Π―ΡΠ½ΠΎ, ΡΡΠΎ Π²Π΅ΡΠΊΠΈ master ΠΈ rack_branch ΠΈΠΌΠ΅ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠ°Π·Π½ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ. ΠΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· rack_branch Π² master Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ squash, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π·Π°ΡΠΎΡΠ΅Π½ΠΈΡ ΠΈΡΡΠΎΡΠΈΠΈ Π½Π΅Π½ΡΠΆΠ½ΡΠΌΠΈ Π½Π°ΠΌ ΡΠ°ΠΊΡΠ°ΠΌΠΈ:
$ git checkout master
$ git merge —squash -s subtree —no-commit rack_branch
Squash commit — not updating HEAD
Automatic merge went well; stopped before committing as requested
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° rack Ρ Π½Π°Ρ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅.
ΠΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΡ Π²Π΅ΡΠΊΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ
ΠΠ±ΡΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ Π²Π΅ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ²Π΅ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ — master
ΠΈΠ»ΠΈ develop
(ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ master
). ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠ΅ΠΌ Π΄ΠΎΠ»ΡΡΠ΅ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°Π΄ ΡΠ²ΠΎΠ΅ΠΉ Π²Π΅ΡΠΊΠΎΠΉ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ (merge).
ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, ΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΡΠ½ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π΅ΡΠΊΡ master
ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ git pull
.
Π₯ΠΎΡΠΎΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΡΠΈΡ
Π½ΠΎΠ²ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ
ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΅Ρ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ master
ΠΈΠ»ΠΈ Ρ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠ΅.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎΠ³Π΄Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π²Π½Π΅ΡΠ»ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΈΠ·Π±Π΅ΠΆΠΈΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅, ΠΊΠΎΠ³Π΄Π° Π²Π΅ΡΠΊΠ° Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°.
ΠΠ»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ½ΡΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΌΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ. ΠΡΠ΄ΡΡΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ master
, Π΄Π΅Π»Π°Π΅ΠΌ:
ΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ Π½Π° Π½Π°ΡΡ Π²Π΅ΡΠΊΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Ρ Π²Π΅ΡΠΊΠΎΠΉ master
Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
ΠΠ°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΎΠ±ΡΠ°Ρ Π²Π΅ΡΠΊΠ°. ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΡΠ½Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ origin/master
, ΡΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠΆΠ΅ ΡΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΡΠΈΠΌ ΠΆΠ΅ ΠΊΠΎΠ΄ΠΎΠΌ.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠ° Π²Π΅ΡΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ° ΠΈ Π½Π°Π΄ Π½Π΅ΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡ, ΡΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase
: Π²ΠΎΠ·ΡΠΌΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ ΠΈΠ· master
ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡ ΠΈΡ
ΠΏΠΎΠ²Π΅ΡΡ
ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π² Π½Π°ΡΠ΅ΠΉ Π²Π΅ΡΠΊΠ΅.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π°ΡΠ° Π²Π΅ΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½Π° Π²Π²Π΅ΡΡ
, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π΅Ρ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ master
Π²Π΅ΡΠΊΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅Π½ΡΠ΅Ρ id ΡΡΠΈΡ
ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ². ΠΠΏΡΡΡ ΠΆΠ΅, ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ
git rebase
ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π»ΠΈΡΠ½Π°Ρ Π²Π΅ΡΠΊΠ° ΠΈ ΠΎΠ½Π° Π½Π΅ Π΄Π΅Π»ΠΈΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ.
ΠΠ°Π²Π°ΠΉ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ rebase.
ΠΡΠ΄ΡΡΠΈ Π½Π° Π²Π΅ΡΠΊΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π΅Π»Π°Π΅ΠΌ git rebase
Ρ master
.
Π§ΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ? — ΠΏΠ΅ΡΠ΅ΠΌΠ°ΡΡΠ²Π°Π΅Ρ HEAD
ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π½Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ²Π΅ΡΡ
master
:
First, rewinding head to replay your work on top of it...
Applying:
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π΄ΡΠΈΠ΅ Π² master
.
Git: ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²Π΅ΡΠΊΡ Ρ ΠΌΠ°ΡΡΠ΅ΡΠΎΠΌ
ΠΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ
ΠΌΠΎΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Git — ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π²Π΅ΡΠΊΠΈ. Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Ρ
Π°ΡΠ°ΠΊΡΠ΅Ρ Git ΠΏΠΎΠ±ΡΠΆΠ΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠ°ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΠΊΠΈ ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΈΡ
Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΏΠΎΠΎΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅, Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈ Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ.
Π ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ (ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ CVS) ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π»Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ.ΠΡΡΠ³ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π½ΠΎ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Subversion, ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΌΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡ Π² ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π³ΠΈΠ±ΠΊΠΈΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΈΠΏΠΈΡΠ΅Π½.
ΠΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ Π² Git — ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈΠ»ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ. ΠΠ½ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ Π²Π΅ΡΠ²ΡΠΌΠΈ. ΠΠ°ΠΆΠ΄Π°Ρ Π²Π΅ΡΠ²Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π½ΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°, ΡΠΎ Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π±ΡΠ΄Π΅Ρ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ Π² Π²Π΅ΡΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠΎΠ²Π° ΠΊ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π΅ΡΠ²Ρ (ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΡΡ Π²Π΅ΡΠ²Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°).
ΠΠΎΠΌΠ°Π½Π΄Π° git branch
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ΅Ρ
ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
Π²Π΅ΡΠΎΠΊ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ. ΠΠ²Π΅Π·Π΄ΠΎΡΠΊΠ° ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΡΠ΄ΠΎΠΌ Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Π΅ΡΠΊΠΎΠΉ.
$ Π²Π΅ΡΠΊΠ° git
* Π²Π»Π°Π΄Π΅Π»Π΅Ρ
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git branch new-branch
. ΠΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ, ΠΎΡΡΠ°ΠΆΠ°ΡΡΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ.
$ git branch Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ°
$ git Π²Π΅ΡΠΊΠ°
* Π²Π»Π°Π΄Π΅Π»Π΅Ρ
Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ°
ΠΠΊΡΠ°ΡΡΠ΅, ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ Git ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠΈ.Π Git Π²Π΅ΡΠΊΠ° — ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π³. ΠΡΠΎ ΠΌΠ΅ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ². ΠΡΠ»ΠΎ Π±Ρ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Git ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π½Π°Π±ΠΎΡΠΎΠ² ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Ρ.
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ, Π½ΠΎ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌΡΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅. Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ, Π½Π°ΠΌ ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git checkout new-branch
. ΠΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ Π°ΠΊΡΠΈΠ²Π½ΡΡ Π²Π΅ΡΠ²Ρ Π½Π° Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ.
$ git checkout Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ°
ΠΠ΅ΡΠ΅ΡΠ΅Π» Π½Π° Π²Π΅ΡΠΊΡ Β«Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ°Β»
$ git Π²Π΅ΡΠΊΠ°
Π²Π»Π°Π΄Π΅Π»Π΅Ρ
* Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ°
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°, Π²Π΅ΡΠ²Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ½ΠΎΠ²Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π° Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠ²ΡΡ ΠΊΠΎΠ΄Π° (ΠΎΠ±ΡΡΠ½ΠΎ Π³Π»Π°Π²Π½ΠΎΠΉ).
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ git checkout master
, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΡ Π²Π΅ΡΠ²Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π° master. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git merge new-branch
, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ.ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ git merge
ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²Π΅ΡΠΊΡ Π² ΡΠ΅ΠΊΡΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΡ Π²Π΅ΡΠ²Ρ. ΠΡΠ°ΠΊ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡ Π² Π²Π΅ΡΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌ Ρ ΠΈ .
# ... ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΠ΄ ...
$ git add βA
$ git commit βm "Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ"
$ git checkout master
ΠΠ΅ΡΠ΅ΡΠ΅Π» Π½Π° Π²Π΅ΡΠΊΡ master
$ git merge Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ°
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΠΏΠΎΠΉΠ΄Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ, ΡΠΎ Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΡΠ΄Π΅Π»Π°Π½Π°. ΠΠΎΠΌΠΌΠΈΡΡ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π² Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Git Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅.ΠΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠΌ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³, Π²ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΅Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΌΠ°ΡΡΠ΅Ρ:
$ ΠΌΠ°ΡΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ git
$ git branch Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ°
$ git checkout Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ°
# .
.. ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΠ΄ ...
$ git add βA
$ git commit βm "Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ"
$ git checkout master
$ git merge Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ°
ΠΠ± Π°Π²ΡΠΎΡΠ΅
ΠΡΠ° ΡΡΠ°ΡΡΡ Π±ΡΠ»Π° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π―ΠΊΠΎΠ±ΠΎΠΌ Π‘ΡΠΎΠΏΠ°ΠΊΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°Π½ΡΠΎΠΌ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ, ΡΡΡΠ°ΡΡΠ½ΠΎ ΠΆΠ΅Π»Π°ΡΡΠΈΠΌ ΠΏΠΎΠΌΠΎΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ²ΠΎΡ ΠΆΠΈΠ·Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π°.ΠΠΆΠ΅ΠΉΠΊΠΎΠ± ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΌ Initial Commit — ΡΠ°ΠΉΡΠ°, ΠΏΡΠΈΠ·Π²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠΌΠΎΡΡ Π»ΡΠ±ΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½Ρ ΠΈΡ Π»ΡΠ±ΠΈΠΌΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ³ΠΎ ΠΈΠ·Π±ΡΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π»ΡΠ΄ΡΠΌ ΠΈΠ·ΡΡΠ°ΡΡ Git Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠ΄Π°.
Git Π·Π°ΡΡΡΡΠ» Π½Π° ΠΌΠ°ΡΡΠ΅ΡΠ΅ | ΠΠΠͺΠΠΠΠΠΠΠΠ
ΠΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ @ Holger, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ git merge --abort
, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅ΡΠ²Π°ΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π½Π΅ Π·Π°Ρ
ΠΎΡΠΈΡΠ΅ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°ΡΡ. Π‘Π»ΠΈΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ( origin
) ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ
Ρ Π²Π°Ρ Π½Π΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΠ°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
* - * - A - B - C [ΠΌΠ°ΡΡΠ΅Ρ, Π³Π°ΡΠΌΠΈΡ / ΠΌΠ°ΡΡΠ΅Ρ]
\
D - E [ΠΏΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ / Ρ
ΠΎΠ·ΡΠΈΠ½]
(ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ master
== harmeet / master
. Π― ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ ΠΊ ΡΡΠΎΠΌΡ ΡΠ΅ΡΠ΅Π· ΠΌΠΈΠ½ΡΡΡ.)
ΠΡΡΡ ΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ: ΡΠ»ΠΈΡΠ½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅.
ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ
Π‘Π°ΠΌΡΠΌ ΠΏΡΠΎΡΡΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΡΠΎΡΡΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ Π»ΡΠ±ΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ git add.
ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ Ρ git commit
. Π’ΠΎΠ³Π΄Π° Π²Π°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
* - * - A - B --- C [Π³Π°ΡΠΌΠΈΡ / ΠΌΠ°ΡΡΠ΅Ρ]
\ \
\ F [ΠΌΠ°ΡΡΠ΅Ρ]
\ /
D - E [ΠΏΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ / Ρ
ΠΎΠ·ΡΠΈΠ½]
, Π° Π·Π°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ git push origin master
Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ origin
ΠΈ git push harmeet master
Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ harmeet
.
Rebase
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΈΡΡΠΎΡΠΈΡ, ΠΏΡΠ΅ΡΠ²ΠΈΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
git pull --rebase
(ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ, ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΈΡ
ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅ Ρ git rebase - ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ
.)
Π’ΠΎΠ³Π΄Π° Π²Π°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
* - * - A - B - C [Π³Π°ΡΠΌΠΈΡ / ΠΌΠ°ΡΡΠ΅Ρ]
\
D - E [ΠΏΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ / Ρ
ΠΎΠ·ΡΠΈΠ½]
\
B '- C' [ΠΌΠ°ΡΡΠ΅Ρ]
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ origin
Ρ ΠΏΠΎΠΌΠΎΡΡΡ:
ΠΌΠ°ΡΡΠ΅Ρ git push origin
ΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ harmeet
Ρ:
git push --force-with-lease ΠΌΠ°ΡΡΠ΅Ρ harmeet
Π’ΠΎΠ³Π΄Π° Π²Π°ΡΠ° ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΡΡΠΎΡΠΈΡ Π±ΡΠ΄Π΅Ρ:
* - * - A - D - E - B '- C' [Ρ
ΠΎΠ·ΡΠΈΠ½, ΠΏΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ / Ρ
ΠΎΠ·ΡΠΈΠ½, harmeet / Ρ
ΠΎΠ·ΡΠΈΠ½]
Force-ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ:
git push --force-with-lease origin master
, ΠΈ Π²Π°ΡΠ° ΠΈΡΡΠΎΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
* - * - A - B - C [Ρ
ΠΎΠ·ΡΠΈΠ½, Π³Π°ΡΠΌΠΈΡ / Ρ
ΠΎΠ·ΡΠΈΠ½, ΠΏΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ / Ρ
ΠΎΠ·ΡΠΈΠ½]
ΠΡΠ»ΠΈ Git ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π²Π°ΠΌ, ΡΡΠΎ harmeet / master
ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½, ΡΠΎ ΠΎΠ½ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΠΉ ΠΆΠ΅ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ, ΡΡΠΎ ΠΈ Π²Π°Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ master
, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΡΠΎ-ΡΠΎ Π½Π΅ Π½Π°ΠΆΠ°Π» Π½Π° harmeet / master
Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²Π°ΡΠ΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ.
ΠΡΠ»ΠΈ Π²Π°ΡΠ° ΡΠ΅Π»Ρ — ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡ origin
(ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ D
ΠΈ E
) Π΄ΠΎ harmeet
, ΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°ΡΡ, Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΆΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅.
ΠΠ°ΠΊΠΎΠ² Π½Π°ΠΈΠ»ΡΡΡΠΈΠΉ (ΠΈ ΡΠ°ΠΌΡΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ) ΡΠΏΠΎΡΠΎΠ± ΡΠ»ΠΈΡΡ Π²Π΅ΡΠΊΡ Git Ρ Π³Π»Π°Π²Π½ΠΎΠΉ?
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ, Π½ΠΎ Π²ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΠΎΡΠ²Π΅ΡΡ Π½Π΅ΠΏΡΠ°ΠΊΡΠΈΡΠ½Ρ.
ΠΡΠ°Π²ΠΈΡΡΡ
ΠΌΠ°ΡΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ git
git pull origin master
git merge test
git push origin master
ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ :
ΠΡΠΎ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Π½Π΅ Π·Π½Π°Π΅ΠΌ, Π΅ΡΡΡ Π»ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΠΈ Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠ²ΡΡ.
ΠΠ½ Β«ΡΠΆΠ°Π»Β» Π²ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΡΠ»ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅; ΡΠΎ Π΅ΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΡΡ Π²ΡΠ΅ ΠΆΡΡΠ½Π°Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠΈ.
ΠΡΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Π΅ΠΌ, ΡΡΠΎ Π±ΡΠ΄ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ git:
git checkout test
ΠΌΠ΅ΡΠ·Π°Π²Π΅Ρ ΡΡΠ½ΡΡΡ
ΠΌΠ°ΡΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ git
ΠΌΠ΅ΡΠ·Π°Π²Π΅Ρ ΡΡΠ½ΡΡΡ
git merge --no-ff --no-commit test
Π’Π΅ΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅
Π΄ΠΎ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ
, ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π±ΡΡΡΡΠΎΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ Π²ΠΏΠ΅ΡΠ΅Π΄ Π½Π° --no-ff
,
ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ git status
, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ
git ΡΡΠ°ΡΡΡ
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° Π½Π΅Ρ, ΠΌΡ ΡΠΈΠΊΡΠΈΡΡΠ΅ΠΌ
ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ
Π½Π° Π½ΠΈΡ
git commit -m 'ΡΠ΅ΡΡΠΎΠ²Π°Ρ Π²Π΅ΡΠΊΠ° ΡΠ»ΠΈΡΠ½ΠΈΡ'
git push
ΠΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ΅ΡΡΠ½Π° ΠΈΡΡΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π·Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, ΠΈ ΡΡΠΎ Π·Π°ΡΡΡΠ΄Π½ΠΈΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠ°ΠΊ, Π»ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ rebase
Π²ΠΌΠ΅ΡΡΠΎ merge
(ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΊΠΎΠ³Π΄Π° Π·Π° ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΡ ΡΠ°Π·ΡΠ΅ΡΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π²Π΅ΡΠΎΠΊ).
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΌ. Http://git-scm.com/book/en/v2/Git-Branching-Rebasing
.
ΠΌΠ°ΡΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ git
ΠΌΠ΅ΡΠ·Π°Π²Π΅Ρ ΡΡΠ½ΡΡΡ
git checkout test
ΠΌΠ΅ΡΠ·Π°Π²Π΅Ρ ΡΡΠ½ΡΡΡ
git rebase -i ΠΌΠ°ΡΡΠ΅Ρ
ΠΌΠ°ΡΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ git
git merge test
ΠΠ°, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΠ΅, Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½Ρ Π² Π½Π°ΡΠ°Π»ΠΎ Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ.ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΠ΅Π³ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ: Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ rebase
Π² ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅.
ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ :
ΠΌΠ°ΡΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ git
git rebase -i test
ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ https://www. atlassian.com/git/tutorials/merging-vs-rebasing/the-golden-rule-of-rebasing
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
ΠΠ°ΡΡΠ΅Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ Git Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π²Π΅ΡΠΊΡ
Π£ Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΡ Π²Π΅ΡΠΊΡ Π½Π° master:
git checkout feature1
git rebase master
Π£ΠΏΡΠ°Π²Π»ΡΠΉΡΠ΅ Π²ΡΠ΅ΠΌΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌΠΈ.ΠΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠΉΠ΄Π΅ΡΠ΅ Π΄ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ (ΡΠΆΠ΅ Π² ΠΌΠ°ΡΡΠ΅ΡΠ΅), Git ΡΠΊΠ°ΠΆΠ΅Ρ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ Π±ΡΠ»ΠΎ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ΠΈ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ. ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΏΡΠΎΠΏΡΡΠΊΠ°Ρ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΡΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ Π² ΠΌΠ°ΡΡΠ΅ΡΠ΅) Ρ
git rebase --skip
ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ git log
Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΡΠΈΠΊΡΠ°ΡΠΈΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ.
ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Git Π½Π° git rebase
(https: // git-scm.com / docs / git-rebase), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡ
Π²Π°ΡΡΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
================ ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΄Π»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ====================
ΠΡΠΎΡ ΠΎΡΠ²Π΅Ρ Π±ΡΠ» ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π½Π° Π²ΠΎΠΏΡΠΎΡ, Π·Π°Π΄Π°Π½Π½ΡΠΉ @theomega, Ρ ΡΡΠ΅ΡΠΎΠΌ Π΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΡ ΡΠ°ΡΡΡ:
Π― Ρ ΠΎΡΡ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ […] ΠΊΠΎΠΌΠΌΠΈΡΡ Π² ΠΌΠΎΠ΅ΠΉ Π²Π΅ΡΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ ΡΠ°ΡΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π½Π° master — ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ, ΡΡΠΎ Π΄Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.ΠΠ°ΠΏΡΠΎΡΠΈΠ², ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΌΠ°ΡΡΠ΅ΡΠ° Π² Π΅Π³ΠΎ Π²Π΅ΡΠΊΡ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π½Π΅ Ρ ΠΎΡΠ΅Ρ, : Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΠ΅ΡΠ΅Π· ΡΠ²ΠΎΡ Π²Π΅ΡΠΊΡ.
Π§ΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΠ°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²ΠΎΠΏΡΠΎΡΠ°, ΠΏΡΠΎΠΏΡΡΡΠΈΡΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΎΠΏΡΠΎΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ»Π΅ΠΏΡΡ ΠΏΡΠΎΡΡΠΈΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡ Π½ΠΈΠΉ ΠΎΡΠ²Π΅Ρ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΈΡ (Π΄ΡΡΠ³ΠΎΠΌΡ) Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΠΌΠ½Π΅ ΡΡΠΎΡΠ½ΠΈΡΡ:
- ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠ½ΡΠ΅ Π²Π΅ΡΠΊΠΈ (Ρ.Π΅. ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π²Π°ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΈ Π½Π΅ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ Π΄ΡΡΠ³ΠΈΠΌ). ΠΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠΈΡ
Π²Π΅ΡΠΎΠΊ «ΡΠ»ΠΎΠΌΠ°Π΅Ρ» ΠΊΠΎΠΏΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΡ
Π»ΡΠ΄Π΅ΠΉ.
- , Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Π²Π΅ΡΠΊΠΈ (Π±ΡΠ΄Ρ ΡΠΎ Π³Π»Π°Π²Π½Π°Ρ ΠΈΠ»ΠΈ Π΄ΡΡΠ³Π°Ρ Π²Π΅ΡΠΊΠ°) Π² Π²Π΅ΡΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΏΠΎΠ΄ΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈ Π²Π΅ΡΠΊΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠΊΡΡΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ, Π½ΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Ρ Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ, ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ²ΠΎΡ Π²Π΅ΡΠΊΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΡΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ), Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΡ
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ
git merge master
, ΠΊΠ°ΠΊ Π² ΠΎΡΠ²Π΅ΡΠ΅ @Sven). - , Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π²Π΅ΡΠΊΠΈ Π² ΡΠ²ΠΎΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠ½ΡΠ΅ Π²Π΅ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²Π°ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Β«ΡΡΠΆΠΈΠΌΒ» ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌ Π² Π²Π°ΡΠ΅ΠΉ Π²Π΅ΡΠΊΠ΅.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡΠ½Ρ ΡΠ΅ΠΌ ΡΠ°ΠΊΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎΡ ΠΎΡΠ²Π΅Ρ Π½Π΅ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ Π±ΡΠ» Π΄Π»Ρ @theomega, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½ΠΈΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ: Ρ Π½Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΡΠ²Π΅Ρ Π²ΡΠ±ΡΠ°Π½ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ @theomega.
ΠΠ°ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²Π΅ΡΠΊΡ Ρ ΠΌΠ°ΡΡΠ΅ΡΠΎΠΌ Π² Git
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Π³ΠΎΡΡΠ΅Π²ΠΎΠΌ Π±Π»ΠΎΠ³Π΅, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ ΠΠ°ΡΠ»ΠΎΡΠΎΠΌ Π¨ΡΠ»ΡΡΠ΅ΠΌ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Git Π΄Π»Ρ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΌΠΎΡΠ½ΡΠ΅, Π½ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ±ΠΈΠ²Π°ΡΡ Ρ ΡΠΎΠ»ΠΊΡ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ². Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ Π²Π½ΠΎΡΠΈΠΌ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ Π² Π²Π°ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Git, ΠΎΡΠ²Π΅ΡΠ°Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°: ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²Π΅ΡΠΊΡ Π² master ?
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π² Git, Π½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΠ°Π³ Π½Π°Π·Π°Π΄ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ½ΠΎΠ²Π°Ρ . ΠΡ ΠΎΠ±ΡΡΡΠ½ΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π΅ΡΠΊΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΏΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΠΎΡΠ΅Π½ΠΈΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Git ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π΄ΡΡΠ³ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² VCS.ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ»ΠΈΡΠ½ΠΈΡ Π² Git.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ³Π»ΡΠ±ΠΈΠΌΡΡ.
Git Merge Branch to Master ΠΡΠ½ΠΎΠ²Ρ: ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π½Π°ΡΠ°Π»Π°
ΠΠ΅Π· Π»ΠΈΡΠ½ΠΈΡ ΡΠ»ΠΎΠ², Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΎΡΠ½ΠΎΠ² Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ Git.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π΅ΡΠ²ΠΈ Π² Git?
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Git ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΡΡΠ»ΠΎΠΊ . ΠΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Git ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ , , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ ΡΠΎΡΠΊΠΈ Π² ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°.ΠΠΎΠΌΠΌΠΈΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΠ²ΠΎΠΈΡ
ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΈΠΊΠΎΠ² (Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ
ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ), ΠΈ ΠΈΠ· ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΡΡΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠ±ΡΠ΅ΠΊΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Git Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π² ΠΊΠΎΠΌΠΌΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΈΡΡΠΎΡΠΈΠΈ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΡΡΠ»ΠΊΠΈ — ΡΡΠΎ ΠΌΠ΅ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠ΅ΡΠ΅ ΠΊ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ, ΠΈ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΡΡΠ»ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ.
ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ ΡΡΡΠ»ΠΊΠΈ Π² Git ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π΅ΡΠΊΠ° .ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π²Π΅ΡΠΊΡ ΠΈΠ· ΡΠΎΡΠΊΠΈ Π² ΠΈΡΡΠΎΡΠΈΠΈ, Git ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΡΡΡΠ»ΠΊΡ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π° ΡΡΠΎΡ ΠΊΠΎΠΌΠΌΠΈΡ. ΠΡΠ΅ ΠΎΠ΄Π½Π° Π²Π°ΠΆΠ½Π°Ρ ΡΡΡΠ»ΠΊΠ° Π² Git Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ HEAD. HEAD ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ ΡΠΎΡΠΊΡ Π² ΠΈΡΡΠΎΡΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΊΠ°ΠΊ git log , ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Ρ ΡΠ΅Π³ΠΎ Π½Π°ΡΠ°ΡΡ Π·Π°Π΄Π°ΡΡ.
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌΠΈ. HEAD ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π³Π»Π°Π²Π½ΡΡ Π²Π΅ΡΠΊΡ , ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π²Π΅ΡΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ example , Π½ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π½Π° Π½Π΅Π΅.ΠΠΎΡ ΠΊΠ°ΠΊ ΡΠ΅ΠΉΡΠ°Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π°ΡΠ΅ ΡΠ΅ΠΏΠΎ:
Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ — ΡΡΠΎ Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Ρ
Π΅Ρ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅ΡΠΎΠΊ Π² Git ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Git Merge?
ΠΠ΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ — ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ. ΠΠ΅ΡΠ²Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠΎ, Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ Π²Π΅ΡΠ²Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΡΠΎΠΌΡ ΠΌΠ΅ΡΡΡ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π½Π°ΡΠ°Π»ΠΈ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° git merge . ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (Ρ. Π. ΠΠΎΠΌΠΌΠΈΡΡ), ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, Π² Π²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΠΊΡ Ρ ΡΠΎΡΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Π΅ΡΠΊΠΈ ΡΠ°Π·ΠΎΡΠ»ΠΈΡΡ.
ΠΠ°ΠΊ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΠΈΠ»ΠΈΠ°Π»Ρ?
ΠΠ°ΠΊ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ, Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π²Π΅ΡΠΎΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git merge , Π½ΠΎ ΡΡΠΎ Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΊΠ°ΠΊ Π²Ρ ΡΠΊΠΎΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅.
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² Π΅Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠΉ ΡΠΎΡΠΌΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ Π²Π΅ΡΠ²Ρ — Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ example — ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² Π²Π΅ΡΠΊΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΡΠ°ΠΊ, Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅, Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ Π½Π΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² Π²Π΅ΡΠ²ΠΈ master , ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ master . ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ:
git checkout master # ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ Π½Π° Π³Π»Π°Π²Π½ΡΡ Π²Π΅ΡΠΊΡ
git merge example
Π Π½Π°ΡΠ΅ΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΡ ΠΆΠ΅ ΡΠΈΠΊΡΠ°ΡΠΈΡ, ΡΡΠΎ ΠΈ master , ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ, ΠΈ Git ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ: Β«Π£ΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ.β
Π’ΠΈΠΏΡ ΡΠ»ΠΈΡΠ½ΠΈΠΉ
ΠΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ? ΠΠ°ΠΊ Git ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡ ΠΈΡ ? ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΎ, ΡΠ·Π½Π°Π² ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠ°Ρ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Git.
Fast-Forward Merge
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠΏ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² Git Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ fast-forward . Git Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠΎΡ ΡΠΈΠΏ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡΡ
ΠΎΠ΄Π½Π°Ρ Π²Π΅ΡΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ°ΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅ΡΠΊΠΈ example ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² ΡΡΡ Π²Π΅ΡΠΊΡ ΠΏΠ°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ². Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΠ°ΡΠ΅ΠΌ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ ΠΊ master ΠΈ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄:
git switch master
git merge example
Git Π·Π°Π²Π΅ΡΡΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π±ΡΠ»Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Β«Π±ΡΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠΎΡΠΊΠ° Π²ΠΏΠ΅ΡΠ΅Π΄Β». ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ Π²Π΅ΡΠΊΠ° master Π½Π°Ρ ΠΎΠ΄ΠΈΠ»Π°ΡΡ Π·Π° Π²Π΅ΡΠΊΠΎΠΉ example . Π£ Π½Π΅Π³ΠΎ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΡΡΠΈΡ ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ².ΠΡΠ°ΠΊ, ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π·Π΄Π΅ΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ master Π΄ΠΎΠ³Π½Π°Π» ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π²Π΅ΡΠΊΡ. ΠΠΎΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΠ»ΠΈΡΠ½ΠΈΡ:
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ»ΠΈΡΠ½ΠΈΠΈ Git ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ Π²Π΅ΡΠΊΠΈ master , Π·Π°ΠΌΠ΅Π½ΡΡ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Ρ Π΅ΡΠ΅ΠΌ ΠΏΡΡΠΎΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎΡ ΡΠΈΠΏ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ.
Π’ΡΠ΅Ρ ΡΡΠΎΡΠΎΠ½Π½Π΅Π΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅
ΠΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Π² Π΄Π²ΡΡ
Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ? Π§ΡΠΎΠ±Ρ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ reset , ΡΡΠΎΠ±Ρ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ, Π° Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΊΡΠ°ΡΠΈΠΉ Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΊΠΈ.
git reset --hard HEAD ~ 2
touch README.md
git add.
git commit -m "ΠΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ°ΠΉΠ» readme"
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±Π΅ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ°Π·ΠΎΡΠ»ΠΈΡΡ, ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π½ΡΡΠ΅. ΠΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Git ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π°ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ, ΠΎΠ±ΡΡΡΠ½ΡΡΡΠ΅Π΅, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, Git ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΡΠ»ΠΈΡΠ½ΠΈΡ .ΠΠΎΡ ΠΊΠ°ΠΊ ΡΠ΅ΠΉΡΠ°Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:
Π§ΡΠΎ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ? ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π²Π΅ Π²Π΅ΡΠ²ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»ΠΈ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅ΠΌΠΎΡΠΊΠ° Π²ΠΏΠ΅ΡΠ΅Π΄ Π±ΡΠ»Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, ΠΏΠΎΡΡΠΎΠΌΡ Git Π²ΡΠΏΠΎΠ»Π½ΠΈΠ» ΡΡΠ΅Ρ
ΡΡΠΎΡΠΎΠ½Π½Π΅Π΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ . ΠΠ½ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΡΡΠ΅Ρ
ΡΡΠΎΡΠΎΠ½Π½Π΅Π΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅Β», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ»ΠΈΡΠ½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°ΠΉΠ»Π° Π²ΡΠ±ΡΠ°ΡΡ, Π΅ΡΠ»ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ Π΅ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ), Git Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΊΠ°ΡΡ Π² ΡΡΠ΅Ρ
ΠΌΠ΅ΡΡΠ°Ρ
: Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅. Π΅ΡΡΡ, Π²Π΅ΡΠΊΠ°, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΡΠ»ΠΈΡΡΡΡ, ΠΈ ΡΠΎΡΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ΠΈ ΡΠ°Π·ΠΎΡΠ»ΠΈΡΡ.
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ Π²ΡΡΠ΅, ΡΡΠ΅Ρ ΡΡΠΎΡΠΎΠ½Π½Π΅Π΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ Ρ Π΄Π²ΡΠΌΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΡΠ»ΠΊΠ° ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΡΡ Π½ΠΎΠ²ΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΠ΅ΠΉ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΈΠ· ΡΠ°ΡΡ ΠΎΠ΄ΡΡΠΈΡ ΡΡ ΠΈΡΡΠΎΡΠΈΠΉ.
ΠΠ°ΠΊ ΠΌΠ½Π΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²Π΅ΡΠΊΡ Π² ΠΌΠ°ΡΡΠ΅Ρ? ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΎΠ²Π΅ΡΠΎΠ²
ΠΡ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Ρ Π²Π΅ΡΠΊΠΎΠΉ master — ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΠΊ git checkout master , Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ git merge
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΠΏΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ ΠΈΡΠΎΠ³ΠΈ, Π²ΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΎΠ²Π΅ΡΠΎΠ² ΠΏΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ.
1. Π‘ΠΆΠ°ΡΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Ρ Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠ²ΡΡ, Π½ΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΊΠ°ΠΊ Π΅ΡΡΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΎΠ΄Π½Ρ ΡΠΈΠΊΡΠ°ΡΠΈΡ Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ Π²Π°ΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ.ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΡ βsquash ΠΏΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΈ:
git checkout branch
git merge --squash
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄, Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ², Git Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠΊΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΡ ΡΡΠ°ΠΏΡ, Π½ΠΎ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΡΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡ ΡΠΈΠΊΡΠ°ΡΠΈΠ΅ΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ , ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ Π³ΠΎΡΠΎΠ²Ρ.
ΠΠΎΡΠ»Π΅ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ Π²Π΅ΡΠ²Ρ.ΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ git branch -d
error: Branch Β«
ΠΡΠ»ΠΈ Π²Ρ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ, Π·Π°ΠΏΡΡΡΠΈΡΠ΅ 'git branch -D
Git ΡΡΠΈΡΠ°Π΅Ρ, ΡΡΠΎ Ρ Π²Π°Ρ Π½Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠΊΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ Π΅ΡΡΡ. Π£ Π²Π°Ρ ΠΏΡΠΎΡΡΠΎ Π΅ΡΡΡ ΠΊΠΎΠΌΠΌΠΈΡ Ρ Ρ
Π΅ΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Ρ
ΡΡΠ° ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, ΠΈ ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Git ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π»ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π° Π²Π΅ΡΠΊΠ°.ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ Π»ΡΡΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ Π²Π΅ΡΠΊΡ, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Β«-dΒ» Π½Π° Β«-DΒ» (Ρ Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡΠΊΠ²ΠΎΠΉ D), ΠΊΠ°ΠΊ ΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠ°ΠΌ Git.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ Β«ΠΠ΅Π· ΡΠΈΠΊΡΠ°ΡΠΈΠΈΒ»
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ βsquash Π΄Π°Π΅Ρ Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΏΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ. Git Π΄Π°ΠΆΠ΅ Π΄ΡΠΌΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ Π½Π΅ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠΊΠΈ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ ΠΏΡΡΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΊΡΠ°ΡΠΈΠ΅ΠΉ, ΡΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π΅ΡΠΈ, Π½ΠΎ Π²ΡΠ΅ ΠΆΠ΅ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»Π° ΡΠΈΠΊΡΠ°ΡΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ no-commit , ΠΊΠ°ΠΊ Π² git merge βno-commit < ΠΈΠΌΡ-Π²Π΅ΡΠΊΠΈ>.
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Git ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ:
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΏΡΠΎΡΠ»ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ; ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΊΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ
, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ Π³ΠΎΡΠΎΠ²Ρ. Π Π°Π·Π½ΠΈΡΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ βno-squash , ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ βno-commit ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ.
3. ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΈ
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠΌΠ΅Π½Π΅Π½Ρ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ, Git Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
ΠΡΠΈΠ±ΠΊΠ° : Π²Π°ΡΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°Π½Ρ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ:
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π·Π°ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΠ²ΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ ΠΈΡ
ΠΏΠ΅ΡΠ΅Π΄ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ.
ΠΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅.
ΠΡΠΎ Π·Π°ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ Git Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ΅ΡΠΈ ΡΠ°Π±ΠΎΡΡ. ΠΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ? Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git reset βhard . ΠΡΡΠΎΡΠΎΠΆΠ½ΠΎ: Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΡΡΠ΅Π·Π½ΡΡ Π½Π°Π²ΡΠ΅Π³Π΄Π°.
ΠΠ΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ — ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ: Π½Π΅ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»ΡΠΉΡΠ΅ ΠΈΠΌ
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Git ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΊ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π½ΠΎΠ²ΠΈΡΠΊΠΈ ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΡΡΠΈΠΌ ΠΈΠ·-Π·Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ° Π·Π½Π°Π½ΠΈΠΉ ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Git.Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΡΠΎ, ΠΎΠ±ΡΡΡΠ½ΠΈΠ² ΠΎΡΠ½ΠΎΠ²Ρ ΡΠ°Π±ΠΎΡΡ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² Git.
ΠΡ Π½Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΡΠΎΠΌ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅. Π§Π°ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²Π·Π²ΠΎΠ»Π½ΠΎΠ²Π°Π½Ρ ΡΠ΅ΠΌ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΡΠ΅Π²ΠΎ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ Π² Git, ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ, ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Π½ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΈ .
ΠΠΎΠΌΠ½ΠΈΡΠ΅: ΡΠ°Π·Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ — ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. ΠΠ°ΠΊ ΠΈ Π»ΡΠ±ΡΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ, ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎ Ρ ΡΠΌΠΎΠΌ, ΠΈ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΡΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π°!
ΠΠ°ΡΠ»ΠΎΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°.NET Ρ ΠΎΠΏΡΡΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΠΊ Π΄Π»Ρ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ², ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π° ΡΠ΅ΠΉΡΠ°Ρ ΠΎΠ½ ΠΏΡΠΎΠ±ΡΠ΅Ρ ΡΠ²ΠΎΠΈ ΡΠΈΠ»Ρ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. ΠΠ½ ΡΡΡΠ°ΡΡΠ½ΠΎ Π»ΡΠ±ΠΈΡ ΠΏΠΈΡΠ°ΡΡ ΡΠΈΡΡΡΠΉ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΈ Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ΄Π°, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΡΠ±ΠΎΡΠΊΠ°.
ΠΠ°ΠΊ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΡ git
Git — ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ Π·Π°ΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Git, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅, Π½ΠΎ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π΄Π»Ρ Π΅Π³ΠΎ ΡΠ΅Π»ΠΈ: ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ git-merge.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ git merge?
ΠΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΈΠΌΠ΅ΡΡ Π²Π°ΠΆΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π½Π΅ ΠΌΠ΅ΡΠ°Ρ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ. Git ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ Π²Π΅ΡΠΊΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π² ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ. ΠΠ°ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΡΠ²ΠΎΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ°Π²ΡΠΎΡΠΎΠ² Π½Π° ΠΌΠ΅ΡΡΠ΅.
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Π²Π΅ΡΠΊΠΈ Π² ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΠΊΡ, Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git merge.Π‘Π»ΠΈΡΠ½ΠΈΠ΅ Π±Π΅ΡΠ΅Ρ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΡ
ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΠΊΠ΅.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΡ?
Π Π»ΡΠ±ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»Π΅Π½Π°, ΡΠ°Π±ΠΎΡΠ° Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΡΡ. ΠΠ½ΠΎΠ³Π΄Π° Π΄Π²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π° Π΄Π²ΡΠΌΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ; Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Git Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ — ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ.
ΠΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ²ΠΈΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ»ΠΈΡΠ½ΠΈΡ git:
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ [ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π°1]
ΠΠΠΠ€ΠΠΠΠ’ (ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅): ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ Π² [ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π°1]
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ; ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΡΡΡ ΠΌΠΈΠ½ΡΡΡ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ (Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²). Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ, ΠΈ ΡΡΠΎ Ρ ΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π² Π΄Π΅Π½Ρ, ΡΠ°ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ°Ρ, Π½Π°ΠΆΠΈΠΌΠ°Ρ, ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡ.
ΠΠ°ΠΊ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΡ git?
Git Π΄Π°Π΅Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠ½ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² [ΠΈΠΌΡ_ΡΠ°ΠΉΠ»Π°1] , ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ Ρ ΡΡΠΈΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ , ΠΏΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ, ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ», Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, Π²ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Git, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ°ΠΉΠ», ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΡΠΊΡ, Π²Π½Π΅ΡΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ.
ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΠΏΡΡΡΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ git init:
$ ls -l
$ git init
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΡΡΠΎΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Git Π² /home/bob/example/.git/
$
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» README ΠΈ Π·Π°ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
$ echo "ΠΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» README"> README.md
$ cat README.md
ΠΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» README
$ git add README.md
$ git commit -m "Π€Π°ΠΉΠ» README Π΄ΠΎΠ±Π°Π²Π»Π΅Π½"
1 ΡΠ°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, 1 Π²ΡΡΠ°Π²ΠΊΠ° (+)
ΡΠ΅ΠΆΠΈΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ 100644 README.md
$ git status
ΠΠ° ΠΌΠ°ΡΡΠ΅ΡΠ΅ Π²Π΅ΡΠΊΠΈ
Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠ°Π±ΠΎΡΠ΅Π΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΎΡΠΈΡΠ΅Π½ΠΎ
$
Π‘ΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ:
$ git checkout -b "branch_to_create_merge_conflict"
ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΠ»ΡΡ Π½Π° Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ 'branch_to_create_merge_conflict'
Π Π½ΠΎΠ²ΠΎΠΌ ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΈΠΈ:
$ git branch
* branch_to_create_merge_conflict
master
ΠΠ½Π΅ΡΡΠΈ ΠΏΡΠ°Π²ΠΊΡ:
ΠΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» READMEΠΡΠΎ ΠΏΡΠ°Π²ΠΊΠ° Π² Π²Π΅ΡΠΊΠ΅
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅:
$ vim README.md
$ git add README.md
$ git commit -m "ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π² README Π² Π²Π΅ΡΠΊΠ΅"
[branch_to_create_merge_conflict 9c5e88a] ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π² README Π² Π²Π΅ΡΠΊΠ΅
1 ΡΠ°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, 2 Π²ΡΡΠ°Π²ΠΊΠΈ (+)
ΠΠ΅ΡΠ½ΠΈΡΠ΅ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²Π΅ΡΠΊΡ, ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ README Π² ΡΡΡΠΎΠΊΠ΅ 3 ΡΠ΅ΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΈ Π·Π°ΡΠΈΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΡΠΎ.
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° Π³Π»Π°Π²Π½ΡΡ Π²Π΅ΡΠΊΡ:
$ git checkout master
ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΠ»ΡΡ Π½Π° Π²Π΅ΡΠΊΡ master
ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ README:
ΠΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» READMEΠΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅
ΠΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅:
$ git add README.
md
$ git commit -m "ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π² README Π² Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅"
[master 7ea2985] ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π² README Π² Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅
1 ΡΠ°ΠΉΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, 2 Π²ΡΡΠ°Π²ΠΊΠΈ (+)
ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ Π²Π΅ΡΠΊΡ Ρ ΠΌΠ°ΡΡΠ΅ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΡΠΈΠ±ΠΊΡ:
$ git branch
branch_to_create_merge_conflict
* master
$ git merge branch_to_create_merge_conflict
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ README.md
CONFLICT (ΠΊΠΎΠ½ΡΠ΅Π½Ρ): ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² README.md
ΠΡΠΈΠ±ΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΡ; ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ°ΠΉΠ» README, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠΈΡ Git, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ:
ΠΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» README<<<<<<< HEAD
ΠΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅
=======
ΠΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π²Π΅ΡΠΊΠ΅
>>>>>>> branch_to_create_merge_conflict
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Git Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ ΡΠ΅ΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Β«ΠΌΠ΅Π½ΡΡΠ΅Β», <<<<<<< ΠΈ ΡΠ΅ΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Β«Π±ΠΎΠ»ΡΡΠ΅Β», >>>>>>> , ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠ΅ΠΌΡΡ Π·Π½Π°ΠΊΠ°ΠΌΠΈ ΡΠ°Π²Π΅Π½ΡΡΠ²Π°. , ======= .ΠΡ
ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°, ΡΡΠΎΠ±Ρ Π±ΡΡΡΡΠΎ Π½Π°ΠΉΡΠΈ, Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ Π²Π½Π΅ΡΡΠΈ ΠΏΡΠ°Π²ΠΊΠΈ.
Π ΡΡΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ Π΅ΡΡΡ Π΄Π²Π° ΡΠ°Π·Π΄Π΅Π»Π°:
- Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ Β«ΠΌΠ΅Π½ΡΡΠ΅Β» ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΠΊΠ΅ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Β«HEADΒ», ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΠΊΠΈ), Π° Π·Π½Π°ΠΊΠΈ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΠΊΠΎΠ½Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π°.
- ΠΡΠΎΡΠΎΠΉ ΡΠ°Π·Π΄Π΅Π» — ΡΡΠΎ ΠΏΡΠ°Π²ΠΊΠΈ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΡ; ΠΎΠ½ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠΎ Π·Π½Π°ΠΊΠΎΠ² ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΠΊΠ°ΠΌΠΈ Β«Π±ΠΎΠ»ΡΡΠ΅Β».
ΠΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π²Ρ ΡΠ΅ΡΠ°Π΅ΡΠ΅, ΡΡΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ, Π° ΡΡΠΎ ΡΡ ΠΎΠ΄ΠΈΡ. ΠΠ½Π΅ΡΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ»:
.
ΠΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» READMEΠΡΠΎ ΠΏΡΠ°Π²ΠΊΠ° Π² Π²Π΅ΡΠΊΠ΅
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΊΠΈ Π²Π΅ΡΠΊΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ git status, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ:
$ vim README.md
$ git status
ΠΠ° ΠΌΠ°ΡΡΠ΅ΡΠ΅ ΡΠΈΠ»ΠΈΠ°Π»Π°
Π£ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΠΏΡΡΠΈ.
(ΡΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ "git commit")
(ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Β«git merge --abortΒ», ΡΡΠΎΠ±Ρ ΠΏΡΠ΅ΡΠ²Π°ΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅)ΠΠ΅ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΠΏΡΡΠΈ:
(ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Β«git add... "Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ)
ΠΎΠ±Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ: README.md
Π² ΡΠΈΠΊΡΠ°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅" git add "ΠΈ / ΠΈΠ»ΠΈ" git commit -a ")
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅ΡΠ²Π°ΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ git merge —abort , ΡΡΠΎΠ±Ρ ΠΏΡΠ΅ΡΠ²Π°ΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅.
Π‘Π»Π΅Π΄ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΈ Π·Π°ΡΠ΅ΠΌ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ:
$ git add README.md
$ git status
ΠΠ° ΠΌΠ°ΡΡΠ΅ΡΠ΅ ΡΠΈΠ»ΠΈΠ°Π»Π°
ΠΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΡΡΡΠ°Π½Π΅Π½Ρ, Π½ΠΎ Π²Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡ.
(ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Β«git commitΒ» Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ)ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ:
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ: README.md$ git commit
[master 9937ca4] Π‘Π»ΠΈΡΠ½ΠΈΠ΅ Π²Π΅ΡΠΊΠΈ 'branch_to_create_merge_conflict'
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΡΠ²ΠΎΠ΄Ρ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ
Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π΅ΡΠ»ΠΈ Ρ Π½ΠΈΡ
Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ°ΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ ΠΈΡ
Ρ ΡΡΠ½ΠΎΠΉ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ. ΠΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Ρ Π±ΡΠ» ΠΎΡΠ΅Π½Ρ ΠΎΡΠ΅Π»ΠΎΠΌΠ»Π΅Π½, ΡΡΠΎΠ»ΠΊΠ½ΡΠ²ΡΠΈΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° ΡΠ»ΠΈΡΠ½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ 10 ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, Π½Π° ΡΡΠΎ Π²Ρ ΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π― Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π» ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.ΠΠ½Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Git, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΡΠ»ΠΈΡΠ½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Git ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Git Π² Π»ΡΠ±ΠΎΠΉ ΡΡΠ΅Π΄Π΅.
ΠΠ΅Π±-ΡΠ°ΠΉΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
Git — Ρ ΠΎΡΠΎΡΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΡΡΡΡΠ»ΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ»ΠΈΡΠ½ΠΈΠΈ Git, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΡΠ»ΠΈΡΠ½ΠΈΡ, Π² ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΊΠ½ΠΈΠ³ΠΈ Git Pro .
ΠΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Git Merge ΠΈ Git Rebase
ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ Π² Π½Π°ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ git merge
ΠΈ git rebase
.ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π½Π°ΡΡΠΈΡ Π²Π°Ρ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΎΠ± ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π²Π΅ΡΠΎΠΊ Ρ Git.
Git Merge
ΠΠΎΠΌΠ°Π½Π΄Π° git merge
ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡ Π»ΡΠ±ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π² Π±Π°Π·Ρ ΠΊΠΎΠ΄Π° Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, Π² Π²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΠ²Ρ ΠΊΠ°ΠΊ Π½ΠΎΠ²ΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
git merge ΠΠΠ― ΠΠΠ’ΠΠ
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π² Π²Π΅ΡΠΊΠ΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ dev
ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π»ΡΠ±ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π² Π²Π΅ΡΠΊΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ new-features
, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π²Π΅ΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
git merge new-features
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΠΊΠ΅ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π½Π΅Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Git Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π²Π°ΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΠΊΠ΅ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ.Π§ΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅:
Π‘ΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ ΠΈ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
git checkout -b new-branch-name
git add.
git commit -m "<Π²Π°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ΅>"
Π£Π±ΡΠ°ΡΡ ΠΈΡ
git stash # Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΡ
Π² ΡΠ°ΠΉΠ½ΠΈΠΊ
git merge new-features # ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅
git stash pop # Π²Π΅ΡΠ½ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π²Π°ΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π΅ Π΄Π΅ΡΠ΅Π²ΠΎ
ΠΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ Π²ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
git reset --hard # ΡΠ΄Π°Π»ΡΠ΅Ρ Π²ΡΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
Git Rebase
ΠΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΡΠΊΠΈ Π² Git — ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΡ Π²Π΅ΡΠΊΡ Π΄ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π΄Π΅ΡΠ΅Π²Π°. Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ — ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΠ²ΠΈ Π²Π²Π΅ΡΡ
ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π²Π΅ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΡ
ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΎΠΉ Π² ββΡΠΎΡΠΊΠ΅ A:
/ o ----- o --- o - o ----- o --------- branch
--oo - A - o --- o --- o --- o ---- o - ooo --- master
ΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΡΠ΅ΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
/ o ----- o --- o - o ----- o ------ ΡΠΈΠ»ΠΈΠ°Π»
--oo - A - o --- o --- o --- o ---- o - ooo master
ΠΠ»Ρ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°ΡΡ Π² Π²Π°ΡΠ΅ΠΌ Π³Π»Π°Π²Π½Π°Ρ Π²Π΅ΡΠΊΠ°.ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²Π΅ΡΠΊΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°ΡΡ, ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ git rebase master
(Π³Π΄Π΅ master — Π²Π΅ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°ΡΡ).
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΡΡ Π²Π΅ΡΠΊΡ, ΡΠ°ΠΊ ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π΅ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ (Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ), ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π»Π°ΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ:
/ --- o-o Π²Π΅ΡΠΊΠ°
/ --- ΠΎ-ΠΎ-ΠΎ-ΠΎ --- ΠΎ - ΠΎ ------ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ
---- o - ooA ---- o --- o - ooo - o - o- master
ΠΠΎΡΠ»Π΅ git rebase master branch
ΠΈΠ»ΠΈ git rebase master
, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ Π²Π΅ΡΠΊΠ°, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅:
/ --- oooo --- o - o ------ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ
---- o - o-o-A ---- o --- o - o-o-o - o - o- ΠΌΠ°ΡΡΠ΅Ρ
\ --- oo Π²Π΅ΡΠΊΠ°
Git rebase ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ git rebase
Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ, ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ rebase:
- ΠΠ²Π΅Π΄ΠΈΡΠ΅
git rebase - i HEAD ~ 5
, Π³Π΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΠΈΡΠ»ΠΎ — Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΠΎΡ ΡΠ°ΠΌΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°Π·Π°Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. - Π vim Π½Π°ΠΆΠΌΠΈΡΠ΅
esc
, Π·Π°ΡΠ΅ΠΌi
, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΠ°. - Π‘ Π»Π΅Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ
pick
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ Π½ΠΈΠΆΠ΅. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΡΡ ΠΈ ΠΎΡΠ±ΡΠΎΡΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ, Π²Π²Π΅Π΄ΠΈΡΠ΅f
Π²ΠΌΠ΅ΡΡΠΎpick
ΡΠΈΠΊΡΠ°ΡΠΈΠΈ. - Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ Π΅Π³ΠΎ.
- ΠΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, Π²Π½Π΅ΡΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
git rebase --continue
Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΡΠΌ. - ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
git push -f
, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. - ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ»Π΅Π΄ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΠΌ Π² ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² — ΠΎΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ»Ρ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°. ΠΠ°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
git add <ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°>
, Π° Π·Π°ΡΠ΅ΠΌgit rebase --continue
.ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ, Π²Π²Π΅Π΄Ρ
git rebase --skip
, ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π·Π°ΠΏΡΡΡΠΈΠ²git rebase --abort
Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ.
pick 452b159 <ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°>
Π²ΡΠ±Π΅ΡΠΈΡΠ΅ 7fd4192 <ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°>
Π²ΡΠ±Π΅ΡΠΈΡΠ΅ c1af3e5 <ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°>
Π²ΡΠ±Π΅ΡΠΈΡΠ΅ 5f5e8d3 <ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°>
Π²ΡΠ±Π΅ΡΠΈΡΠ΅ 5186a9f <ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°>
# Rebase 0617e63..5186a9f Π½Π° 0617e63 (30 ΠΊΠΎΠΌΠ°Π½Π΄)
#
# ΠΠΎΠΌΠ°Π½Π΄Ρ:
# p, pick = ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ
# r, reword = ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ, Π½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ.
# e, edit = ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ, Π½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ.
# s, squash = ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠ΅ΠΉ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ.# f, fixup = ΠΊΠ°ΠΊ "squash", Π½ΠΎ ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° ΡΡΠΎΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ.
# x, exec = run ΠΊΠΎΠΌΠ°Π½Π΄Π° (ΠΎΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΡΡΠΎΠΊΠΈ) Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ
# d, drop = ΡΠ΄Π°Π»ΠΈΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ
#
# ΠΡΠΈ ΡΡΡΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΡΡ; ΠΎΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ²Π΅ΡΡ
Ρ Π²Π½ΠΈΠ·.
#
# ΠΡΠ»ΠΈ Π²Ρ ΡΠ΄Π°Π»ΠΈΡΠ΅ Π·Π΄Π΅ΡΡ ΡΡΡΠΎΡΠΊΡ, Π§Π’Π COMMIT ΠΠ£ΠΠΠ’ Π£Π’ΠΠ Π―ΠΠ«.
#
# ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΄Π°Π»ΠΈΡΠ΅ Π²ΡΠ΅, ΠΏΠ΅ΡΠ΅Π±Π°Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΡΠ²Π°Π½ΠΎ.
#
# ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΡΡΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ
ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ
ΠΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΡ — ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π² ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΠ²ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ.ΠΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, Git Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΎΡΡΠ°Π²ΠΈΡΡ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ:
ΠΠΠΠ€ΠΠΠΠ’ (ΠΊΠΎΠ½ΡΠ΅Π½Ρ): ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΡ Π² resumΓ©.txt ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ; ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» resumΓ©.txt
Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ ΠΊΠΎΠ΄Π°, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, Π³Π΄Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π» ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ:
<<<<<<< HEAD
ΠΠ΄ΡΠ΅Ρ: 808 South Street.
=======
ΠΠ΄ΡΠ΅Ρ: 505 North Street.
>>>>>>> updated_address
Git Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΠΎΠΊ Π² ΡΠ°ΠΉΠ»:
-
<<<<<<< HEAD
-
=======
-
>>> >>>> updated_address
ΠΡΠΌΠ°ΠΉΡΠ΅ ΠΎ =======
ΠΊΠ°ΠΊ ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°. ΠΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ
<<<<<<< HEAD
ΠΈ =======
- ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΠΊΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΡΠ»ΠΊΠ° HEAD. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π²ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ =======
ΠΈ >>>>>>> updated_address
- ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌΠΎΠΉ Π²Π΅ΡΠΊΠ΅, updated_address
.
Git Merge vs Git Rebase
Π git merge
, ΠΈ git rebase
- ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΈ ΠΎΠ΄Π½Π° Π½Π΅ Π»ΡΡΡΠ΅ Π΄ΡΡΠ³ΠΎΠΉ.ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ Π²Π°ΠΌ ΠΈ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ git merge
, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠ»ΠΈΡΠ½ΠΈΡ. ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΡΠ»ΠΈΡΠ½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ±ΠΈΠ²Π°ΡΡ Ρ ΡΠΎΠ»ΠΊΡ ΠΈΡΡΠΎΡΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ². ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ ΡΠ»ΠΈΡΠ½ΠΈΡ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ git rebase
.
git rebase
- ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΈΡΠΊΠΎΠ²Π°Π½Π½ΠΎ ΠΈ , Π΅ΡΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.