Git: merge 后如何重置?

标签 git git-revert

我已经从一个 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/

相关文章:

git - 在 git 中,如何将文件恢复到 3 次提交前?

git - 您能否在不造成冲突的情况下恢复除最后一次提交以外的提交?

git - 使用github api从 pull 请求号获取 pull 请求 merge 提交sha

git - 在多台机器上协作 Android Studio 项目

git - 使用 git filter branch 重写历史时保留 git 注释

git - 如何使用 'git reset --hard HEAD' 恢复到之前的提交?

git - 如何在不删除最新提交的情况下恢复到之前的提交?

git - 在 Azure DevOps 中发布的 Git 分支未在 VS2013 或 Git 命令行中显示

git - msysgit 的麻烦

git - 更改帐户后覆盖所有 Git 作者