自动变基以删除修改文件的提交?

Automatic rebase to drop a commit that modifies a file?

我是 git rebase 的新手,并且做了一些有点古怪和愚蠢的事情。 所以假设我有这些提交,它们都修改了同一个文件 file.txt

a -> b -> c -> d -> e

我只想删除提交 c

我的策略是将 b 变基到 d,保持 d 的变化,所以它看起来像这样

a -> b -> d -> e

我正在尝试使用此命令执行此操作

git rebase --rebase-merges --onto c^ c

这导致合并失败,我也用 -s ours 尝试过,但也失败了。

然而,当每次提交修改不同的文件时,这会起作用。

我应该怎么做才能实现这个目标?

在这种情况下,您几乎肯定会遇到冲突,因为确实存在冲突,而且没有办法避免处理这个问题。您必须解决冲突,然后 运行 git rebase --continue.

这在每次提交修改不同文件时有效,因为涉及不同文件的提交通常不会发生冲突(除非有重命名或复制)。