Git怎样撤销一次分支的合并Merge

最近用git,merge之后写的代码全没了,瞬间懵逼,找到这个解决办法,靠谱,先记下来

如果确定放弃这次合并的提交,假如是 merge 了错误的分支到 master,先通过 git reflog 或者 gitg、gitk、qgit 等工具确定你 merge 之前 master 所在的 commit,然后在 master 分支上使用 git reset --hard  重置头指针。一般来说,在 master 上直接执行 git reset --hard HEAD~ 也可以回到合并之前的提交,但 git reset --hard 命令还是使用确定的 commit 为好。注意,git reset --hard 命令有风险,除非十分确定要放弃当前提交,否则最好先 git branch为当前的提交建立个新的分支引用后再继续,待确定无误后删除即可。

如果错误的合并之后又有了新的提交,可以在完成前述正确的合并之后,通过 git rebase --onto <错误的合并提交> <正确的合并提交> <新提交所在分支> 来在正确的合并提交上重建新的提交。git rebase --onto 命令所重建的提交序列最好是线性的,否则非线性的提交会变成线性的。若需要保存非线性的提交历史,可以考虑使用 --preserve-merges 参数,不过结果很不可靠,具体视提交的非线性程度而定。

  • 2012年11月14日回答 · 2012年11月14日更新 
  • 评论



https://segmentfault.com/q/1010000000140446

你可能感兴趣的:(Git怎样撤销一次分支的合并Merge)