【发布时间】:2011-06-12 02:12:58
【问题描述】:
有很多关于在 git 中“撤消”合并是多么不容易的话题。简短版本:如果您撤消合并提交,它还会告诉 git 将来永远不要合并这些更改。
在进行合并时我可以做些什么来缓解这个问题?在很多情况下,撤消合并非常非常有用,仅在软件开发的正常过程中,更重要的是,在需要回滚更改时控制发布分支的状态。
编辑
我在this article 中看到了解决方案,并没有真正将其视为解决方案,更多的是对问题的解释。它需要
- 始终使用 --no-ff
- 当您想要恢复依赖于它们的代码时,请记住所有未完成的合并(这可能是未来的几个小时、几天、一周或几个月……)
我想要什么
这是它在 Subversion 中的工作方式。假设我有一个名为“release-candidate”的分支,它是我们在登台服务器上运行的,也是我们尝试功能的地方。假设我合并到功能 A 分支中。在 Subversion 中,它是一个变更集,所有文件的所有历史都被合并。假设我们不喜欢它,所以我们想把它拿出来。我们只需撤消那个单一的变更集,而不必考虑其他任何事情。我们可以在将来的任何时候将功能分支 A 合并回来,而不必记住我们曾经将它合并并取出。
我希望能够尽可能接近该流程。我想优化“将来不必记住东西”,即使它使事情在某种程度上采取了更多步骤。 (这可能是不可能的......)
【问题讨论】:
-
是否有理由不能使用 git reset --hard ORIG_HEAD 回滚提交?
-
我的回答需要更多信息吗?
-
urschrei:如果我在服务器上的分支上执行此操作,那么要推送结果我必须使用
--force,对吧? -
好的,所以我的问题的答案是“你不能这样做”,但是 adymitruk 已经很好地概述了事后的选项。
-
我真的需要知道你的问题是什么。在 git 中没有什么是 svn 做不到的……或多或少。
标签: git merge rollback undo feature-branch