Π Π°Π·Π½ΠΎΠ΅

Git ΠΊΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС: ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Git merge, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π» Π½Π°ΠΆΠ°Ρ‚

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Git merge, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π» Π½Π°ΠΆΠ°Ρ‚

Π’ ΠΌΠΎΠ΅ΠΉ Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ я сдСлал git merge some-other-branch локально, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Π» измСнСния Π² origin master. Π― Π½Π΅ Ρ…ΠΎΡ‚Π΅Π» ΡΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡ, поэтому я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это. Когда я Π΄Π΅Π»Π°Π» git status послС ΠΌΠΎΠ΅Π³ΠΎ слияния, я ΠΏΠΎΠ»ΡƒΡ‡Π°Π» это сообщСниС:

# On branch master
# Your branch is ahead of 'origin/master' by 4 commits.

ΠžΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… инструкциях , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я нашСл, я попытался Π±Π΅ΠΆΠ°Ρ‚ΡŒ

git revert HEAD -m 1

Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ это сообщСниС с git status :

# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.

Π― Π½Π΅ Ρ…ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ моя Π²Π΅Ρ‚Π²ΡŒ Π±Ρ‹Π»Π° Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ Π½Π° любоС количСство ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Как ΠΌΠ½Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ?

git

undo

git-merge

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ


Matt Huggins Β  Β 

05 ΠΌΠ°Ρ€Ρ‚Π° 2010 Π² 19:24

25 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²


  • ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ merge, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π½Π°ΠΆΠ°Ρ‚

    Π›Π°Π΄Π½ΠΎ, я устроил нСбольшой бСспорядок. По-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, Π½Π° ΠΌΠΎΠ΅ΠΉ машинС Π΄ΠΎΠΌΠ° Π²Π΅Ρ‚ΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ обновлялась. Π― взял Π½Π° сСбя ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΈ Π½Π°ΠΆΠ°Π». Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ фактичСская Π²Π΅Ρ‚Π²ΡŒ origin/Development Π±Ρ‹Π»Π° объСдинСна Π² мою Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ Development , которая ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»Π°ΡΡŒ ΠΊΠ°ΠΊ…

  • Как я ΠΌΠΎΠ³Ρƒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ merge, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) merge?

    Π― создал ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ ΠΎΡ‚ мастСра ΠΈ сдСлал Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ. Π’Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ мастСр всС Π΅Ρ‰Π΅ остаСтся Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π±Ρ‹Π» Π² послСдний Ρ€Π°Π·. Π’Π΅ΠΏΠ΅Ρ€ΡŒ я Ρ…ΠΎΡ‡Ρƒ merge свою ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ,Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ я ΠΌΠΎΠ³ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту merge. Когда я ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΈΡΠΊΠ°Ρ‚ΡŒ,…



4598

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git reflog ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, какая фиксация(ΠΊΠΎΠΌΠΌΠΈΡ‚) являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… слиянию ( git reflog Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ, Ρ‡Π΅ΠΌ git log )., Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

git reset --hard commit_sha

Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ:

git reset --hard HEAD~1

Π­Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ Π²Π°ΠΌ 1 ΠΊΠΎΠΌΠΌΠΈΡ‚.

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ ΠΈ нСзафиксированныС/нСустановлСнныС Ρ„Π°ΠΉΠ»Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠ±Ρ€ΠΎΡˆΠ΅Π½Ρ‹ Π² ΠΈΡ… Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ΅ состояниС . Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡ…, Π»ΠΈΠ±ΠΎ ΡΠΏΡ€ΡΡ‡ΡŒΡ‚Π΅ измСнСния подальшС, Π»ΠΈΠ±ΠΎ смотритС ΠΎΠΏΡ†ΠΈΡŽ --merge Π½ΠΈΠΆΠ΅.


Как @Velmont ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π½ΠΈΠΆΠ΅ Π² своСм ΠΎΡ‚Π²Π΅Ρ‚Π΅, Π² этом прямом случаС использованиС:

git reset --hard ORIG_HEAD

это ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ваши измСнСния. ORIG_HEAD Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ слияниСм, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ придСтся ΠΈΡΠΊΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.


Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ совСт-ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ --merge вмСсто --hard , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π½Π΅ сбрасываСт Ρ„Π°ΠΉΠ»Ρ‹ Π±Π΅Π· нСобходимости:

git reset --merge ORIG_HEAD

—ΠΏΠΎΠ³Π»ΠΎΡ‰Π°Ρ‚ΡŒ

БбрасываСт индСкс ΠΈ обновляСт Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Π΄Π΅Ρ€Π΅Π²Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ <commit> ΠΈ HEAD, Π½ΠΎ сохраняСт Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ индСксом ΠΈ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ (Ρ‚. Π΅. ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹).

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Marcin Gil Β  Β 

05 ΠΌΠ°Ρ€Ρ‚Π° 2010 Π² 19:34



1484

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, Ρ‡Ρ‚ΠΎ ваш мСстный мастСр Π½Π΅ Π±Ρ‹Π» Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ origin/master,, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² состоянии ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это

git reset --hard origin/master

Π’ΠΎΠ³Π΄Π° ваша локальная Π²Π΅Ρ‚Π²ΡŒ master Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ origin/master .

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


randomguy3 Β  Β 

17 ΠΌΠ°Ρ€Ρ‚Π° 2011 Π² 18:06


ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Yuri Geinish Β  Β 

02 июня 2011 в 16:31




1006

Π‘Ρ‚Ρ€Π°Π½Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ самой простой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Π½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½Π° слияния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сдСлали, — это простой ΠΈ бСзопасный способ :

git reset --merge ORIG_HEAD

Ref ORIG_HEAD Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) Π΄ΠΎ слияния.

(ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --merge Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ слиянию. Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ , ΠΊΠ°ΠΊ git reset --hard ORIG_HEAD, Π½ΠΎ бСзопаснСС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π½Π΅ касаСтся нСзафиксированных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.)

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


odinho — Velmont Β  Β 

29 января 2013 Π² 15:46



401

Π’ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях Git, Ссли Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ зафиксировали слияниС ΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ слияния , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это:

git merge --abort

ΠžΡ‚ man git merge :

[Π­Ρ‚ΠΎ] ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ слияниС ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ. git merge --abort ΠΏΡ€Π΅Ρ€Π²Π΅Ρ‚ процСсс слияния ΠΈ попытаСтся Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС Π΄ΠΎ слияния.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Travis Reeder Β  Β 

12 фСвраля 2013 Π² 02:13



141

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°). , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚. Π’Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ссылку SHA, Ссли Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, сколько шагов Π½Π°Π·Π°Π΄ Π²Π°ΠΌ слСдуСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Π’ случаС, Ссли Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ваша главная Π²Π΅Ρ‚Π²ΡŒ Π½Π΅ ΠΈΠΌΠ΅Π»Π° Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ origin/master .

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


MBO Β  Β 

05 ΠΌΠ°Ρ€Ρ‚Π° 2010 Π² 19:31



88

Π’ послСднСС врСмя я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ git reflog , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ с этим. Π’ основном это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли слияниС JUST ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, ΠΈ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π° вашСй машинС.

git reflog ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅:

fbb0c0f HEAD@{0}: commit (merge): Merge branch 'master' into my-branch
43b6032 HEAD@{1}: checkout: moving from master to my-branch
e3753a7 HEAD@{2}: rebase finished: returning to refs/heads/master
e3753a7 HEAD@{3}: pull --rebase: checkout e3753a71d92b032034dcb299d2df2edc09b5830e
b41ea52 HEAD@{4}: reset: moving to HEAD^
8400a0f HEAD@{5}: rebase: aborting

ΠŸΠ΅Ρ€Π²Π°Ρ строка ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ слияниС. 2-я строка — это врСмя Π΄ΠΎ ΠΌΠΎΠ΅Π³ΠΎ слияния. Π― просто git reset --hard 43b6032 , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ эту Π²Π΅Ρ‚Π²ΡŒ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎ слияния ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Parris Β  Β 

19 дСкабря 2014 Π² 17:51



52

Π‘ соврСмСнной Git, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅:

git merge --abort

Π‘ΠΎΠ»Π΅Π΅ старый синтаксис:

git reset --merge

Бтарая школа:

git reset --hard

Но Π½Π° самом Π΄Π΅Π»Π΅, стоит Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ git merge --abort эквивалСнтно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ git reset --merge , учитывая, Ρ‡Ρ‚ΠΎ MERGE_HEAD присутствуСт. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² справкС Git для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ merge.

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

ПослС Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ слияния, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ MERGE_HEAD , Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ΅ слияниС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git reset --merge , Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ git merge --abort , поэтому ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ старым ΠΈ Π½ΠΎΠ²Ρ‹ΠΌ синтаксисом для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ .
git pull

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Matt Huggins Β  Β 

05 ΠΌΠ°Ρ€Ρ‚Π° 2010 Π² 19:54



23

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git reflog , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Π·Π°ΠΊΠ°Π·. Иногда это Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ состояниС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ хочСтся Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ,

$ git reflog
$ git reset --hard HEAD@{0}

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


stephjang Β  Β 

17 января 2014 Π² 22:36



23

Если Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² сСрСдинС слияния, Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ
git merge --abort

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


llioor Β  Β 

13 дСкабря 2018 Π² 14:05



18

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свой HEAD, Π½Π΅ ваш, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½ΠΎ git HEAD.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€Π΅Π΄Ρ‹ΡΡ‚ΠΎΡ€ΠΈΡŽ, объясняя, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ HEAD .

HEAD -это просто ссылка Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ (послСдний) Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ.

Π’ любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ HEAD . (ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ git worktree )

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ HEAD хранится Π²Π½ΡƒΡ‚Ρ€ΠΈ .git/HEAD ΠΈ содСрТит 40 Π±Π°ΠΉΡ‚ SHA-1 Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.


Если Π²Ρ‹ Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π½Π° послСднСм ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ — это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ HEAD ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² истории, ΠΎΠ½ называСтся detached HEAD .

Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ — SHA-1 вмСсто ΠΈΠΌΠ΅Π½ΠΈ Π²Π΅Ρ‚Π²ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ HEAD Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΊΠΎΠ½Ρ‡ΠΈΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ

НСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ послС отсоСдинСния HEAD:


git checkout

git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π½Π° ΠΆΠ΅Π»Π°Π΅ΠΌΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚).

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚).

На этом этапС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°.

# Checkout a given commit. 
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
# in order to be able to update the code.
git checkout <commit-id>

# create a new branch forked to the given commit
git checkout -b <branch name>

git reflog

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ reflog .

git reflog ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ любоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΎ HEAD , ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½ΡƒΠΆΠ½ΠΎΠΉ записи Ρ€Π΅Ρ„Π»ΠΎΠ³Π° Π²Π΅Ρ€Π½Π΅Ρ‚ HEAD ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² эту Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚).

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° HEAD измСняСтся, Π² reflog появляСтся новая запись

