挤压git历史记录

挤压git历史记录,git,Git,我有一个大型的、旧的git repo,在本地Redmine服务器上托管了大量二进制文件。我想在某个特定日期(6个月或12个月前)之前将所有评论挤在一起,以节省一些关于回购规模的信息 有办法做到这一点吗?无论何时更改任何历史记录,更改后的所有提交都将有新的SHA1和。如果只是您使用回购协议,或者您可以轻松地与一组人进行沟通,那么您可以安全地挤压或过滤(见下文)以清理历史记录,然后当他们获取时,他们需要手动将其所有分支标头重置为新标头。不幸的是,如果情况不是这样,那么你只能忍受它。历史一旦公布,就不

我有一个大型的、旧的git repo,在本地Redmine服务器上托管了大量二进制文件。我想在某个特定日期(6个月或12个月前)之前将所有评论挤在一起,以节省一些关于回购规模的信息


有办法做到这一点吗?

无论何时更改任何历史记录,更改后的所有提交都将有新的SHA1和。如果只是您使用回购协议,或者您可以轻松地与一组人进行沟通,那么您可以安全地挤压或过滤(见下文)以清理历史记录,然后当他们获取时,他们需要手动将其所有分支标头重置为新标头。不幸的是,如果情况不是这样,那么你只能忍受它。历史一旦公布,就不能改变

现在,您可以使用git rebase删除提交。这是缓慢和痛苦的,但它可以工作。您还可以使用git过滤器分支删除所有二进制文件。我必须自己在回购协议上这样做,这相当容易。如果您的所有二进制文件都在一个目录中,那么您可以使用git filter branch的--subdirectory标志(当然,请阅读帮助页面)在历史记录中删除给定范围内所有提交中该子目录中的所有内容。如果它们是分散的,那么您可以给git filter branch一个shell命令行,或者一个shell脚本,以便在每次提交时执行,并且该脚本可以遍历并删除二进制文件以及您希望删除或更改的任何内容。同样,请参见帮助页面。但我认为git过滤器分支绝对是这种情况下的发展方向