哪个提交哈希使用git-revert撤消推送合并?

kjh*_*hes 7 git undo git-merge git-revert git-log

我将beta分支合并到主分支中.我推到原点.我现在希望master在本地和远程合并之前就像它一样.

撤消已经推送的合并的一个很好的答案表明

git revert -m 1 commit_hash
Run Code Online (Sandbox Code Playgroud)

如果这确实是要走的路,我该如何确定commit_hash?我没有成功尝试merge-base返回的哈希:

$ 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
Run Code Online (Sandbox Code Playgroud)

我已经检查了分支的git-log和gitk再现,但是它们很长,我不太清楚我的解释,觉得我应该寻求帮助才能做出更大的混乱.Beta来自v2,它来自master.随着我与主人保持最新的分支机构,我们已经有一些从大师到v2和beta的合并.从beta到Master的方向的合并是我想纠正的错误.

一旦我确定了合并点,如果我发现在合并之后对master进行的任何提交真的应该在beta分支上,那么移动它们的最佳方法是什么?

Pet*_*oes 5

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

要找到合并提交尝试: git log master ^beta --ancestry-path --merges

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

但请阅读 Linus 的文章:http : //www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt