如何优化远程GIT回购-主要是Heroku
最近,我在本地repo中添加了大量文件,并将这些文件推到了其他存储库中。在我意识到这一点后,我在谷歌上搜索了一下这个主题,并完全使用git reset删除了这些文件。我还做了一些其他的事情来优化repo(gitgc,repack)。现在,我的回购协议本地副本从超过400MB降至100MB以下。但问题是,我在heroku站点上的repo仍然被列为400MB,我不确定是否应该做些什么来反映远程repo的所有变化?与本地repo一样,如何优化远程GIT回购-主要是Heroku,git,github,heroku,Git,Github,Heroku,最近,我在本地repo中添加了大量文件,并将这些文件推到了其他存储库中。在我意识到这一点后,我在谷歌上搜索了一下这个主题,并完全使用git reset删除了这些文件。我还做了一些其他的事情来优化repo(gitgc,repack)。现在,我的回购协议本地副本从超过400MB降至100MB以下。但问题是,我在heroku站点上的repo仍然被列为400MB,我不确定是否应该做些什么来反映远程repo的所有变化?与本地repo一样,git gc是一个将清除所有松散对象的操作(如不再属于历史记录的文件
git gc
是一个将清除所有松散对象的操作(如不再属于历史记录的文件的blob)。当您可以访问远程设备时,您可以直接执行此操作。如果绝对无法执行此操作,那么您将被困在等待某个推送触发程序触发git gc--auto。这最终肯定会发生,因此除非回购占用400MB(例如,为托管支付更多费用)确实存在问题,这不是一个真正的问题。任何从回购中获取/提取/克隆的人都会得到他们需要的,即100MB
我相信github也会定期在存储库上运行git gc
;我不知道Heroku是否会这样做。请查看
抛出一个Jenkins实例并不时从构建服务器调用它非常容易。
git gc
在内部调用git repack
,因此通常不需要直接重新打包。如果您有能力将其关闭,进入维护模式,您可能会尝试将一个小小的git repo推送到heroku,覆盖它。您需要我会有警告,按照它们强制推送(我不记得细节)。然后在那里强制执行真正的repo。这不是一个真正的答案,因为我不知道git gc如何使用这些文件更改git历史。Github似乎不会定期运行gc(或者至少在没有活动的存储库上)@Romuald我认为它实际上是由git在推送时间接运行的。但我不确定您如何知道它是否在没有活动的远程存储库上运行-除了回购大小之外,它不应该产生任何远程可见的更改,而且回购也不必重新打包到足以显著改变这一点。
heroku repo:gc -a appname