git reflog
git checkout HEAD@{...}

Π­Ρ‚ΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ вас ΠΊ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΉ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°)


git reset --hard <commit_id>

«Move» ваш HEAD возвращаСтся ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΉ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°).

# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32

# Alternatively, if there's work to keep:
git stash
git reset --hard 0d1d7fc32
git stash pop
# This saves the modifications, then reapplies that patch after resetting.
# You could get merge conflicts if you've modified things which were
# changed since the commit you reset to.
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ( начиная с Git 2.7 )
    Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ git rebase --no-autostash .

git revert <sha-1>

«Undo» Π΄Π°Π½Π½ΠΎΠΉ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€.

Команда reset Π±ΡƒΠ΄Π΅Ρ‚ «undo» Π»ΡŽΠ±Ρ‹Π΅ измСнСния, внСсСнныС Π² Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚).

Новая фиксация(ΠΊΠΎΠΌΠΌΠΈΡ‚) с исправлСниСм ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ зафиксирована, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ исходная фиксация(ΠΊΠΎΠΌΠΌΠΈΡ‚) Ρ‚Π°ΠΊΠΆΠ΅ останСтся Π² истории.

# add new commit with the undo of the original one. 
# the <sha-1> can be any commit(s) or commit range
git revert <sha-1>

Π­Ρ‚Π° схСма ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚, какая ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚.

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‚Π°ΠΌ reset && checkout ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ HEAD .

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


CodeWizard Β  Β 

31 июля 2019 в 15:38



17

Π― смог Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, которая Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ поиска ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°).

git reset --hard remotes/origin/HEAD

ΠŸΡ€ΠΈΠ½ΡΡ‚Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π΅ сработал для мСня, Π½ΠΎ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° достигла Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я искал.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Ralph Ritoch Β  Β 

25 июля 2018 в 09:55



14

Если Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ»ΠΈ Π΅Π³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

$ git checkout -f

Π­Ρ‚ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ слияниС (ΠΈ всС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ сдСлали).

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Idealmind Β  Β 

18 января 2013 Π² 15:25



14

Добрался Π΄ΠΎ этого вопроса Ρ‚Π°ΠΊΠΆΠ΅ с Π½Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΌΠ°Ρ‚Ρ‡Ρƒ origin (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, NO ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ origin). Π˜ΡΡΠ»Π΅Π΄ΡƒΡ дальшС, я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° reset ΠΈΠΌΠ΅Π½Π½ΠΎ для этого:

git reset --hard @{u}

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: @{u} -это сокращСниС ΠΎΡ‚ origin/master . (И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ этот ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ.)

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


leanne Β  Β 

16 фСвраля 2017 Π² 21:54



14

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСсколькими способами.

1) ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ БлияниС

Если Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ»ΠΎΡ…ΠΈΠΌ слияниСм (ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ сдСланным с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ) ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ слияния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ послСднСй Π²Π΅Ρ‚Π²ΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

git merge --abort

2) сброс HEAD Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ HEAD Π΄ΠΎ послСднСй фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°) Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

git reset --hard origin/develop

3) Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ ΠΈ снова ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π· ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория

Учитывая, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ Π²Π΅Ρ‚ΠΊΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² локальном Π Π•ΠŸΠž, которая синхронизируСтся с ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

git checkout master 
##to delete one branch, you need to be on another branch, otherwise you will fall with the branch :) 

git branch -D develop
git checkout -b develop origin/develop

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Amit Kaneria Β  Β 

25 июля 2019 в 15:06



12

Π‘Π°ΠΌΡ‹ΠΉ простой ΠΎΡ‚Π²Π΅Ρ‚ — это Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π» одинью- Π’Π΅Π»ΡŒΠΌΠΎΠ½

Π‘Π½Π°Ρ‡Π°Π»Π° сдСлайтС git reset --merge ORIG_HEAD

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ настройки послС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, сдСлайтС это
(ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ пост, ΡƒΠ²ΠΈΠ΄Π΅Π½Π½Ρ‹ΠΉ для Π»ΡŽΠ±Ρ‹Ρ… вопросов слияния git reset)

git push origin HEAD --force

Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ сбросу Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ измСнСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ послС вытягивания. , ΠΈ ΠΎΠ½ Π²Π΅Ρ€Π½ΡƒΠ» всС слияниС. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ слияния Π½Π΅ Π±Ρ‹Π»ΠΈ быстро пСрСадрСсованы, слияниС Π±Ρ‹Π»ΠΎ Π±Π»ΠΎΠΊΠΎΠΌ, Π° ΠΎΠ΄ΠΈΠ½ шаг Π½Π°Π·Π°Π΄-«branch not merged».

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Damien Byrne Β  Β 

09 июня 2011 в 00:54



10

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° слияния ΠΈΠ»ΠΈ пСрСзапуска с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ фиксации(ΠΊΠΎΠΌΠΌΠΈΡ‚Π°):

  1. git reset --hard commitHash (Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. 44a587491e32eafa1638aca7738)
  2. git push origin HEAD --force (ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ локальной Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π² origin/master)

Π£Π΄Π°Ρ‡ΠΈ ΠΈ Π²ΠΏΠ΅Ρ€Π΅Π΄!

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Matheus Abreu Β  Β 

12 дСкабря 2014 Π² 23:16



8

Если вашС слияниС ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹, Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π΅ Π·Π°Π½ΠΎΠ²ΠΎ.

НапримСр, я случайно объСдинил Π²Π΅Ρ‚Π²ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² master ΠΈ Ρ…ΠΎΡ‚Π΅Π» ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

git checkout develop
git branch -D master
git branch -t master origin/master

Вуаля! ΠœΠ°ΡΡ‚Π΅Ρ€ находится Π½Π° Ρ‚ΠΎΠΉ ΠΆΠ΅ стадии, Ρ‡Ρ‚ΠΎ ΠΈ источник, ΠΈ Π’Π°ΡˆΠ΅ Π½Π΅Π²Π΅Ρ€Π½ΠΎ слитоС состояниС стираСтся.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


Stephan Β  Β 

26 июня 2012 в 11:15



4

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ просто ΠΏΠΎΠΉΡ‚ΠΈ с ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ MBO.

Если Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ графичСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄:

  1. Kick off gitk (ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈΠ»ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ это)
  2. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния Ρ‚Π°ΠΌ — ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΠ·Π΅Π» свСрху с двумя родитСлями
  3. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ ссылкС Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ/Π»Π΅Π²Ρ‹ΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ (Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² вашСй Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ слияниСм, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ красный для мСня)
  4. На Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ «Reset branch to here», Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ hard reset there

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


inger Β  Β 

21 ΠΌΠ°Ρ€Ρ‚Π° 2013 Π² 14:38



4

БтратСгия: ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, Π³Π΄Π΅ всС Π±Ρ‹Π»ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

ОбоснованиС: Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ слияния Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½. БущСствуСт слишком ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, зависящих ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ‚ΠΎ, ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ»ΠΈ Π»ΠΈ Π²Ρ‹ слияниС ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΠ»ΠΈ Π΅Π³ΠΎ, ΠΈΠ»ΠΈ Ссли послС слияния Π±Ρ‹Π»ΠΈ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π°ΠΌ всС Π΅Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ git, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΡΠ»ΡƒΡ‡Π°ΡŽ. Если Π²Ρ‹ слСпо слСдуСтС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ инструкциям, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ «empty merge», Π³Π΄Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ объСдинСно, ΠΈ дальнСйшиС ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ слияния заставят Git ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ «Already up to date».

РСшСниС:

Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ dev Π² feature-1 .

  1. НайдитС Ρ€Π΅Π²ΠΈΠ·ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ слияниСм:

    git log --oneline feature-1
    a1b2c3d4 Merge branch 'dev' into 'feature-1' <-- the merge you want to undo
    e5f6g7h8 Fix NPE in the Zero Point Module <-- the one before the merge, you probably want this one
    
  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ это (Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅):

    git checkout e5f6g7h8
    
  3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΅Π΅:

    git checkout -b feature-1
    

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ слияниС:

  1. БлияниС: git merge dev

  2. Π˜ΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ слияний.

  3. Ѐиксация(ΠΊΠΎΠΌΠΌΠΈΡ‚): git commit

  4. Когда Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€Π΅Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ: git branch --delete feature-1

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


pyb Β  Β 

11 июня 2015 в 15:42



2

ΠŸΡ€ΠΎΡΡ‚ΠΎ создайтС Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ для Π½Π΅Π΅.

Π•Π³ΠΎ экономия ΠΈ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ сброс, описанный Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… Π²Ρ‹ΡˆΠ΅

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


gdbdable Β  Β 

15 августа 2019 Π² 13:41



1

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git rebase -i [hash] [branch_name] , Π³Π΄Π΅ [hash] -это идСнтификация hash для Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π°Π·Π°Π΄ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚Π°Ρ‚ΡŒ плюс ΠΎΠ΄ΠΈΠ½ (ΠΈΠ»ΠΈ сколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π½Π°Π·Π°Π΄ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΉΡ‚ΠΈ), Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ строки для ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ». Π’Ρ‹Ρ…ΠΎΠ΄. ΠœΠΎΠ»ΠΈΡ‚ΡŒΡΡ. И Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚Π°Ρ‚ΡŒ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ , Π²Π°ΠΌ придСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ git reset --hard, Π½ΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это для извлСчСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈΠ· стСка, Ссли Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π² своСй истории, Π½ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² состоянии, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹, вСроятно, Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


tychoish Β  Β 

08 ΠΌΠ°Ρ€Ρ‚Π° 2010 Π² 02:55



1

  1. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ всС сдСлали ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

  2. Π—Π°Ρ‚Π΅ΠΌ ΡΠ±Ρ€ΠΎΡΡŒΡ‚Π΅ свой Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ состояниС:

    $ git reset f836e4c1fa51524658b9f026eb5efa24afaf3a36
    

    ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ --hard ( это ΡƒΠ΄Π°Π»ΠΈΡ‚ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅, Π½Π΅ зафиксированныС измСнСния! ):

    $ git reset f836e4c1fa51524658b9f026eb5efa24afaf3a36 --hard
    

    Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ hash, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Ρ‚Π°ΠΌ Π΄ΠΎ вашСго ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ объСдинСнного ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

  3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ вСрсии, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия::

    $ git log 4c3e23f529b581c3cbe95350e84e66e3cb05704f
    
    commit 4c3e23f529b581c3cbe95350e84e66e3cb05704f
    
    ...
    
    commit 16b373a96b0a353f7454b141f7aa6f548c979d0a
    
    ...
    
  4. ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ ваши ΠΏΡ€Π°Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΏΡ€Π°Π²ΠΎΠΉ вСрсии вашСго рСпозитория с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

    • Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ cherry-pick (измСнСния, внСсСнныС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ)

          git cherry-pick ec59ab844cf504e462f011c8cc7e5667ebb2e9c7
      
    • Или ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠΎΠ΄Π±ΠΎΡ€Π° вишнСвого ряда ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΏΠΎ:

      • Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ измСнСния ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… объСдинСниСм:

        git diff 5216b24822ea1c48069f648449997879bb49c070..4c3e23f529b581c3cbe95350e84e66e3cb05704f
        
      • Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ измСнСния ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… объСдинСниСм:

        git cherry-pick 5216b24822ea1c48069f648449997879bb49c070. .4c3e23f529b581c3cbe95350e84e66e3cb05704f
        

        Π³Π΄Π΅ это Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ»ΠΈ (ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ Π‘ΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ΅ слияниС).

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


