我有一个庞大的旧git repo,其中包含许多在本地Redmine服务器上托管的二进制文件。我想在特定日期(6个月或12个月前)之前将所有评论压缩在一起以节省一些我的回购邮件的大小。
有办法做到这一点吗?
答案 0 :(得分:3)
每当您更改任何历史记录时,更改后的所有提交都将具有新的SHA1总和。如果只是你使用repo,或者你可以轻松与之交流的一组选择,那么你可以安全地压缩或过滤(见下文)来清理历史记录,然后当他们获取时,他们需要手动重置他们所有的分支都在新的头上。如果这不是 那么情况,那么不幸的是你将不得不忍受它。历史发布后,不得更改。
现在,您可以使用git rebase删除提交。这是缓慢而痛苦的,但它可以奏效。您还可以使用git filter-branch删除所有二进制文件。我必须自己做一个回购,这很容易。如果所有二进制文件都在一个目录中,那么您可以使用git filter-branch的--subdirectory标志(当然,请阅读帮助页面)从历史记录中的所有提交中删除该子目录中的所有内容。如果它们是分散的,那么你可以给git filter-branch一个shell命令行,或者一个shell脚本在每次提交时执行,并且该脚本可以通过并删除二进制文件以及你想删除或更改的任何其他内容。再次,请参阅帮助页面。但我认为git filter-branch绝对是这种情况下的方法。