我已经从一个 friend 的仓库中 merge 了一个主分支到我的工作目录到 branch_a 中使用:
git pull my_friend master
我发现 merge 后的版本有错误。为了继续开发,我想恢复到 merge 前的最后一次提交。
我试过:
git reset --hard HEAD
但这让我回到了 merge 后的状态。 ( pull 命令是否提交?!)
我也试过:
git revert HEAD
但收到以下错误:
fatal: Commit 2d72d8f367b987d8c16f5cb1a543a6886acdcf83 is a merge but no -m option was given.
我该怎么办?
最佳答案
HEAD
指的是当前提交(通常是当前 checkout 分支的提示)。您已经提交了 merge ,因此 HEAD
指向 merge 提交。如果你想回到它之前的提交,使用:
git reset --hard HEAD^
^
表示“第一个父级”;对于常规提交,它是唯一的父级,对于 merge 提交,它是您在 merge 时 checkout 的提交(即,您 merge 到的分支的先前提示)。
当然,如果你真的迷路了,只需打开 gitk
,然后复制/粘贴你想要重置的提交的 SHA1 到 (git reset --hard SHA1
) 或右击它并在 gitk
中重置。
顺便说一句,revert
并不意味着您认为它的作用(听起来您正在以 svn 方式使用它,也许吧?但我从未使用过 svn)。 git revert
用于通过应用反向差异来创建取消(还原)先前提交的提交。当您想要撤消已经发布的单个先前提交时,您可以使用它。
关于Git: merge 后如何重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3556501/