kenorb Β  Β 

29 января 2013 Π² 15:09


ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ вопросы:

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ a git merge (Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π» Π½Π°ΠΆΠ°Ρ‚)

Π― просто внСс Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π² ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΌΠΎΠΈΡ… Π²Π΅Ρ‚Π²Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (feedback_tab), Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» master ΠΈ объСдинил ΠΈΡ… Ρ‚Π°ΠΌ. На самом Π΄Π΅Π»Π΅ я Ρ…ΠΎΡ‚Π΅Π» merge ΠΈΡ… Π² свою development Π²Π΅Ρ‚ΠΊΡƒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ master…

Git: ΠΊΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ-merge Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚)?

Π‘ SVN Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ-merge Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚), Π½ΠΎ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с Git?

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ » git reset —merge»

Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ это сдСлал: git reset —merge ΠΈ я потСрял свои послСдниС измСнСния Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это послСднСС дСйствиС?

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ merge, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π½Π°ΠΆΠ°Ρ‚

Π›Π°Π΄Π½ΠΎ, я устроил нСбольшой бСспорядок. По-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, Π½Π° ΠΌΠΎΠ΅ΠΉ машинС Π΄ΠΎΠΌΠ° Π²Π΅Ρ‚ΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ обновлялась. Π― взял Π½Π° сСбя ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ ΠΈ Π½Π°ΠΆΠ°Π». Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ фактичСская Π²Π΅Ρ‚Π²ΡŒ origin/Development Π±Ρ‹Π»Π°…

Как я ΠΌΠΎΠ³Ρƒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ merge, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) merge?

Π― создал ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ ΠΎΡ‚ мастСра ΠΈ сдСлал Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ. Π’Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ мастСр всС Π΅Ρ‰Π΅ остаСтся Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π±Ρ‹Π» Π² послСдний Ρ€Π°Π·. Π’Π΅ΠΏΠ΅Ρ€ΡŒ я Ρ…ΠΎΡ‡Ρƒ merge свою…

Как ΠΌΠ½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Git, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π΄Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ merge?

Π― Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΡˆΠ΅Π» ΠΈΠ· Subversion Π² Git. Π― Π±Ρ‹Π» связан с Π Π•ΠŸΠž Subversion Ρ‡Π΅Ρ€Π΅Π· git-svn Π΄ΠΎ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ. ПослС ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ я Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ изрядноС количСство истории Π±Ρ‹Π»ΠΎ…

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±Ρ‹ΡΡ‚Ρ€ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΡƒ merge Π² git Π±Π΅Π· использования reset

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Ρ‚Π°ΠΊΠΎΠΉ сцСнарий: master: M release-candidate: \ A—B’—C’ feature-A: \-A-/ / / feature-B: \-B—/ / feature-C: \—C—/ Π Π΅Π»ΠΈΠ·-ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π±Ρ‹Π» создан с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄: git co. ..

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ git merge, Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ

Π’ нашСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π΅ΡΡ‚ΡŒ главная Π²Π΅Ρ‚Π²ΡŒ, Π½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΊΠΎΠ»Π»Π΅Π³ Π±Ρ‹Π»Π° главная Π²Π΅Ρ‚Π²ΡŒ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ историСй. Π’Ρ‡Π΅Ρ€Π° ΠΎΠ½ слил своСго мастСра с Π³Π»Π°Π²Π½Ρ‹ΠΌ мастСром ΠΈ Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ». Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ сСгодня…

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ a merge (Π΄ΠΎ merge ΠΏΠΎΠ·ΠΆΠ΅)

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Git ΠΎΡ‡Π΅Π½ΡŒ просто. Но Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли я Ρ…ΠΎΡ‡Ρƒ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ(ΠΊΠΎΠΌΠΌΠΈΡ‚) ΠΈΠ· merge, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π΅ ΠΈ merge ΠΏΠΎΠ·ΠΆΠ΅?…

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ git merge, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» Π½Π°ΠΆΠ°Ρ‚, ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ merge

Π£ мСня Π±Ρ‹Π»ΠΎ нСсколько Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΈ Π² master Π±Ρ‹Π»ΠΈ внСсСны измСнСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я сдСлал: git pull // it automatically merged and had a conflict with one file only. subl <file> // Made…

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ?

Π― нашСл Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ объяснСниС для Β« Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС» ΠΏΠΎ этой ссылкС, ΠΈ я скопировал ΠΈ вставил объяснСниС Π½ΠΈΠΆΠ΅, ΠΈ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π½Π° Ρ‚ΠΎΡ‚ случай, Ссли ссылка Π½ΠΈΠΆΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ΅ слияниС,
Алан ([email protected]) сказал:

Π£ мСня Π΅ΡΡ‚ΡŒ мастСр Π²Π΅Ρ‚ΠΊΠ°. Π£ нас Π΅ΡΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΠ°, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ. Они ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ это Π³ΠΎΡ‚ΠΎΠ²ΠΎ. ΠœΡ‹ объСдиняСм это Π² Π³Π»Π°Π²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Π­Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π»ΠΎΠΌΠ°Π΅Ρ‚, поэтому ΠΌΡ‹ отмСняСм слияниС. Они вносят измСнСния Π² ΠΊΠΎΠ΄. ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π΅Π³ΠΎ Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠΉ стСпСни, Ρ‡Ρ‚ΠΎ говорят, Ρ‡Ρ‚ΠΎ всС Π² порядкС, ΠΈ ΠΌΡ‹ снова сливаСмся. ΠŸΡ€ΠΈ рассмотрСнии ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ измСнСния ΠΊΠΎΠ΄Π°, сдСланныС Π΄ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, находятся Π½Π΅ Π² основной Π²Π΅Ρ‚Π²ΠΈ, Π° измСнСния ΠΊΠΎΠ΄Π° послС находятся Π² основной Π²Π΅Ρ‚Π²ΠΈ. ΠΈ попросил ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π² восстановлСнии послС этой ситуации.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ сразу послС Β«Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊ слиянию» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

---o---o---o---M---x---x---W
              /
      ---A---B

Π³Π΄Π΅ A ΠΈ B находятся Π½Π° сторонС развития, которая Π±Ρ‹Π»Π° Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ, M — это слияниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ вносит эти ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ измСнСния Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ линию, x — это измСнСния, Π½Π΅ связанныС с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ боковая Π²Π΅Ρ‚Π²ΡŒ сдСлала ΠΈ ΡƒΠΆΠ΅ сдСлала Π½Π° основной Π»ΠΈΠ½ΠΈΠΈ, Π° W — это » Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ слияния М «(Ρ€Π°Π·Π²Π΅ W Π½Π΅ смотрит Π½Π° М с Π½ΠΎΠ³ Π½Π° Π³ΠΎΠ»ΠΎΠ²Ρƒ?). .. M».

Π’Π°ΠΊΠΎΠΉ Β«Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Β» слияния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сдСлан с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

$ git revert -m 1 M
ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ исправят свои ошибки, история ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

---o---o---o---M---x---x---W---x
              /
      ---A---B-------------------C---D

Π³Π΄Π΅ C ΠΈ D Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сломано Π² A ΠΈ B, ΠΈ Ρƒ вас ΡƒΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния Π² магистрали послС W.

Если Π²Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π±ΠΎΠΊΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚Π²ΡŒ (с D Π½Π° ΠΊΠΎΠ½Ρ‡ΠΈΠΊΠ΅), Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, сдСланных Π² A ΠΈΠ»ΠΈ B, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Ρ‹ W. Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Алан Π²ΠΈΠ΄Π΅Π».

Линус ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ:

ΠžΡ‚ΠΌΠ΅Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° просто эффСктивно отмСняСт Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сдСлал этот ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΈ довольно проста. Но Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° слияния Ρ‚Π°ΠΊΠΆΠ΅ отмСняСт Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ», Π½ΠΎ это Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ влияСт Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ слияниС ΠΈΠΌΠ΅Π»ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, слияниС всС Π΅Ρ‰Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ ΠΎΠ½ΠΎ всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ объСдинСниС Π΄Π²ΡƒΡ… Π²Π΅Ρ‚Π²Π΅ΠΉ, ΠΈ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ слияния Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ слияниС являСтся послСдним ΠΎΠ±Ρ‰ΠΈΠΌ состояниСм — ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ» Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ слияниС, Π½Π΅ повлияСт Π½Π° это Π²ΠΎΠΎΠ±Ρ‰Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Β«Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Β» отмСняСт измСнСния Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅Β«ΠΎΡ‚ΠΌΠ΅Π½Π°Β» Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ отмСняСт влияния ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ рСпозитория. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΎ Β«Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅Β» ΠΊΠ°ΠΊ ΠΎΠ± Β«ΠΎΡ‚ΠΌΠ΅Π½Π΅Β», Ρ‚ΠΎ Π²Ρ‹ всСгда Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ эту Ρ‡Π°ΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠ². Π”Π°, это отмСняСт Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ Π½Π΅Ρ‚, это Π½Π΅ отмСняСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ. Π’ Ρ‚Π°ΠΊΠΎΠΉ ситуации Π²Ρ‹ Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ сначала Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚, Ρ‡Ρ‚ΠΎ Π±Ρ‹ история выглядСла ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

---o---o---o---M---x---x---W---x---Y
              /
      ---A---B-------------------C---D

Π³Π΄Π΅ Y — это Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ W. Π’Π°ΠΊΠΎΠΉ Β«Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΡƒΒ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

$ git revert W
Π­Ρ‚Π° история (игнорируя Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ измСнСниями W ΠΈ W..Y) Π±ΡƒΠ΄Π΅Ρ‚ эквивалСнтна ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΡŽ W ΠΈΠ»ΠΈ Y Π² истории:

---o---o---o---M---x---x-------x----
              /
      ---A---B-------------------C---D

ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ объСдинСниС Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ, связанному с Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ ΠΈ восстановлСниСм Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°.

---o---o---o---M---x---x-------x-------*
              /                       /
      ---A---B-------------------C---D

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, измСнСния, сдСланныС Π² C ΠΈ D, всС Π΅Ρ‰Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сдСлано Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· x, Π½ΠΎ это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ слияния.

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ€ΠΆ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Ρ€ΡƒΠΊΠ°ΠΌΠΈ? β€” Π₯Π°Π±Ρ€ Q&A

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚.

