1. 程式人生 > >Git怎樣撤銷一次分支的合併Merge

Git怎樣撤銷一次分支的合併Merge

最近用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