π ΠΠ·ΡΡΠ°Π΅ΠΌ Git: ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ rebase Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ
Rebase ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π² Π΄ΡΡΠ³ΡΡ, Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ° ΡΠ»ΠΈΡΠ½ΠΈΡ. ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ rebase Π² Git:
git checkout branch_name
git rebase target_branch_name
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ rebase Π² git
Git - ΡΡΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Git - ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ rebase, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π² Π΄ΡΡΠ³ΡΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ rebase Π² Git.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π°, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² Π½ΡΠΆΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Git. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git status
, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠ°ΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
1. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ
ΠΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ rebase ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π²Π΅ΡΠΊΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
git checkout -b new-branch
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΠΊΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ "new-branch". ΠΡΠ° Π²Π΅ΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ rebase.
2. ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π²Π΅ΡΠΊΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²Π·ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π²Π΅ΡΠΊΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π²Π·ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π²Π΅ΡΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, "master". ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git checkout
, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π° Π½ΡΠΆΠ½ΡΡ Π²Π΅ΡΠΊΡ.
git checkout master
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π½Π° Π²Π΅ΡΠΊΡ "master". ΠΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅ Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, Π±ΡΠ΄ΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π²Π΅ΡΠΊΠΈ "master".
3. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ rebase
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ rebase. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase
, ΡΡΠΎΠ±Ρ Π²Π·ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΡ
ΠΊ Π²Π°ΡΠ΅ΠΉ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠ΅.
git rebase new-branch
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π±Π΅ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Π²Π΅ΡΠΊΠΈ "new-branch" ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΈΡ ΠΊ Π²Π΅ΡΠΊΠ΅ "master". Git ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π²ΡΡΡΠ½ΡΡ.
4. Π Π°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ
ΠΡΠ»ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ rebase Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ, Git ΡΠΎΠΎΠ±ΡΠΈΡ Π²Π°ΠΌ ΠΎΠ± ΡΡΠΎΠΌ. ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π²ΡΡΡΠ½ΡΡ. ΠΠΎΡΠ»Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git add
ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅ rebase Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase --continue
.
5. ΠΠ°Π²Π΅ΡΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ rebase
ΠΠΎΠ³Π΄Π° Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Ρ, Π·Π°Π²Π΅ΡΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ rebase Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git rebase --abort
.
git rebase --abort
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ rebase ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²Π°ΡΡ Π²Π΅ΡΠΊΡ ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½Π° Π±ΡΠ»Π° Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ rebase.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ rebase Π² Git. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ rebase Π²Π½ΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π²Π΅ΡΠΊΡ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΡΠ»ΠΈΡΠ½ΠΈΡ. ΠΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎ ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ rebase.