ΠŸΡ‹Ρ‚Π°ΡŽΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с git. ΠŸΡ€Π΅Π΄Ρ‹ΡΡ‚ΠΎΡ€ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ такая.

ΠŸΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΠΎΠ»Π½Ρ‹ΠΉ бэкап сайта Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Ρ…ΠΈΠ²Π°. Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽ Π΄Π°Π½Π½Ρ‹ΠΉ бэкап Π½Π° своСй ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ΅, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ сайт всС ΠΎΠΊ.

ПослС этого ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π΄Π°Π΅Ρ‚ доступ ΠΊ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΌΡƒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±Π΅. Π’ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π΅Ρ‚ΠΎΠΊ Π²Π΅Ρ‚ΠΊΠ΅ Π»Π΅ΠΆΠΈΡ‚ Π½Π΅ вСсь ΠΊΠΎΠ΄ сайта, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ, которая ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ измСнСниям (выбросили ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ядро, Π³Ρ€ΡƒΠ±ΠΎ говоря).

Π― дСлаю Ρ‚Π°ΠΊ Π² ΠΏΠ°ΠΏΠΊΠ΅ с Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚Ρ‹ΠΌ сайтом Π½Π° ΠΌΠΎΠ΅ΠΉ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ΅:
$ init git
$ git remote add clientrepo https://username:[email protected]/Company/repo.git
$ git fetch
$ git checkout -t clientrepo/vetka
$ git status
$ git add .
$ git commit -m «start»

ΠŸΠΎΡ‚ΠΎΠΌ Π²Π½ΠΎΡˆΡƒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ измСнСния Π² ΠΊΠΎΠ΄.

$ git commit -m «finish»

И ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡƒΡˆΠΈΡ‚ΡŒ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹.

$ git pull clientrepo vetka
$ git merge clientrepo/vetka

Π’ΠΈΠΆΡƒ Π² консоли ΠΎΡˆΠΈΠ±ΠΊΡƒ:
fatal: ‘merge’ is not possible because you have unmerged files.

Π’Π²ΠΎΠΆΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:
$ git status

Π’ΠΈΠΆΡƒ Π² консоли ΡΠ΅ΠΊΡ†ΠΈΡŽ с записями new file: ΠΈ ΡΠ΅ΠΊΡ†ΠΈΡŽ с both added:

Π’ php-Ρ„Π°ΠΉΠ»Π°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ· сСкции both added: появились «ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Ρ‹» Π²ΠΈΠ΄Π°, сайт, СстСствСнно сыпСт ошибками ΠΈΠ·-Π·Π° этих «ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΎΠ²»:

<<<<<<< HEAD
code_one
=======
code_two
>>>>>>> ae235f459f0cc2d9108f051c5832b7d961f23127

Вопрос 1.
Если я Π·Π°Ρ…ΠΎΡ‡Ρƒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания ΠΊΠΎΠΌΠΌΠΈΡ‚Π° «finish», Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ я Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ?

Вопрос 2.
Как Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹? КакиС дСйствия ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ я Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ? Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Ρ‚ΠΈΠΏΠ°: Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π²ΠΎ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· сСкции added both, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π·Π°Ρ‚ΠΈΡ€Π°Π΅ΠΌ code_1, оставляСм code_2, ΠΏΠΎΡ‚ΠΎΠΌ Π΄Π΅Π»Π°Π΅ΠΌ .
git pull

git — ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС git, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ, ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ слияниС

Π£ мСня Π±Ρ‹Π»ΠΎ нСсколько Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΈ Π² мастСр Π±Ρ‹Π»ΠΈ внСсСны измСнСния. Π˜Ρ‚Π°ΠΊ, я сдСлал:

 git pull // it automatically merged and had a conflict with one file only.
 subl <file> // Made the wrong fix and saved it
 git commit // It opened nano and I Typed "fixed merge" saved it 
 git push master origin

Как ΠΌΠ½Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ запросу ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ слияниС ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ? ОсобСнно вСрнСмся прямо ΠΏΠ΅Ρ€Π΅Π΄ слияниСм.

2

IskandarG

2 Ноя 2016 в 11:39

2 ΠΎΡ‚Π²Π΅Ρ‚Π°

Π›ΡƒΡ‡ΡˆΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это слияниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

git revert -m 1 (Commit id of the merge commit)

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ руководство

И Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ git reflog <branch>, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π³Π΄Π΅ Π±Ρ‹Π»Π° ваша Π²Π΅Ρ‚ΠΊΠ° Π΄ΠΎ слияния, ΠΈ git reset --hard <commit_id>, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ€ΡƒΡŽ Ρ€Π΅Π²ΠΈΠ·ΠΈΡŽ (Π²Ρ‹ Π²Π΅Ρ€Π½Π΅Ρ‚Π΅ΡΡŒ ΠΊ этой фиксации). Π’ΠΎΠ³Π΄Π° просто моТСшь push Π΅Π³ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ.

Reflog ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ старыС состояния Π²Π΅Ρ‚ΠΊΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ нравится.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅

6

Karol Gasienica
15 Ноя 2016 в 07:22

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ послСднСй фиксации:

git revert HEAD

Он Π²Π΅Ρ€Π½Π΅Ρ‚ Π²Π°ΡˆΡƒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ

0

Khuong Dang
2 Ноя 2016 в 09:06

40375520

30. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²

Π¦Π΅Π»ΠΈ

  • ΠΠ°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π²ΠΎ врСмя слияния

01 БлияниС master с Π²Π΅Ρ‚ΠΊΠΎΠΉ style

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся ΠΊ Π²Π΅Ρ‚ΠΊΠ΅ style ΠΈ попытаСмся ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΅Π΅ с Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ master.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:
git checkout style
git merge master
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:
$ git checkout style
Switched to branch 'style'
$ git merge master
Auto-merging lib/hello.html
CONFLICT (content): Merge conflict in lib/hello.html
Automatic merge failed; fix conflicts and then commit the result.

Если Π²Ρ‹ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ lib/hello.html, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅:

Π€Π°ΠΉΠ»:

lib/hello.html

<!-- Author: Alexander Shvets ([email protected]) -->
<html>
  <head>
<<<<<<< HEAD
    <link type="text/css" rel="stylesheet" media="all" href="style.css" />
=======
    <!-- no style -->
>>>>>>> master
  </head>
  <body>
    <h2>Hello,World! Life is great!</h2>
  </body>
</html>

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» — вСрсия Π²ΠΎ Π³Π»Π°Π²Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ (style). Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π» — вСрсия Π²Π΅Ρ‚ΠΊΠΈ master.

02 РСшСниС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°

Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚. ВнСситС измСнСния Π² lib/hello.html для достиТСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π€Π°ΠΉΠ»:

lib/hello.html

<!-- Author: Alexander Shvets ([email protected]) -->
<html>
  <head>
    <link type="text/css" rel="stylesheet" media="all" href="style.css" />
  </head>
  <body>
    <h2>Hello, World! Life is great!</h2>
  </body>
</html>

03 Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:
git add lib/hello.html
git commit -m "Merged master fixed conflict."
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:
$ git add lib/hello.html
$ git commit -m "Merged master fixed conflict."
Recorded resolution for 'lib/hello.html'.
[style 645c4e6] Merged master fixed conflict.

04 Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности слияния

Git Π½Π΅ прСдоставляСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… графичСских инструмСнтов слияния, Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ сторонними инструмСнтами слияния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ (обсуТдСниС Ρ‚Π°ΠΊΠΈΡ… инструмСнтов Π½Π° StackOverflow).

ΠžΡΠ½ΠΎΠ²Ρ‹ вСтвлСния ΠΈ слияния | Pro Git

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ вСтвлСния ΠΈ слияния с Ρ‚Π°ΠΊΠΈΠΌ процСссом Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² настоящСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  1. Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ Π²Π΅Π±-сайтом.
  2. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ для Π½ΠΎΠ²ΠΎΠΉ истории, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅.
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° этой Π²Π΅Ρ‚ΠΊΠ΅.

На этом этапС Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π·Π²ΠΎΠ½ΠΎΠΊ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сСйчас ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° другая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ Π΅Ρ‘ Π½Π°Π΄ΠΎ срочно Ρ€Π΅ΡˆΠΈΡ‚ΡŒ. Π’Ρ‹ сдСлаСтС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  1. Π’Π΅Ρ€Π½Ρ‘Ρ‚Π΅ΡΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ.
  2. 2. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ для исправлСния ошибки.
  3. ПослС Π΅Π³ΠΎ тСстирования, ΡΠΎΠ»ΡŒΡ‘Ρ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ с исправлСниСм ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½.
  4. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΏΡ€Π΅Ρ€Π²Π°Π½Π½ΠΎΠΉ истории ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

ΠžΡΠ½ΠΎΠ²Ρ‹ вСтвлСния

Для Π½Π°Ρ‡Π°Π»Π° прСдставим, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ своим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΏΠ°Ρ€Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² (см. Рисунок 3-10).

Рисунок 3-10. Рисунок 3-10.

Π’Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ β„–53 ΠΈΠ· систСмы отслСТивания ошибок, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ вашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ. РазумССтся, Git Π½Π΅ привязан ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ систСмС отслСТивания ошибок. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β„–53 являСтся основной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π²Ρ‹ создадитС Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π½Π΅ΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ сразу ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½Π΅Ρ‘, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git checkout с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -b:


$ git checkout -b iss53
Switched to a new branch "iss53"

Π­Ρ‚ΠΎ сокращСниС для:


$ git branch iss53
$ git checkout iss53

Рисунок 3-11 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Рисунок 3-11. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ / указатСля

Π’ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ вашим Π²Π΅Π±-сайтом, Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ нСсколько ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Π­Ρ‚ΠΈ дСйствия ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ Π²Π΅Ρ‚ΠΊΡƒ iss53 Π²ΠΏΠ΅Ρ€Ρ‘Π΄ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π° Π½Π΅Ρ‘ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ваш HEAD ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π΅Ρ‘; см. Рисунок 3-12):


$ vim index.html
$ git commit -a -m 'added a new footer [issue 53]'

Рисунок 3-12. Π’Π΅Ρ‚ΠΊΠ° iss53 ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΠ»Π°ΡΡŒ Π²ΠΏΠ΅Ρ€Ρ‘Π΄ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π·Π²ΠΎΠ½ΠΎΠΊ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π²Π΅Π±-сайтом, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ. Π‘ Git, Π²Π°ΠΌ Π½Π΅Ρ‚ Π½ΡƒΠΆΠ΄Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°ΠΏΠ»Π°Ρ‚ΠΊΡƒ вмСстС с Ρ‚Π΅ΠΌΠΈ измСнСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΡƒΠΆΠ΅ сдСлали для iss53. А Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ усилий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти измСнСния ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ смоТСтС Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ срочной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Всё, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master.

