git恢复后,合并显示没有更改并且已经更新

时间:2018-09-25 11:07:45

标签: git gitlab git-merge git-remote git-revert

我有一个dev分支,该分支已经与分支featureAfeatureB合并。 我将dev分支合并到master并推送到远程。后来我发现featureB尚未准备好与master合并,因为提交错误。因此,我恢复了dev-> master的合并。

git revert -m 1 <merge-commit-hash>

然后,我尝试将featureA合并到master。但是我不能合并。它会说Already up to date

我知道莱纳斯·托瓦尔兹(Linus Torvalds)所说的原因,

  

Linus解释了这种情况:

     

还原常规提交只会有效撤消该提交       做到了,而且相当简单。但是还可以还原合并提交       撤消提交已更改的 data ,但绝对可以       合并对历史的影响不大。

     

因此合并将仍然存在,并且仍将被视为加入       这两个分支在一起,将来的合并将看到该合并为       最后一个共享状态-以及还原了合并带来的还原       完全不会影响。

     

因此,“还原”撤消数据更改,但这不是       “撤消”在某种意义上说不会撤消提交对       存储库历史记录。

     

因此,如果您将“还原”视为“撤消”,那么您将始终       错过这部分还原。是的,它撤消数据,但是不,它不会       撤消历史记录。

在这种情况下,将dev再次合并到master的唯一解决方案是revert the revert commit。但是我只想合并dev分支中包含的一个分支,即featureA

如何将分支(featureA)合并到包含在还原的合并分支(master)中的主线分支(dev)中?

1 个答案:

答案 0 :(得分:-1)

通常我会尽量避免退回,因为根据我的经验,退回会引起混乱,有时我最终决定采摘樱桃。

我会在dev分支中还原功能b的合并,然后将dev合并到master中,而不是将合并还原到master中。

我不确定git是否允许您现在这样做。您可能需要还原母版中的还原。