【问题标题】:Reverting a merge in GIT and then re-merging again after making a fix恢复 GIT 中的合并,然后在修复后再次重新合并
【发布时间】:2014-08-12 14:32:38
【问题描述】:

我有两个并行项目,有两个分支 A 和 B。

每个分支都应该单独开发,并在开发完成后合并。

我错误地将分支 B 两次合并到分支 A 中。合并后,两个分支都有更多的提交。

合并包含一些已创建到分支 B 的新文件,并且分支 A 和分支 B 共享的文件也很少被分支 B 修改。

我想要做的是,恢复分支A中发生的合并,然后继续分支A和分支B的开发(在恢复后对两个分支进行更多提交),然后能够合并这些分支稍后再次。

我在这里做了一些研究,并提出了以下方案。更熟悉 git 的人可以建议这是否是实现我想要实现的目标的好方法吗?

假设合并提交是:123

  • 在分支 A 中运行 revert 命令

git revert -m 1 123

(由于还原,将所有删除提交到分支 A)

  • 分别继续分支 A 和分支 B 的工作。

  • 稍后,再次合并这两个分支。我将首先基于 A 创建一个新的分支 C。然后我会在分支 C 中还原原始还原。然后我会将分支 B 合并到分支 C。

git checkout -b C

git 还原 123

git 合并 B

这听起来像是解决这个问题的正确方法吗?

任何帮助将不胜感激。提前致谢。

【问题讨论】:

标签: git merge branch


【解决方案1】:

合并基本上只是与两个父级的提交,它们位于合并的分支之一上。话虽如此,其中一个分支(在您的情况下为 B)永远不会更改,而合并只是在分支 A 上提交。

所以是的,您可以将它们恢复为继续工作,就好像什么都没发生一样(假设提交足够新,以至于恢复产生了很好的结果)。

您可以稍后合并它们而不恢复还原,因为新合并将包括旧合并(不知道那句话是否有意义)。

所以你的方法是

  • 结帐虚拟分支
  • 恢复合并
  • 检查是否损坏了东西
  • 合并恢复的虚拟分支返回

现在还有一个chapter on undoing merges 有这方面的策略(我刚刚略读过)

【讨论】:

    猜你喜欢
    • 2021-11-05
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多