git revert 后,合并显示没有更改并且已经更新
Posted
技术标签:
【中文标题】git revert 后,合并显示没有更改并且已经更新【英文标题】:After git revert, merge showing no changes and already updated 【发布时间】:2019-02-28 23:48:56 【问题描述】:我有一个 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,但它确实如此 合并对历史的影响没有任何影响。
所以合并仍然存在,仍然会被视为加入 两个分支在一起,未来的合并将看到合并为 最后一个共享状态 - 以及恢复合并的恢复带来 in 根本不会影响。
所以“还原”会撤消数据更改,但它不是 “撤消”是指它不会撤消提交对 存储库历史记录。
因此,如果您将“还原”视为“撤消”,那么您将始终 错过这部分回复。是的,它会撤消数据,但不,它不会 撤消历史记录。
在这种情况下,将 dev
再次合并到 master
的唯一解决方案是 revert the revert commit
。但我只想合并dev
分支中包含的一个分支,即featureA
如何将分支 (featureA
) 合并到包含在还原合并分支 (dev
) 中的主线分支 (master
)?
【问题讨论】:
同样的问题,没有任何答案。 【参考方案1】:一般来说,我会尽量避免回退,因为根据我的经验,它们会导致混乱,有时我最终决定选择樱桃采摘。
我会在 dev 分支中恢复功能 b 的合并,然后将 dev 合并到 master,而不是将合并恢复到 master。
我不确定 git 现在是否允许你这样做。您可能必须在 master 中恢复 revert。
【讨论】:
以上是关于git revert 后,合并显示没有更改并且已经更新的主要内容,如果未能解决你的问题,请参考以下文章