Однако, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ссли Π² вашСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΈΠ»ΠΈ индСксС ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ нСзафиксированныС измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚ с Π²Π΅Ρ‚ΠΊΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅, Git Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΠΈ. Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π²Π΅Ρ‚ΠΎΠΊ ΠΈΠΌΠ΅Ρ‚ΡŒ чистоС Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ состояния. БущСствуСт нСсколько способов Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого (Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΏΡ€ΡΡ‚Π°Π½ΡŒΠ΅ (stash) Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΠΏΡ€Π°Π²ΠΊΠ° (amend) ΠΊΠΎΠΌΠΌΠΈΡ‚Π°), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассмотрим ΠΏΠΎΠ·ΠΆΠ΅. А Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ прСдставим, Ρ‡Ρ‚ΠΎ Π²Ρ‹ зафиксировали всС измСнСния, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master:


$ git checkout master
Switched to branch "master"

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° находится Ρ‚ΠΎΡ‡Π½ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΆΠ΅ состоянии, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ β„–53, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° срочном ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ. ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ: Git Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ваш Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΊ снимку состояния Ρ‚ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π΅Ρ‚ΠΊΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅. Он добавляСт, удаляСт ΠΈ измСняСт Ρ„Π°ΠΉΠ»Ρ‹ автоматичСски, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ состояниС вашСй Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ послСднСму ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ Π½Π° Π²Π΅Ρ‚ΠΊΠ΅.

Π˜Ρ‚Π°ΠΊ, Π²Π°ΠΌ Π½Π°Π΄ΠΎ срочно ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим для этого Π²Π΅Ρ‚ΠΊΡƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ (см. Рисунок 3-13):


$ git checkout -b 'hotfix'
Switched to a new branch "hotfix"
$ vim index.html
$ git commit -a -m 'fixed the broken email address'
[hotfix]: created 3a0874c: "fixed the broken email address"
1 files changed, 0 insertions(+), 1 deletions(-)

Рисунок 3-13. Π’Π΅Ρ‚ΠΊΠ° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ срочной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ базируСтся Π½Π° Π²Π΅Ρ‚ΠΊΠ΅ master

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ тСсты, ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΈ ΡΠ»ΠΈΡ‚ΡŒ (merge) измСнСния Π½Π°Π·Π°Π΄ Π² Π²Π΅Ρ‚ΠΊΡƒ master, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚. Π­Ρ‚ΠΎ дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git merge:


$ git checkout master
$ git merge hotfix
Updating f42c576..3a0874c
Fast forward
README | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)

НавСрноС, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Ρ„Ρ€Π°Π·Ρƒ β€œFast forward” Π² этом слиянии. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π²Π΅Ρ‚ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ сливали, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»Π° Π½Π° ΠΊΠΎΠΌΠΌΠΈΡ‚, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ прямым ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ, Git ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ³Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²ΠΏΠ΅Ρ€Ρ‘Π΄. Π˜Π½Ρ‹ΠΌΠΈ словами, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠ»ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠΈΡ‚ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достигнут идя ΠΏΠΎ истории ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Git ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π²Π΅Ρ‰ΠΈ, пСрСмСщая ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²ΠΏΠ΅Ρ€Ρ‘Π΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Ρ‚Ρƒ расходящихся ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ для слияния ΠΈΡ… Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ. Π­Ρ‚ΠΎ называСтся β€œfast forward” (ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ°).

Π’Π°ΡˆΠΈ измСнСния Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π² снимкС состояния ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Π΅Ρ‚ΠΊΠ° master, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ измСнСния Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ (см. Рисунок 3-14).

Рисунок 3-14. ПослС слияния Π²Π΅Ρ‚ΠΊΠ° master ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΡƒΠ΄Π° ΠΆΠ΅, ΠΊΡƒΠ΄Π° ΠΈ Π²Π΅Ρ‚ΠΊΠ° hotfix

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Π½ΡŒ ваТная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½Π°, Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄Π΅Π»Π°Π»ΠΈ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π±Ρ‹Π»ΠΈ ΠΏΡ€Π΅Ρ€Π²Π°Π½Ρ‹. Однако, сначала ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ hotfix, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° большС Π½Π΅ Π½ΡƒΠΆΠ½Π° β€” Π²Π΅Ρ‚ΠΊΠ° master ΡƒΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ ΠΆΠ΅ мСсто. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -d ΠΊ git branch:


$ git branch -d hotfix
Deleted branch hotfix (3a0874c).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΊ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠ΅ для ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ β„–53 ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ Π½Π΅ΠΉ (см. Рисунок 3-15):


$ git checkout iss53
Switched to branch "iss53"
$ vim index.html
$ git commit -a -m 'finished the new footer [issue 53]'
[iss53]: created ad82d7a: "finished the new footer [issue 53]"
1 files changed, 1 insertions(+), 0 deletions(-)

Рисунок 3-15. Π’Π΅Ρ‚ΠΊΠ° iss53 ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²ΠΏΠ΅Ρ€Ρ‘Π΄ нСзависимо

Π‘Ρ‚ΠΎΠΈΡ‚ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°, сдСланная Π½Π° Π²Π΅Ρ‚ΠΊΠ΅ hotfix, Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° Π²Π΅Ρ‚ΠΊΠ΅ iss53. Если Π²Π°ΠΌ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ слияниС Π²Π΅Ρ‚ΠΊΠΈ master Π² Π²Π΅Ρ‚ΠΊΡƒ iss53 посрСдством ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git merge master. Или ΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ с ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ измСнСния Π½Π° iss53 Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ master.

ΠžΡΠ½ΠΎΠ²Ρ‹ слияния

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ β„–53 ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ эту Π²Π΅Ρ‚ΠΊΡƒ ΠΈ свой master. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ слияниС вашСй Π²Π΅Ρ‚ΠΊΠΈ iss53 Π² Π²Π΅Ρ‚ΠΊΡƒ master Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅ с Π²Π΅Ρ‚ΠΊΠΎΠΉ hotfix. ВсС Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ― ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Ρ‚Ρƒ Π²Π΅Ρ‚ΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ внСсти свои измСнСния ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git merge:


$ git checkout master
$ git merge iss53
Merge made by recursive.
README | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

БСйчас слияниС выглядит Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ для Π²Π΅Ρ‚ΠΊΠΈ hotfix, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Π΄Π΅Π»Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ваша история Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»Π°ΡΡŒ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π° Ρ‚ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ, Π½Π΅ являСтся прямым ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ для Π²Π΅Ρ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ сливаСтС, Git-Ρƒ придётся ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’ этом случаС Git Π΄Π΅Π»Π°Π΅Ρ‚ простоС Ρ‚Ρ€Π΅Ρ…Ρ…ΠΎΠ΄ΠΎΠ²ΠΎΠ΅ слияниС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈ этом Π΄Π²Π° снимка состояния рСпозитория, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π²Π΅Ρ‚ΠΎΠΊ, ΠΈ ΠΎΠ±Ρ‰ΠΈΠΉ снимок-ΠΏΡ€Π°Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ для этих Π΄Π²ΡƒΡ… Π²Π΅Ρ‚ΠΎΠΊ. На рисункС 3-16 Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‚Ρ€ΠΈ снимка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Git Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для слияния Π² этом случаС.

Рисунок 3-16. Git автоматичСски опрСдСляСт Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ° для слияния Π²Π΅Ρ‚ΠΎΠΊ

ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ просто ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ‚ΠΊΠΈ Π²ΠΏΠ΅Ρ€Ρ‘Π΄, Git создаёт Π½ΠΎΠ²Ρ‹ΠΉ снимок состояния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ‚Ρ€Π΅Ρ…Ρ…ΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ слияния, ΠΈ автоматичСски создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° этот Π½ΠΎΠ²Ρ‹ΠΉ снимок состояния (смотри Рисунок 3-17). Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΌΠΈΡ‚-слияниС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ являСтся особСнным ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ°.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Git опрСдСляСт Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ° для слияния Π²Π΅Ρ‚ΠΎΠΊ; Π² CVS ΠΈΠ»ΠΈ Subversion (вСрсии Ρ€Π°Π½Π΅Π΅ 1.5) этого Π½Π΅ происходит. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ сам ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ основу для слияния. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ слияниС Π² Git Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ простым занятиСм, Ρ‡Π΅ΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах.

Рисунок 3-17. Git автоматичСски создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, содСрТащий Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ слияния

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ осущСствили слияниС Π²Π°ΡˆΠΈΡ… Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ, Π²Π΅Ρ‚ΠΊΠ° iss53 Π²Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ½Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π΅ ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ (ticket) Π² вашСй систСмС:


$ git branch -d iss53

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ слиянии

Иногда процСсс слияния Π½Π΅ ΠΈΠ΄Π΅Ρ‚ Π³Π»Π°Π΄ΠΊΠΎ. Если Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ‡Π°ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π° ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² Π΄Π²ΡƒΡ… Π²Π΅Ρ‚ΠΊΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ, Git Π½Π΅ смоТСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это чисто. Если вашС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ β„–53 измСняСт Ρ‚Ρƒ ΠΆΠ΅ Ρ‡Π°ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π°, Ρ‡Ρ‚ΠΎ ΠΈ hotfix, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ слияния, ΠΈ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


$ git merge iss53
Auto-merging index. html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

Git Π½Π΅ создал Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ для слияния. Он приостановил этот процСсс Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈ слияниС (Π½Π° любом этапС послС возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°), ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git status:


[master*]$ git status
index.html: needs merge
# On branch master
# Changed but not updated:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# unmerged: index.html
#

Всё, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ слияния ΠΈ Ρ‡Ρ‚ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ, ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ ΠΊΠ°ΠΊ unmerged. Git добавляСт стандартныС ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΡ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эти ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹. Π’Π°Ρˆ Ρ„Π°ΠΉΠ» содСрТит ΡΠ΅ΠΊΡ†ΠΈΡŽ, которая выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:


<<<<<<< HEAD:index. html

=======

>>>>>>> iss53:index.html

Π’ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части Π±Π»ΠΎΠΊΠ° (всё Ρ‡Ρ‚ΠΎ Π²Ρ‹ΡˆΠ΅ =======) это вСрсия ΠΈΠ· HEAD (вашСй Π²Π΅Ρ‚ΠΊΠΈ master, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½Π΅Ρ‘ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ merge), всё Ρ‡Ρ‚ΠΎ находится Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части ― вСрсия Π² iss53. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈΠ±ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· этих частСй, Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ содСрТимоС ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ этот ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ всСго Π±Π»ΠΎΠΊΠ°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠΌ:

Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ содСрТит ΠΏΠΎΠ½Π΅ΠΌΠ½ΠΎΠ³Ρƒ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ части, ΠΈ я ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΠΈΠ» строки <<<<<<<, ======= ΠΈ >>>>>>>. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… сСкций с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ· ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ git add для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ для Git, Ρ‡Ρ‚ΠΎ всС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ графичСскиС инструмСнты для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git mergetool, которая запустит ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ графичСский инструмСнт ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½Ρ‹Π΅ ситуации:


