Git revert merge


history1分出來的A, B兩個branch

A上有一些更改,例如

changeA2

changeA1

history1

B上有一些更改,例如

changeB2

changeB1

history1

---------------------

此時想把B branch上的改動merge到A branch,於是在A branch上執行 git merge B, 執行完畢后A branch的commit記錄可能如下:

merge branch 'B' into A

changeA2

changeB2

changeB1

changeA1

history1

此時突然發現情況不對,想把剛才A上剛才的merge取消,遂在A上執行 git revert -m 1 <merge commit的SHA1碼>,此時commit記錄變成如下狀態:

revert “merge branch 'B' into A”

merge branch 'B' into A

changeA2

changeB2

changeB1

changeA1

history1

注意,這時候如果你想再把B branch上的change merge回A上已經不可能了,當執行revert “merge branch 'B' into A”的時候你告訴git不要merge B上的東西(任何基於B的branch都不能merge了),解決方法有兩種:

1. 把revert “merge branch 'B' into A”這個commit再revert回去,這一般不太可行,好不容易revert過來的又revert回去么?遂方法2

2. B上的change有些有用,又不想都放棄掉,此時在B上執行git reset <history1的SHA1碼>, 也就是把B的頭指針指到剛分出來時候的那個commit點,這時候改動還在,只不過都變成unstage狀態,這時速度把不對的地方改過來,重新commit一下,此時B的commit記錄變為:

NewChangeB 

history1

此時再在A上merge B上的更改就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM