清理Git仓库并强制推送到服务器?

43
似乎git gc --aggressive真正清理了我的仓库,但当我执行 git push 时,一切都已经是最新的了。有没有方法可以清理服务器呢?
3个回答

24

2012年: 我知道GitHub会定期运行git gc,因为GitHub支持在这个帖子中提到了。


自2012年以来(至2023年):

我不知道你能否强制运行它。
我在GitHub hooks中没有看到这样的服务。

正如“如何从GitHub中删除一个悬空的提交?”所示,似乎没有对远程GitHub存储库执行任何git gc操作。

这意味着任何远程存储库的清理都需要向GitHub Support发出明确请求。


http://metalinguist.wordpress.com/2007/12/06/the-woes-of-git-gc-aggressive-and-how-git-deltas-work/ - Dan Rosenstark
@Yar 有关gc-aggressive的有趣链接。我想只有Github支持才有明确的答案。 - VonC
1
如果在服务器端存储库中从未运行 gc,会发生什么?旧对象只会堆积不清,即使它们变成了孤儿也永远不会被清理吗? - Dan Rosenstark
1
@Yar 这就是想法,但我不认为任何负责存储代码库的服务会移除该功能。 - VonC
@spamove 谢谢您的更新。我已将您的评论包含在答案中以增加可见性。 - VonC
显示剩余2条评论

19

Github似乎不会为您清理任何内容:

警告:本文告诉您如何使在GitHub.com上的存储库中的提交包含的敏感数据对任何分支或标签都不可达。但是,这些提交可能仍然可以通过克隆或派生存储库,在GitHub上缓存视图中直接访问其SHA-1哈希值以及通过引用它们的任何拉取请求中访问。您无法从其他用户的存储库克隆中删除敏感数据,但是您可以通过联系GitHub支持永久删除GitHub上拉取请求中对敏感数据的缓存视图和引用。

https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository


请注意,链接到的页面不再包含此部分或(据我所见)等效警告。我不知道这是否意味着他们现在更积极地清除无法到达的SHA-1,还是仅仅删除了警告。 - Joachim Sauer
GitHub 的服务器不会运行垃圾回收:https://dev59.com/hG855IYBdhLWcg3wZzXf#4368673;链接的讨论已经过时(现在是 404 错误页面);即使支持页面也说明悬空提交会保留。 - spamove
更新的报价和链接 - Carl G
更新的报价和链接 - Carl G

9

你需要在服务器端运行相同的命令。大多数人只需设置一个cron作业或类似的东西,定期进行此类维护。


8
那GitHub或者Unfuddle呢? - Dan Rosenstark
1
@DanRosenstark 这完全取决于供应商。大多数(至少是 GitHub 和 GitLab)由于兼容性原因,默认情况下不执行 git GC。在某些设置中,您可以手动执行此操作,https://dev59.com/zloU5IYBdhLWcg3wsYXM - spamove

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