$ git mergetool
merge tool candidates: kdiff3 tkdiff xxdiff meld gvimdiff opendiff emerge vimdiff
Merging the files: index. html

Normal merge conflict for ‘index.html’:
{local}: modified
{remote}: modified
Hit return to start merge resolution tool (opendiff):

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ инструмСнт для слияния, Π½Π΅ΠΆΠ΅Π»ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Git Π²Ρ‹Π±Ρ€Π°Π» opendiff для мСня, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π° Mac). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ инструмСнты, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ послС β€œmerge tool candidates”. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ для вас инструмСнта. Π’ Π“Π»Π°Π²Π΅ Настройка Git ΠΌΡ‹ обсудим, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для вашСго окруТСния.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚Π΅ ΠΈΠ· инструмСнта для выполнСния слияния, Git спросит вас, Π±Ρ‹Π»ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ. Если Π²Ρ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π° ― Ρ„Π°ΠΉΠ» индСксируСтся (добавляСтся Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для ΠΊΠΎΠΌΠΌΠΈΡ‚Π°), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git status Π΅Ρ‰Ρ‘ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹:


$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD . .." to unstage)
#
# modified: index.html
#

Если Π²Ρ‹ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ, ΠΈ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ всё, имСвшСС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, Π±Ρ‹Π»ΠΎ проиндСксировано, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git commit для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ слияния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:


Если Π²Ρ‹ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ, ΠΈ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ всё, имСвшСС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹, Π±Ρ‹Π»ΠΎ проиндСксировано, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git commit для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ слияния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это сообщСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚, Ссли считаСтС, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ сдСлали Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сдСлали, Ссли это Π½Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ.

Pro Git

Β«Git undo mergeΒ» — Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС Π² git [Π£Ρ‡Π΅Π±Π½ΠΈΠΊ]

Π—Π°Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ слияниС

‍

Иногда Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ слияниС, фиксируСтС Π΅Π³ΠΎ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ отправляСтС Π΅Π³ΠΎ Π½Π° свой ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Когда это ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Π²Π°ΠΌ понадобится способ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π² Π΅Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ состояниС.

Если Π±Ρ‹ Π²Ρ‹ всС Π΅Ρ‰Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π² процСссС слияния, Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ git merge —abort , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС — Git всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ очистит, ΠΈ Π²Ρ‹ ΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ состоянии, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»Π° ваша основная Π²Π΅Ρ‚ΠΊΠ° Ρ€Π°Π½ΡŒΡˆΠ΅.

Однако, Ссли Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈ слияниС, Ρ‚Π°ΠΊΠΎΠΉ возмоТности Π½Π΅Ρ‚. ВмСсто этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ слили свои измСнСния. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги повлияли Π½Π° эту Π²Π΅Ρ‚ΠΊΡƒ.


мастСр ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ git

‍

Π—Π°Ρ‚Π΅ΠΌ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Ρ…ΡΡˆ фиксации слияния с git log :


git log —oneline

‍

Π­Ρ‚ΠΎ сгСнСрируСт список ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

‍

Π₯Сш фиксации — это строка ΠΈΠ· сСми символов Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки.Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС `085974e` — это Ρ…Π΅Ρˆ нашСго слияния. ПослС этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ git revert , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС:


git revert -m 1 [Ρ…Π΅Ρˆ фиксации]

‍

А Π‘ΠΎΠ± Ρ‚Π²ΠΎΠΉ дядя! Команда git revert сгСнСрируСт Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, которая восстанавливаСт состояниС вашСй Π²Π΅Ρ‚ΠΊΠΈ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π΄ΠΎ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ слияния. Если вашС слияниС Π±Ρ‹Π»ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π½Π° GitHub), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ этот ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΈ всС Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΎ.

‍

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΠ°Ρ‚ слияния?

‍

Как ΠΈ Π² случаС ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Git создаСт ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ слияния с Ρ…Π΅ΡˆΠ΅ΠΌ фиксации, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΡƒ Π² истории, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±Ρ‹Π»Π° слита другая Π²Π΅Ρ‚ΠΊΠ°. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для запуска ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git revert для восстановлСния вашСй Π²Π΅Ρ‚ΠΊΠΈ Π΄ΠΎ состояния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ Π±Ρ‹Π» Ρ€Π°Π½Π΅Π΅.

git revert Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠ΅Ρ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, производят Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Π²Π΅Ρ€ΡΠΈΡŽ любого ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π΅ΠΌΡƒ Π΄Π°Π΅Ρ‚Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ с этими измСнСниями. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ исходная фиксация, ΠΈ новая обратная фиксация Π±ΡƒΠ΄ΡƒΡ‚ сохранСны Π² истории, сохраняя всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Π½ΠΎ оставляя Π²Π°ΡˆΡƒ Π²Π΅Ρ‚ΠΊΡƒ Π² Ρ‚ΠΎΠΌ состоянии, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ сдСлали ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.

Однако ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ слияниС, Π²Π°ΠΌ придСтся ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ git revert Ρ…ΡΡˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΈ Git Π·Π°Ρ‚Π΅ΠΌ посмотрит Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ этого ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ измСнСния Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ фиксация слияния ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ фиксации (ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚Π΅ вмСстС), Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ являСтся «основной Π²Π΅Ρ‚ΠΊΠΎΠΉΒ» — Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ слились.

Π’ΠΎΡ‚ Π³Π΄Π΅ появляСтся Ρ„Π»Π°Π³ -m — ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° 1 ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ»ΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π°Ρ‡Π°Π»ΠΈ слияниС (ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° 2 ΡƒΠΊΠ°Π·Π°Π»Π° Π±Ρ‹ Π½Π° Π²Π΅Ρ‚Π²ΡŒ, которая Π±Ρ‹Π»Π° объСдинСна in, Ρ‡Ρ‚ΠΎ Π² нашСм случаС бСсполСзно). Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ `revert` ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

‍

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠ³ΠΎ слияния

‍

ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса послС ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ слияния — ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ Π²Π΅Ρ‚ΠΊΠΎΠΉ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠ»ΠΈΡ‚ΡŒ Π΅Π΅ ΠΏΠΎΠ·ΠΆΠ΅.

К соТалСнию, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Если Π²Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅, Ρ‚ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ слияния Π²Π΅Ρ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ»ΠΈ, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ послС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ слияния. ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π² объСдинСнной Π²Π΅Ρ‚ΠΊΠ΅ навсСгда ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, поэтому, Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ Π±Π΅Π· восстановлСния этих ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², эти измСнСния Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·.

Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ, ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Git, ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это происходит (Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ ΠΌΠ½ΠΎΠΉ):

ΠžΡ‚ΠΌΠ΅Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° просто эффСктивно отмСняСт Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сдСлала эта фиксация, ΠΈ довольно проста. Но ΠΎΡ‚ΠΌΠ΅Π½Π° фиксации слияния Ρ‚Π°ΠΊΠΆΠ΅ отмСняСт _data_, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° фиксациСй, Π½ΠΎ это Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ влияСт Π½Π° влияниС слияния Π½Π° _history_.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, слияниС ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ ΠΎΠ½ΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ объСдинСниС Π΄Π²ΡƒΡ… Π²Π΅Ρ‚Π²Π΅ΠΉ вмСстС, ΠΈ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ слияния Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ это слияниС ΠΊΠ°ΠΊ послСднСС совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ состояниС — ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ» Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ слияниС, Π½Π΅ повлияСт Π½Π° это Π²ΠΎΠΎΠ±Ρ‰Π΅ .

Π˜Ρ‚Π°ΠΊ, «Π²ΠΎΠ·Π²Ρ€Π°Ρ‚» отмСняСт измСнСния Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ _Π½Π΅_ «ΠΎΡ‚ΠΌΠ΅Π½Π°» Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ отмСняСт влияниС фиксации Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ рСпозитория.

Π˜Ρ‚Π°ΠΊ, Ссли Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΎ Β«ΠΎΡ‚ΠΊΠ°Ρ‚Π΅Β» ΠΊΠ°ΠΊ ΠΎΠ± Β«ΠΎΡ‚ΠΌΠ΅Π½Π΅Β», Ρ‚ΠΎ Π²Ρ‹ всСгда пропуститС эту Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚Π°. Π”Π°, ΠΎΠ½ отмСняСт Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ Π½Π΅Ρ‚, ΠΎΠ½ Π½Π΅ отмСняСт ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… слияний здСсь. Он становится Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ, Ρ‡Π΅ΠΌ эта ΡΡ‚Π°Ρ‚ΡŒΡ, Π½ΠΎ Π²ΠΎΡ‚ подсказка ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΠ³Π»Ρƒ страницы:

Если нСисправная боковая Π²Π΅Ρ‚Π²ΡŒ Π±Ρ‹Π»Π° исправлСна ​​путСм добавлСния исправлСний Π²Π²Π΅Ρ€Ρ…Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ.

Если сбойная боковая Π²Π΅Ρ‚Π²ΡŒ, послСдствия ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π»ΠΈ ΠΎΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Ρ‹ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠΌ слияния, Π±Ρ‹Π»Π° пСрСстроСна с нуля (Ρ‚.Π΅. ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ исправлСниС, ΠΊΠ°ΠΊ Π²Ρ‹, каТСтся, истолковали), Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ слияниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ.

‍

ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΈΠ΅ ΠΏΡ€Π΅Π²Π΅Π½Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΌΠ΅Ρ€ для прСдотвращСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊ слиянию

‍

ΠžΡ‚ΠΌΠ΅Π½Π° слияния — занятиС нСпростоС. Π­Ρ‚ΠΎ ΠΎΡ‚Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, сбиваСт с Ρ‚ΠΎΠ»ΠΊΡƒ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΌΠ΅Π½Π΅Π΅ понятной истории Git.По ΠΌΠ΅Ρ€Π΅ роста вашСй ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΏΡ€Π΅Π²Π΅Π½Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚Π° слияния.

НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ процСсс ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ΄Π°. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ваши запросы Π½Π° вытягиваниС Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ слСдят Π·Π° Π½ΠΈΠΌΠΈ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹.

НаконСц, Ρ‚Π°ΠΊΠΎΠΉ инструмСнт, ΠΊΠ°ΠΊ Datree, Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для установлСния руководящих ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста вашСй ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ.

‍

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС Π² Git

БлияниС — это процСсс ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ HEAD.(Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ слиянии Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с нашим ΠΎΠ±Π·ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ git merge.)

Π’ этой ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ обсудим, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС Π² Git!

Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ Git

