如何自动压缩大量提交?

How to squash a lot of commits automatically?

我有很多提交,我想将它们压缩成一个提交。当然,我可以将每次提交的 pick 替换为 squash,但我有数百次提交。 有没有办法自动执行此操作?

如果您有一系列提交

... - C1 - C2 - C3 - C4 - C5 <- HEAD

并且您想将 C2 压缩到 C5 到单个提交中,您可以将分支重置为 C1,同时保持工作目录和暂存区的状态,ans然后再次提交:

git reset --soft C1
git commit

这将要求您重新输入提交信息。您当然可以在重置之前使用 git log 并复制要保留的提交消息部分。

如果你想将一个功能分支压缩成 master 分支之上的单个提交,另一种选择是使用 --squash 选项到 git merge