Git:合并后如何重置?

Jon*_*han 6 git git-revert

我已经将朋友的存储库中的主分支合并到我的工作目录中,使用:

git pull my_friend master
Run Code Online (Sandbox Code Playgroud)

我发现合并后的版本有错误.为了继续开发,我想恢复到合并之前的最后一次提交.
我试过了:

git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

但这让我在合并后立即回到了州.(拉命令提交?!)
我也尝试过:

git revert HEAD
Run Code Online (Sandbox Code Playgroud)

但收到以下错误:

致命:提交2d72d8f367b987d8c16f5cb1a543a6886acdcf83是合并但没有给出-m选项.

我该怎么办?

Cas*_*bel 25

HEAD指当前提交(通常是当前签出分支的提示).您已经提交了合并,因此HEAD指向合并提交.如果要返回之前的提交,请使用:

git reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)

^装置"的第一个亲本"; 对于常规提交,它是唯一的父级,并且对于合并提交,它是您在合并时检出的提交(即您合并到的分支的先前提示).

当然,如果你真的迷路了,只需打开gitk,然后将要重置的提交的SHA1复制/粘贴到(git reset --hard SHA1),或者只需右键单击它并在其中重置gitk.

顺便revert说一句,并不意味着你的想法(听起来你是以svn方式使用它,也许?但我从未使用过svn).git revert用于创建一个提交,通过应用反向diff来取消(恢复)先前的提交.当您想要撤消已发布的单个先前提交时,可以使用它.