我有一个dev
分支,该分支已经与分支featureA
和featureB
合并。
我将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
)中?
答案 0 :(得分:-1)
通常我会尽量避免退回,因为根据我的经验,退回会引起混乱,有时我最终决定采摘樱桃。
我会在dev分支中还原功能b的合并,然后将dev合并到master中,而不是将合并还原到master中。
我不确定git是否允许您现在这样做。您可能需要还原母版中的还原。