Git如何撤銷merge操作


方法一,reset 到 merge 前的版本,然后再重做接下來的操作,要求每個合作者都曉得怎么將本地的 HEAD 都回滾回去:

$ git checkout 【行merge操作時所在的分支】
$ git reset --hard 【merge前的版本號】

方法二,當 merge 以后還有別的操作和改動時,git 正好也有辦法能撤銷 merge,用 git revert

$ git revert -m 【要撤銷的那條merge線的編號,從1開始計算(怎么看哪條線是幾啊?)】 【merge前的版本號】
Finished one revert.
[master 88edd6d] Revert "Merge branch 'jk/post-checkout'"
 1 files changed, 0 insertions(+), 2 deletions(-)

這樣會創建新的 commit 來抵消對應的 merge 操作,而且以后 git merge 【那個編號所代表的分支】 會提示:

Already up-to-date. 

因為使用方法二會讓 git 誤以為這個分支的東西都是咱們不想要的。

方法三,怎么撤銷方法二:

$ git revert 【方法二撤銷merge時提交的commit的版本號,這里是88edd6d】
Finished one revert.
[master 268e243] Revert "Revert "Merge branch 'jk/post-checkout'""
 1 files changed, 2 insertions(+), 0 deletions(-)

這樣就行了,可以正常 merge 了,不過可能會有很多沖突:

$ git merge jk/post-checkout
Auto-merging test.txt
Merge made by recursive.
 test.txt |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

 


免責聲明!

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



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