首页 > 解决方案 > git revert 后,合并显示没有更改并且已经更新

问题描述

我有一个dev已经与分支合并的分支featureA,并且featureB. dev我将该分支合并到master并推送到远程。后来我发现featureB还没有准备好合并,master因为有一个错误的提交。所以我恢复了 dev-->的合并master

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

然后我试图合并featureAmaster. 但我不能合并。它会说Already up to date

正如 Linus Torvalds 所说,我知道原因,

Linus 解释了这种情况:

恢复常规提交只是有效地撤消了该提交所做的事情,而且相当简单。但是还原合并提交也会撤消提交更改的数据,但它对合并对历史的影响绝对没有任何作用。

所以合并仍然存在,它仍然会被视为将两个分支连接在一起,并且未来的合并会将合并视为最后一个共享状态 - 恢复引入的合并的恢复根本不会影响它。

因此,“还原”撤消了数据更改,但从某种意义上说,它不是“撤消”,因为它不会撤消提交对存储库历史的影响。

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

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

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

标签: gitgitlabgit-mergegit-remotegit-revert

解决方案


一般来说,我会尽量避免回复,因为根据我的经验,它们会造成混乱,有时我最终会选择樱桃采摘。

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

我不确定 git 现在是否允许你这样做。您可能必须还原主服务器中的还原。


推荐阅读