Git怎樣撤銷一次分支的合併Merge
阿新 • • 發佈:2019-01-31
最近用git,merge之後寫的程式碼全沒了,瞬間懵逼,找到這個解決辦法,靠譜,先記下來
如果確定放棄這次合併的提交,假如是 merge 了錯誤的分支到 master,先通過 git
reflog
或者 gitg、gitk、qgit 等工具確定你 merge 之前 master 所在的 commit,然後在 master 分支上使用 git
reset --hard <commit>
重置頭指標。一般來說,在 master 上直接執行 git
reset --hard HEAD~
也可以回到合併之前的提交,但 git reset --hard
命令還是使用確定的
commit 為好。注意,git reset --hard
git
branch
為當前的提交建立個新的分支引用後再繼續,待確定無誤後刪除即可。
如果錯誤的合併之後又有了新的提交,可以在完成前述正確的合併之後,通過 git
rebase --onto <錯誤的合併提交> <正確的合併提交> <新提交所在分支>
來在正確的合併提交上重建新的提交。git
rebase --onto
命令所重建的提交序列最好是線性的,否則非線性的提交會變成線性的。若需要儲存非線性的提交歷史,可以考慮使用 --preserve-merges
引數,不過結果很不可靠,具體視提交的非線性程度而定。
https://segmentfault.com/q/1010000000140446