НС Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ всС эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π°ΡˆΡƒ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΡƒΡŽ Β«Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΡƒ ΠΏΠΎ GitΒ» — бСсплатно!

ИспользованиС git reset для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ слияния

Один ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… аспСктов Git — это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ практичСски всС.И, ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, слияниС Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅! Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git reset , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Ρ€Π΅Π²ΠΈΠ·ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ слияниСм, Ρ‚Π΅ΠΌ самым эффСктивно ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ² Π΅Π΅:

  $ git reset --hard 
  

Если Ρƒ вас Π½Π΅Ρ‚ Ρ…ΡΡˆΠ° фиксации ΠΏΠ΅Ρ€Π΅Π΄ слияниСм, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

  $ git reset --hard HEAD ~ 1
  

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Β«HEAD ~ 1Β», Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Git Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ фиксации ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π΅Π²ΠΈΠ·ΠΈΠ΅ΠΉ HEAD — которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ фиксациСй ΠΏΠ΅Ρ€Π΅Π΄ слияниСм!

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±ΠΎΠΈΡ… случаях Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«—hardΒ». Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² вашСй Π Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΊΠΎΠΏΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Ρ‹; Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ†Π΅Π½Π½Ρ‹Π΅ нСзафиксированныС измСнСния, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°Π½Π΅Π΅ git stash .

Подсказка
ΠžΡ‚ΠΌΠ΅Π½Π° слияния Π² Π‘Π°ΡˆΠ½Π΅

Π’ случаС, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Tower Git, ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ просто: просто Π½Π°ΠΆΠΌΠΈΡ‚Π΅ CMD + Z послС этого, ΠΈ Tower ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ слияниС Π·Π° вас!

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ слияниС

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½, Ссли Π²Ρ‹ Π΅Ρ‰Π΅ НЕ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ слияниС Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡƒΠΆΠ΅ подСлились фиксациСй слияния со своими ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π²Π°ΠΌ слСдуСт ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ.

  $ git revert -m 1 
  

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ эта ΠΊΠΎΠΌΠ°Π½Π΄Π°:

  1. git revert обСспСчит созданиС Π½ΠΎΠ²ΠΎΠΉ фиксации , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСдствия этого Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ слияния. Π’ этом ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ git reset , Π³Π΄Π΅ ΠΌΡ‹ эффСктивно «удаляСм» Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΈΠ· истории. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ git revert — Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡƒΠΆΠ΅ Π½Π°ΠΆΠ°Π»ΠΈ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€.
  2. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -m 1 сообщаСт Git, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ сторону для слияния (это Π²Π΅Ρ‚Π²ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ объСдинили с Π² ).
  3. НаконСц, Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ прСдоставили ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ…ΡΡˆ фиксации: для ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° git reset ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π΄ΠΎ слияния; ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ использовании git revert ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ фактичСский Ρ…Π΅Ρˆ фиксации слияния.

Π£Π·Π½Π°Ρ‚ΡŒ большС

Git: ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС

Если Π²Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‚ΠΊΡƒ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС, Π΅ΡΡ‚ΡŒ нСсколько способов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Git.

РСшСниС этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΎΡ‰Π΅, Ссли Π²Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ измСнСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΠΏΠΎ, ΠΈ Ссли Π²Ρ‹ это сдСлали, Π²Π°ΠΌ, вСроятно, придСтся ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ git revert вмСсто Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅. Π’ этой ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я объясню, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС Git, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ использованиС reflog , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ прямо ΠΏΠ΅Ρ€Π΅Π΄ слияниСм:

  $ git reflog
  

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этого Π² вашСм Ρ€Π΅ΠΏΠΎ Π²Π΅Ρ€Π½Π΅Ρ‚ список послСдних ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΡ… сокращСнныС Ρ…ΡΡˆΠΈ, расстояниС ΠΎΡ‚ HEAD ΠΈ описаниС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

  $ git reflog
8135d07 [email protected] {0}: commit (merge): ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ local / bug-34 Π² local / master
03979c8 [адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½] {1}: commit: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​поддСрТка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса
9f7a993 [элСктронная ΠΏΠΎΡ‡Ρ‚Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π°] {2}: commit (initial): Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ фиксация
  

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ reset , Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сдСлали ΠΏΡ€ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ фиксации, Ρ‡Ρ‚ΠΎ, ΠΏΠΎ сути, ΠΌΡ‹ ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ здСсь:

  $ git reset --hard 
  

Π˜Ρ‚Π°ΠΊ, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ фиксации с сообщСниСм Β«Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​поддСрТка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса», Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π±Ρ‹ сдСлали Ρ‚Π°ΠΊ:

  $ git reset --hard 03979c8
  

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --hard Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠΎΠ΄ Π² Π΄Π΅Ρ€Π΅Π²Π΅, ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ копиях. Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ внСсли, Ρ‚ΠΎ --merge ΠΈΠ»ΠΈ --mixed ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ для вас Π»ΡƒΡ‡ΡˆΠΈΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ.

Если ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ, находится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ Π·Π° HEAD , Ρ‚ΠΎ вмСсто этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ORIG_HEAD ΠΊΠ°ΠΊ ярлык Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ reset :

  $ git reset --hard ORIG_HEAD
  

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ reflog для поиска Ρ…ΡΡˆΠ° фиксации. ORIG_HEAD ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ эквивалСнтСн [Π·Π°Ρ‰ΠΈΡ‚Π° элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹] {1} , поэтому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ : послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ измСнСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΠΏΠΎ, Π½Π΅ рСкомСндуСтся Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ стираСтС ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ. Π’ этом случаС я Π±Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git revert , которая ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ.

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС Git

  1. Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹
  2. β€Ί
  3. Git
  4. β€Ί
  5. Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС Git
  1. Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС с ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌΠΈ
  2. Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ
  3. Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС

    Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС

  4. ΠžΡ‚ΠΌΠ΅Π½Π° ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ фиксации слияния
    1. ΠžΡ‚ΠΌΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git reset
    2. ΠžΡ‚ΠΌΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git revert
  5. Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
  6. ОсновноС использованиС Git Merge

Иногда ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ слияния Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΈΠ·-Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ слияния, ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ вытягивания ΠΈΠ»ΠΈ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅.Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ рассмотрим нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ слияния Π² Git.

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС с ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌΠΈΒΆ

Π’ случаС возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² послС Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ слияния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ вСсь процСсс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ объСдинСниС

Один ΠΈΠ· ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ способы ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ git merge — Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git reset. ИспользованиС этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ сдСлали. Он ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ послСднюю ΡΠ΄Π΅Π»Π°Π½Π½ΡƒΡŽ Π²Π°ΠΌΠΈ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ слияниС.Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ…ΡΡˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° слияния, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git log. ПослС этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ…Π΅Ρˆ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

  git reset --hard   

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, это ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ способ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ вашС слияниС, сохранив Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния ΠΏΡ€ΠΈ этом. Π’ любом случаС, ΠΎΠ½ Π½Π΅ лишСн нСдостатков. Если ваша локальная Π²Π΅Ρ‚Π²ΡŒ находится Π·Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ с Π»ΡŽΠ±Ρ‹ΠΌ количСством ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π½Π΅ ΠΎΠΆΠΈΠ΄Π°ΠΉΡ‚Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΎΡ‚ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.ΠŸΡ€ΠΈ использовании этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π°ΠΌ слСдуСт Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ сцСнарий. НапримСр, ваша история Git ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСписана, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ программистам вашСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ измСнСния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ слияния¢

ΠžΡ‚ΠΌΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git resetΒΆ

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ слияния, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ΡˆΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½ΠΈΠΆΠ΅:

  git push origin HEAD --force  

ВмСсто —force Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ бСзопасный ΠΌΠ΅Ρ‚ΠΎΠ΄: —force-with-lease , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

ΠžΡ‚ΠΌΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git revertΒΆ

Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ трудности для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git revert. Для этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ…ΡΡˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° слияния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ git log . Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ…Π΅Ρˆ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

  git revert -m 1   

Π‘ -m 1 Π²Ρ‹ ΠΏΡ€ΠΈΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Git Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° слияния. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ, Π²Π°ΠΌ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -m 2 .

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉΒΆ

Π­Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, Π° Π½Π΅ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π΄ΠΎ слияния. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ это Π½Π΅ совсСм Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Если Π²Ρ‹ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² мастСр, измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Ρ‹ ΠΊ Π½Π΅ΠΌΡƒ, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ измСнСния, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ git merge .ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², слСдуСт ΡƒΡ‡Π΅ΡΡ‚ΡŒ всС послСдствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ принСсти.

ОсновноС использованиС Git Merge¢

Git merge Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π½Π° объСдинСниС Π΄Π²ΡƒΡ… Π²Π΅Ρ‚Π²Π΅ΠΉ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для объСдинСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ. ΠšΠΎΠΌΠΌΠΈΡ‚Ρ‹ слияния ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠ·-Π·Π° наличия Π΄Π²ΡƒΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ истории автоматичСски ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Git ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° создаСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния. Но это Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ объСдинСниС Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π² историях.

Бпасибо Π·Π° ΠΎΡ‚Π·Ρ‹Π²!

Π‘Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ это ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ? Π”Π° НСт


Π‘Ρ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ слияниС / Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² git

Π£Π΄Π°Π»ΠΈΡ‚ΡŒ слияниС / Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ Π² git — Super User

Π‘Π΅Ρ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½Π° стСков

Π‘Π΅Ρ‚ΡŒ Stack Exchange состоит ΠΈΠ· 176 сообщСств вопросов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Stack Overflow, ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠ΅Π΅ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ΡΡ наибольшим Π΄ΠΎΠ²Π΅Ρ€ΠΈΠ΅ΠΌ ΠΎΠ½Π»Π°ΠΉΠ½-сообщСство, Π³Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ, Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своими знаниями ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свою ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ.

ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ Stack Exchange

  1. 0

  2. +0

  3. ΠΠ²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ
    ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ

Super User — это сайт вопросов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… энтузиастов ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. РСгистрация Π·Π°ΠΉΠΌΠ΅Ρ‚ всСго ΠΌΠΈΠ½ΡƒΡ‚Ρƒ.

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ этому сообщСству

ΠšΡ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Ρ‚ΡŒ вопрос

ΠšΡ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π³ΠΎΠ»ΠΎΡΡƒΡŽΡ‚ΡΡ ΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π½Π°Π²Π΅Ρ€Ρ…

