很久以前以不冲突的方式编辑 git 提交会导致冲突

Editing git commit in nonconflicting way from long ago results in conflicts

我们有一些数据被意外存储在我们的一个配置文件中,并在没有人注意的情况下滞留了大约一个月。这是一个用户访问权限非常有限的私人存储库,因此我们想在与其他人共享存储库之前重写历史并提取数据。

自不希望的提交以来配置文件没有更改,所以我尝试了

git rebase -i $parent_commit^

并选择编辑相应的提交。继续之后,它经历了大约 30 多次提交,然后在一个完全不相关的文件上发生合并冲突。我原以为在这种情况下变基应该可以正常工作,因为配置文件没有被更改。

默认情况下 rebase 不会尝试合并,所以在执行

之后
rebase --preserve-merges -i $parent_commit^

我只遇到了一些由于某种原因无法合并某些文件的错误。在这种情况下,输出给了我合并提交 ID,所以做

git checkout <merge_commit_id> -- file/that/is/conflicting

会让我达到我想要的状态。