如何优化远程GIT仓库 - 主要是Heroku

4

最近我将大量文件添加到本地仓库,并将这些文件推送到其他仓库。在意识到这一点后,我在该主题上进行了一些搜索,并使用git reset完全删除了这些文件。我还做了一些其他优化仓库的事情(git gc,repack)。现在,我的本地仓库副本不到100MB,而不是超过400MB。问题是,我的Heroku网站上的仓库仍然列为400MB,我不确定是否需要做一些事情才能将所有更改反映到远程仓库中?


3
git gc 内部调用 git repack,因此通常不需要直接使用 git repack 进行打包。 - Cascabel
如果你有能力将其置于维护模式,你可以尝试将一个微小的git repo推送到Heroku上,覆盖它。你会收到警告,请按照警告强制推送(我不记得具体细节了)。然后将你的真实repo强制上传到那里。这并不是一个真正的答案,因为我不知道git gc如何改变你的git历史记录与那些文件的关系。 - oma
2个回答

7
与本地仓库一样,git gc是一个操作,它将清除所有松散的对象(例如不再是历史记录一部分的文件块)。当您可以访问远程时,可以直接执行此操作。如果绝对没有办法做到这一点,那么您就必须等待其中一个推送触发 git gc --auto。这是肯定会发生的,所以除非仓库占用了400MB(例如为托管付费),否则这不是真正的问题。从仓库中提取/拉取/克隆的任何人都只会获取他们需要获取的内容,即100MB。
我相信github也会定期在仓库上运行git gc;我不知道Heroku是否有类似的操作。

Github 似乎不会定期运行垃圾回收(或者至少不会在没有活动的存储库上运行)。 - Romuald Brunet
@Romuald 我认为它实际上是由 git 在推送时间间接运行的。但我不确定如何知道它是否在没有活动的远程存储库上运行 - 它不应该产生除仓库大小以外的任何可见变化,而且仓库不能保证重新打包足以显著改变大小。 - Cascabel

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接