应用已合并然后还原的更改

时间:2017-06-19 23:44:48

标签: git merge

问题是:我们要将topic合并到master,但topicmaster的祖先,因此合并是无操作。 topicmaster之间的提交已将先前topic的合并恢复为master。它使用reset而不是revert来做到这一点。现在,diff之间的master..topic显示了我们要应用的所有更改。我们如何应用这些变化?

       C      B      A      D
master * ---- * ---- * ---- * ---- * 
                       \ 
                        \
                   topic * ---- * ---- * ---- * 
  • Amerge
  • B还原了AD但未使用revert
  • C添加了其他提交

编辑:

B还原的时间超过A,但我们只想重新应用A引入的更改。因此,还原B无法实现我们的目标,因为它将恢复D

2 个答案:

答案 0 :(得分:3)

有一些选择:

  1. 您可以还原B并还原D. 恢复B将恢复D,因此您再次恢复D.

  2. 如果差异显示您想要应用的内容,您可以从差异创建补丁文件并将该补丁文件应用于主分支。

  3. 创建补丁:

    git diff master..topic > file.patch
    

    转到掌握并应用补丁:

    git apply file.patch
    

答案 1 :(得分:0)

看看:

Re-doing a reverted merge in Git

简短回答:恢复还原。但是你应该在git文档中看到一些问题