如何撤销已经推送到远程的合并提交?

1725

git revert <commit_hash> 单独使用不起作用。显然,必须指定-m


3
请查看这个问题的答案:https://dev59.com/WnE95IYBdhLWcg3watQ3 - eugen
3
相关链接:撤销Git合并操作? - user456814
1
这里的链接是最好的例子,说明如何撤销合并提交:http://www.christianengvall.se/undo-pushed-merge-git/ - S.K. Venkat
1
这是一个例子,说明 git 的设计与每个人都使用的 git-flow 工作流不匹配。如果你已经检出了 develop 分支,那么你肯定想要还原引入错误的 2 次提交的特性分支,而不是多年共享的开发分支。感觉需要用 -m 1 来选择它非常荒谬。 - pkamb
2
只有一个我以前从未想过的建议 - 如果其中一个分支的提交列表很小,您可能会更舒适地还原单个提交,而不是整个提交分支。 - Sridhar Sarnobat
显示剩余2条评论
21个回答

-2

正如Ryan所提到的,git revert可能会使合并变得困难,因此git revert可能不是你想要的。我发现在这里使用git reset --hard <commit-hash-prior-to-merge>命令更有用。

完成硬重置后,您可以强制推送到远程分支,即git push -f <remote-name> <remote-branch-name>,其中<remote-name>通常被命名为origin。从那时起,您可以选择重新合并。


6
除非你是唯一使用该仓库的人,并且确切知道自己在做什么,否则涉及强制推送的任何操作都不是一个好主意。使用git revert进行回滚操作,如果需要再次恢复,可以考虑使用git revert撤销回滚操作,这样更为安全可靠。 - oyvind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接