Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何优化远程GIT回购-主要是Heroku_Git_Github_Heroku - Fatal编程技术网

如何优化远程GIT回购-主要是Heroku

如何优化远程GIT回购-主要是Heroku,git,github,heroku,Git,Github,Heroku,最近,我在本地repo中添加了大量文件,并将这些文件推到了其他存储库中。在我意识到这一点后,我在谷歌上搜索了一下这个主题,并完全使用git reset删除了这些文件。我还做了一些其他的事情来优化repo(gitgc,repack)。现在,我的回购协议本地副本从超过400MB降至100MB以下。但问题是,我在heroku站点上的repo仍然被列为400MB,我不确定是否应该做些什么来反映远程repo的所有变化?与本地repo一样,git gc是一个将清除所有松散对象的操作(如不再属于历史记录的文件

最近,我在本地repo中添加了大量文件,并将这些文件推到了其他存储库中。在我意识到这一点后,我在谷歌上搜索了一下这个主题,并完全使用git reset删除了这些文件。我还做了一些其他的事情来优化repo(gitgc,repack)。现在,我的回购协议本地副本从超过400MB降至100MB以下。但问题是,我在heroku站点上的repo仍然被列为400MB,我不确定是否应该做些什么来反映远程repo的所有变化?

与本地repo一样,
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