使用git revert撤消推式合并的提交哈希是什么?

使用git revert撤消推式合并的提交哈希是什么?,git,undo,git-merge,git-log,git-revert,Git,Undo,Git Merge,Git Log,Git Revert,我将beta分支合并到master分支中。我推到原点。我现在希望master在本地和远程合并之前都能保持原样 这是一个很好的答案 git revert -m 1 commit_hash 如果这确实是一条路,我如何确定提交散列?我尝试了以下返回的哈希,但未成功: 我已经检查了git log和gitk对分支的翻译,但它们都很长,我对自己的解释不太确定,觉得在制造更大的混乱之前应该寻求帮助。Beta源于v2,v2源于master。随着我不断更新master的新分支,从master到v2和beta版的

我将beta分支合并到master分支中。我推到原点。我现在希望master在本地和远程合并之前都能保持原样

这是一个很好的答案

git revert -m 1 commit_hash
如果这确实是一条路,我如何确定提交散列?我尝试了以下返回的哈希,但未成功:

我已经检查了git log和gitk对分支的翻译,但它们都很长,我对自己的解释不太确定,觉得在制造更大的混乱之前应该寻求帮助。Beta源于v2,v2源于master。随着我不断更新master的新分支,从master到v2和beta版的合并也在进行中。从beta版到master版的合并是一个我希望纠正的错误


一旦我确定了合并点,如果我发现合并后在master上做出的任何提交都应该在beta分支上,那么最好的方法是什么

您需要找到合并的提交,
git merge base
告诉您可以在哪里进行合并的提交。它基本上是这两个分支中存在的最后一个提交。合并提交仅存在于主分支中,除非在合并后创建了新分支,但这与此处无关。:)

要查找合并提交,请尝试:
git日志主机^beta--祖先路径--合并

所需的提交是最后一次提交

但请仔细阅读Linus的评论:

还可以看看是什么引导您解决了几乎所有git问题,包括推式合并。但是,推式合并并没有简单的解决方案。

尝试
log--all--graph--pretty=t格式:'%Cred%h%Creset-%C(黄色)%d%Creset%s%Cgreen(%an%cr)%Creset'--abbrev commit--date=relative
(我个人给它起了别名),它将显示所有分支的提交及其日期,以及合并发生在哪里。
$ git merge-base --all master beta
1f4b949b7ef97abf913ae672e3acd0907abfac1b
$ git revert -m 1 1f4b949b7ef97abf913ae672e3acd0907abfac1b
error: Mainline was specified but commit 1f4b949b7ef97abf913ae672e3acd0907abfac1b is not a merge.
fatal: revert failed