首页 > 解决方案 > git rebase --preserve-merges 合并冲突

问题描述

我目前正在从 git 存储库中清除密码和其他敏感数据。我仍然想尽可能地保留历史,包括合并。所以我在做git rebase --perserve-merges -i <commit>。然后我编辑说明以编辑我关心的特定提交。在变基期间,我很惊讶地看到与我的密码编辑无关的合并冲突。我相信这些是历史上一些现有合并发生的冲突,并且在合并时得到了解决。为什么 git 不能重放解决这些冲突的提交?

标签: gitgit-mergerebase

解决方案


--preserve-merges不兼容--interactive

(此答案中的所有引号均来自git help rebase。)

--interactive这在内部使用了 --interactive 机制,但是除非您知道自己在做什么(请参阅下面的错误),否则将其与选项显式结合通常不是一个好主意。

此外,以下成对的选项不兼容:

  • --preserve-merges--interactive

--rebase-merges改为使用

--rebase-merges在 Git 2.18中引入,并在 Git 2.22--preserve-merges中正式弃用。

--rebase-merges模式在精神上与已弃用的模式相似,--preserve-merges但适用于交互式 rebase,其中提交可以随意重新排序、插入和删除。

它仍然可能无法解决您的问题:

这些合并提交中的任何已解决的合并冲突或手动修改都必须手动解决/重新应用。

即使它不能解决您的问题,我认为它肯定会回答您的问题。另外,您无论如何都应该使用此选项,因为--preserve-merges现在已弃用。

有更多的git help rebase评论--rebase-merges。我建议阅读它们。


推荐阅读