大规模的git提交压缩

3

我的公司正在从CVS转换到Git。我们已经使用CVS很长时间了,所以有很多历史记录,手动操作太多。

通过查看日志,发现可以做很多压缩操作。我想要的是钩入一个脚本,比较相邻的两个提交。如果返回true,则连接提交消息并压缩提交。我也可以用一个命令接受两个提交和一个提交消息,然后将它们压缩在一起。

git rebase --interactive与我需要的接近,但"squash"需要过多的手动干预。我还尝试使用"fixup"代替squash,但不想失去提交消息。

有什么好的想法吗?

1个回答

3

--autosquash怎么样?

你可以与git filter-branch结合使用,编写脚本来重命名提交记录。(但是需要注意,filter-branch需要小心使用,并且要阅读其手册中的警告。它不是一个简单易用的命令。)


我可能错了,但这仍然无法解决“消息串联”问题。Autosquash 看起来与 squash/fixup 相同,但基于提交消息。 - Nycto
实际上,你可能只需要使用filter-branch,完全忘记rebase --autosquash。 - dublev
你对于filter-branch的建议是正确的。使用“commit-filter”标志可以让你处理整个repo中的每个提交。在回调脚本中,你可以将消息传递到commit-tree命令中以更改提交消息。你还可以调用skip_commit将当前提交合并到下一个提交中。 - Nycto
@Nycto - 我正在寻找一种自动化/脚本化压缩过程的方法,类似于使用rebase -i时需要手动干预的问题。如果可能,请您详细阐述您的解决方案好吗?非常感谢。 - marked

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