Бпросил

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ
65k Ρ€Π°Π·

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ git, я объСдинил Π²Π΅Ρ‚ΠΊΡƒ Π² master, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, спустя нСсколько нСдСль ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ / Π²Π΅Ρ‚ΠΊΡƒ.

  • Π­Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ ваш Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ vi) со списком ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ. Π£Π΄Π°Π»ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΈΠ· списка, сохранитС ΠΈ Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅. Π­Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π²Π°ΡˆΡƒ Π²Π΅Ρ‚ΠΊΡƒ Π±Π΅Π· фиксации, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ.

  • Β«Π‘ΠΎΠ»Π΅Π΅ бСзопасный» ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ — ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π² Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ эта функция Ρ€Π°Π½ΡŒΡˆΠ΅ сущСствовала ΠΈ Π±Ρ‹Π»Π° Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π°. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ git revert . Π­Ρ‚ΠΎ создаст Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отмСняСт Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ.ОсновноС прСимущСство Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС фиксации ΠΈ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ эта функция удаляСтся.

    Π‘ΠΎΠ·Π΄Π°Π½ 29 ΠΌΠ°Ρ€.

    ΠœΡƒΡ€Π΅ΠΉΠ½ΠΈΠΊ

    3,7861010 Π·ΠΎΠ»ΠΎΡ‚Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²2323 сСрСбряных Π·Π½Π°ΠΊΠ°2828 Π±Ρ€ΠΎΠ½Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ²

    3

    Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ слияния , Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

    1. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ git log , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ своСго ΠΊΠΎΠΌΠΌΠΈΡ‚Π° слияния. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ нСсколько Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², связанных с объСдинСниСм (см. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅).

    Π—Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ фиксации слияния, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΆΠ΅Π»Ρ‚Ρ‹ΠΌ.
    Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ — это Ρ‚Π΅, Ρ‡Ρ‚ΠΎ записаны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΊΠ°ΠΊ Merge: parent1 parent2 . БСйчас …

    Рассказ:

    1. ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π²Π΅Ρ‚Π²ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ объСдинСниС. Π—Π°Ρ‚Π΅ΠΌ просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ git revert -m 1 , которая ΠΎΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ консоль vi для Π²Π²ΠΎΠ΄Π° сообщСния фиксации.ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅, сохранитС, Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅, Π³ΠΎΡ‚ΠΎΠ²ΠΎ!

    Длинная история:

    1. ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π²Π΅Ρ‚Π²ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ объСдинСниС. Π’ ΠΌΠΎΠ΅ΠΌ случаС это Π²Π΅Ρ‚ΠΊΠ° test , ΠΈ я ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Π½Π΅Π΅ Π²Π΅Ρ‚ΠΊΡƒ feature / analytics-v3 .

    2. git revert — это ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая отмСняСт Π»ΡŽΠ±ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ. Но Π΅ΡΡ‚ΡŒ нСприятный Ρ‚Ρ€ΡŽΠΊ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° слияния . Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ввСсти Ρ„Π»Π°Π³ -m , ΠΈΠ½Π°Ρ‡Π΅ это Π½Π΅ удастся. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ свою Π²Π΅Ρ‚ΠΊΡƒ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° выглядСла Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π½Π° parent1 ΠΈΠ»ΠΈ parent2 Ρ‡Π΅Ρ€Π΅Π·:

    git revert <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ фиксации слияния> -m 1 (возвращаСтся ΠΊ parent2 )

    git revert <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ фиксации слияния> -m 2 (возвращаСтся ΠΊ parent1 )

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ git log этих Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ΄Ρ‚ΠΈ, ΠΈ это ΠΊΠΎΡ€Π΅Π½ΡŒ всСй ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹.

    Боздан 09 июл.

    1

    Π‘ΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ JavaScript

    Π’Π°ΡˆΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

    НаТимая Β«ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ cookieΒ», Π²Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Stack Exchange ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ cookie Π½Π° вашСм устройствС ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² соотвСтствии с нашСй ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ Π² β€‹β€‹ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² cookie.

    ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ всС ΠΊΡƒΠΊΠΈ

    ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

    Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС Π² Git

    Π― объСдиняю Π²Π΅Ρ‚ΠΊΡƒ, скаТСм, b1, ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ, скаТСм, b2.И Ρƒ b1, ΠΈ Ρƒ b2 Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹.

    Π‘ΠΊΠ°ΠΆΠ΅ΠΌ,

      b1: c1 ---> c2 ---> c3
    b2: c1 ---> c4 ---> c5
      

    Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли я объСдиню b2 с b1 ΠΈ Π½Π΅Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², история b1 Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ b2 (c4, c5).

    Как ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это слияниС Π² Git?

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ / ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС (ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Π² вопросС) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

      $ git reset --hard ORIG_HEAD
      

    Но ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ запуск git reset --hard ORIG_HEAD ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Ρ‚ΡƒΠ΄Π°, Π³Π΄Π΅ Π²Ρ‹ Π±Ρ‹Π»ΠΈ, Π½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ ваши Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. git reset --merge сохраняСт ваши Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния.

    Π•Ρ‰Π΅ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ· справочной страницы git reset:

      ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС ΠΈΠ»ΠΈ вытягиваниС
    
           $ git pull (1)
           Авто-слияниС Π½ΠΈΡ‚Ρ„ΠΎΠ»
           ΠšΠžΠΠ€Π›Π˜ΠšΠ’ (содСрТаниС): ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ слияния Π² Π½ΠΈΡ‚Ρ„ΠΎΠ»Π°Ρ…
           Ошибка автоматичСского слияния; ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.
           $ git reset --hard (2)
           $ git pull. Ρ‚Π΅ΠΌΠ° / Π²Π΅Ρ‚ΠΊΠ° (3)
           ОбновлСниС с 41223 ... до 13134 ...
           ΠŸΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ° Π²ΠΏΠ΅Ρ€Π΅Π΄
           $ git reset --hard ORIG_HEAD (4)
    
       1.ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΈΠ· апстрима ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ мноТСству ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²; Π²Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° слияниС прямо сСйчас, поэтому Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΠΎΠ·ΠΆΠ΅.
       2. Β«pullΒ» Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π» слияниС фиксации, поэтому Β«git reset --hardΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся синонимом Β«git reset --hard HEADΒ», ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ бСспорядок ΠΈΠ· индСксного Ρ„Π°ΠΉΠ»Π° ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°.
       3. БлияниС тСматичСской Π²Π΅Ρ‚ΠΊΠΈ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ быстрой ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ΅ Π²ΠΏΠ΅Ρ€Π΅Π΄.
       4. Но Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ тСматичСская Π²Π΅Ρ‚ΠΊΠ° Π΅Ρ‰Π΅ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° для ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ использования.  "pull" ΠΈΠ»ΠΈ "merge" всСгда оставляСт исходный ΠΊΠΎΠ½Π΅Ρ† Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚Π²ΠΈ Π² ORIG_HEAD, поэтому
       ТСсткий сброс Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ваш индСксный Ρ„Π°ΠΉΠ» ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Π² это состояниС ΠΈ сбрасываСт ΠΊΠΎΠ½Ρ‡ΠΈΠΊ Π²Π΅Ρ‚ΠΊΠΈ Π΄ΠΎ этой фиксации.ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΡΠ½ΡƒΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ грязного Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°
    
           $ git pull (1)
           Авто-слияниС Π½ΠΈΡ‚Ρ„ΠΎΠ»
           БлияниС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ рСкурсивно.
            Π½ΠΈΡ‚Ρ„ΠΎΠ» | 20 +++++ ----
            ...
           $ git reset --merge ORIG_HEAD (2)
    
       1. Π”Π°ΠΆΠ΅ Ссли Ρƒ вас ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² вашСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Π΄Π΅Ρ€Π΅Π²Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ спокойно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Β«git pullΒ», Ссли Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ измСнСния Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ с Π½ΠΈΠΌΠΈ.
       2. Π˜Π·ΡƒΡ‡ΠΈΠ² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ слияния, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅.Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ "git reset --hard ORIG_HEAD" ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ
       Π³Π΄Π΅ Π²Ρ‹ Π±Ρ‹Π»ΠΈ, Π½ΠΎ ΠΎΠ½ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ ваши Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. "git reset --merge" сохраняСт ваши Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния.
      

    ΠžΡ‚ΠΌΠ΅Π½Π° локального слияния Git

    Git — фантастичСский инструмСнт для управлСния ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌ контСкстС, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π² случаС с Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ инструмСнтом, всСгда Π±ΡƒΠ΄ΡƒΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ.

    Одна ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ слияниС локальной Π²Π΅Ρ‚ΠΊΠΈ, которая Π½Π΅ Π±Ρ‹Π»Π° ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π° ​​в ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.Π—Π²ΡƒΡ‡ΠΈΡ‚ слоТно, ΠΏΡ€Π°Π²Π΄Π°?

    НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ способы, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстро …

    Аппаратный сброс

    ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΆΡƒΡ€Π½Π°Π» git, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, какая фиксация ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Π»Π° слиянию, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠ±Ρ€ΠΎΡΡŒΡ‚Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° эту ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ sha:

      git ΠΆΡƒΡ€Π½Π°Π»
    git reset --hard COMMIT_SHA_REFERENCE
      

    Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

      git ΠΆΡƒΡ€Π½Π°Π»
    git reset --hard HEAD ~ NUMBER_OF_COMMITS_TO_ROLL_BACK
      

    НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠ»ΡŒΠ΄Ρƒ Π² описанном Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅!

    Π“Π»Π°Π²Π½Ρ‹ΠΉ нСдостаток этих ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ²? Π’Ρ‹ Π½Π΅ сохранитС Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ сдСлали, поэтому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ… с ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ!

    Бброс слияния

    Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ваши Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния, указывая Π½Π° послСдний ΠΊΠΎΠΌΠΌΠΈΡ‚, сдСланный ΠΏΠ΅Ρ€Π΅Π΄ слияниСм:

      git reset --merge ORIG_HEAD
      

    Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ для очистки слияния ΠΏΡ€ΠΈ сохранСнии Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Ρƒ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ нСдостатки — Ссли ваша локальная главная Π²Π΅Ρ‚Π²ΡŒ находится Π·Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π²Π΅Ρ‚Π²ΡŒΡŽ Π»ΡŽΠ±Ρ‹ΠΌ количСством ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², Ρ‚ΠΎΠ³Π΄Π° этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π΄Π°Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

    Π’Π°ΠΊΠΆΠ΅ сущСствуСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Git, Ρ‡Ρ‚ΠΎ Π·Π°ΠΏΡƒΡ‚Ρ‹Π²Π°Π΅Ρ‚ / затрудняСт Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, внСсСнных Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° фиксация ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π°. ΠœΡ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, насколько это Π²Π΅Ρ€Π½ΠΎ, ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

    Π˜Ρ‚Π°ΠΊ, Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько способов Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½Ρƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… слияний Π² Git.

    Какой Π±Ρ‹ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π²Ρ‹ Π½ΠΈ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ, ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ послСдствиях ΠΈ, ΠΊΠ°ΠΊ ΠΈ с Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ инструмСнтом, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ с ΡƒΠΌΠΎΠΌ!

    ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ

    Β«Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ сообщСниям

    .

    Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

    Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *