具有合并冲突的git rebase --interactive --preserve-merges

5

我正在从一个git存储库中清除密码和其他敏感数据。 我希望尽可能保留历史记录,包括合并记录。 因此,我使用git rebase --interactive --preserve-merges <commit>进行操作。 然后,我编辑指令以编辑我关心的特定提交。 在重新应用提交过程中,我惊讶地发现与我编辑密码无关的合并冲突。 我相信这些是在历史记录中某些现有合并时发生的冲突,并且在合并时已经解决。 为什么git不能只重播解决这些冲突的提交?

1个回答

5

--preserve-merges不能与--interactive一起使用。

(以下所有引用来自git help rebase)

这在内部使用--interactive工具,但是显式地将其与--interactive选项结合使用通常不是一个好主意,除非您知道自己在做什么(请参见下面的BUGS)。

以及

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

  • --preserve-merges--interactive

改用--rebase-merges

--rebase-merges是在Git 2.18中引入的,而--preserve-merges则已在Git 2.22中正式弃用

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

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

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

即使它不能解决您的问题,我认为这绝对回答了您的问题。此外,您应该使用此选项,因为--preserve-merges现在已弃用。

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


哪个版本引入了 --rebase-merges - Code-Apprentice
@Code-Apprentice 更新了答案并附上了版本信息。顺便问一下,你还需要再次处理合并冲突吗? - Inigo
我不确定你为什么编辑了我的问题。你的大部分修改都改变了我的问题,使其偏离了我最初的意图。 - Code-Apprentice
我也同意“还是”这个词并不需要。与此同时,你的编辑增加了一些我原来写作中没有的长句子。 - Code-Apprentice
谢谢您的建议。我认为我们已经改进了这个问题。我也准备好继续前进了。 - Code-Apprentice
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接