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

Posted

技术标签:

【中文标题】git revert 后,合并显示没有更改并且已经更新【英文标题】:After git revert, merge showing no changes and already updated 【发布时间】:2019-02-28 23:48:56 【问题描述】:

我有一个 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,但它确实如此 合并对历史的影响没有任何影响。

所以合并仍然存在,仍然会被视为加入 两个分支在一起,未来的合并将看到合并为 最后一个共享状态 - 以及恢复合并的恢复带来 in 根本不会影响。

所以“还原”会撤消数据更改,但它不是 “撤消”是指它不会撤消提交对 存储库历史记录。

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

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

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

【问题讨论】:

同样的问题,没有任何答案。 【参考方案1】:

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

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

我不确定 git 现在是否允许你这样做。您可能必须在 master 中恢复 revert。

【讨论】:

以上是关于git revert 后,合并显示没有更改并且已经更新的主要内容,如果未能解决你的问题,请参考以下文章

合并来自 git revert 的冲突 - 我应该接受当前的更改还是传入,为啥?

git revert 合并策略的问题(他们的)

Git Revert命令拒绝恢复合并

ideasvn没有mergesource绿色加号

git revert和git reset的区别

git reset --hard xxx、git reset --soft 及git revert的区别