我已经“继承”了一个肮脏的git存储库,其中包含约5k个有效提交和约5万个垃圾邮件提交(这是以前是世界可写的wiki的编辑历史记录)。我们正在迁移格式,因此这是重写历史记录的好时机。我不想完全放弃历史记录,但是无论从提交量还是原始内容量来看,垃圾邮件都是压倒性的。回滚到最后一次良好提交的旧审核技术留下了很多垃圾。
我可以发现大约80%的错误提交没有太多使用麻烦git log -S
和一些正则表达式的工作。大多数垃圾邮件内容非常明显。问题是我不确定要删除的大量提交会如何处理。
请注意,我非常熟悉git
并git rebase
每小时使用一次(除非git revise承担了很多负载,否则每分钟都会这样做),而且我知道如何手动完成此操作,但是我需要一个自动化的解决方案。通常情况下,我会转向git filter-branch
,但是我不确定要使用哪种工具来检查当前差异。
我曾考虑过编写一个脚本来操纵一个rebase脚本,但是我认为这会给我带来误报的麻烦。我可能可以捕获和删除原始的删除和回滚,但是当我错过该方程式的一侧时会发生什么?我希望可能的匹配中的REST成功,如果其中之一没有完全重新设置基准就不会失败。
注意我不想基于我的匹配来操纵文件的内容或添加/删除文件,我想检查补丁的内容并决定基于此内容进行选择或删除。
最好的git
工具是什么?