我怎样才能在Git远程仓库上触发垃圾收集?
正如我们所知,我们可以定期运行git gc
来打包.git/objects
下的.git/objects
。
然而,在远程中央Git存储库(裸露或不存在)的情况下,在多次推送后, myproj.git/objects
下有许多文件; 每个提交似乎都会在那里创建一个新文件。
我如何打包许多文件? (我的意思是远程中央裸仓库中的仓库,而不是本地克隆仓库。)
提交后,远程回购应配置为根据需要运行gc。 在git-gc和git-config手册页中查看gc.auto的文档。
不过,远程仓库不需要太多的垃圾收集,因为它很少会有悬而未决(无法访问)的提交。 这些通常来自分支删除和重新分配等事情,这通常只发生在本地回购中。
所以gc需要更多的重新包装,这是为了节省存储空间而不是去除实际的垃圾。 gc.auto变量足以处理这个问题。
虽然您应该有一些定期自动处理此问题的流程,但运行并不成问题
git gc
在裸仓库
git@domU:/pix/git/repositories/abd.git$ ls -l
total 28
drwxrwxr-x 2 git git 6 2010-06-06 02:44 branches
-rw-rw-r-- 1 git git 66 2010-06-06 02:44 config
-rw-r--r-- 1 git git 23 2011-03-15 18:19 description
-rw-rw-r-- 1 git git 23 2010-06-06 02:44 HEAD
drwxrwxr-x 2 git git 4096 2010-06-06 02:44 hooks
drwxrwxr-x 2 git git 20 2010-06-06 02:44 info
drwxrwxr-x 260 git git 8192 2010-09-01 00:26 objects
drwxrwxr-x 4 git git 29 2010-06-06 02:44 refs
$ git gc
Counting objects: 3833, done.
Compressing objects: 31% (1085/3500)...
这个问题应该说明你应该多长时间运行一次垃圾回收。
最简单的选择是在Windows中使用计划任务或在Unix中使用cron作业来定期运行git gc
。 这样你甚至不需要考虑它。
上一篇: How can I trigger garbage collection on a Git remote repository?
下一篇: Git: How to ignore fast forward and revert origin [branch] to earlier commit?