我有一个名为" master.git"的git Bare存储库,我经常运行" git gc -prune =现在",以定期进行。
我还有另一个名为" slave.git"的Git Bare存储库,该存储库是使用" Master.git"的MIRROR选项创建的。但是我已经停止了" git gc",甚至不会通过在gitconfig中自动运行。
通过与master.git.git-> slave.git.git
推动 - force -mirror选项,将"从slave.git"与" master.git"保持同步。Master.git存储库将从开发人员和 slave.git 中获取更改, not get 从开发人员那里进行任何更改,就像读取单。
因此,问题是Master.git存储库是否定期进行gc,并且其更改被镜像选项推向从slave.git。镜像已经GC'Ed存储库奴隶不需要垃圾收集吗?
我有一个名为" master.git"的Git Bare存储库,我定期定期运行
git gc --prune=now
。
这肯定是过度的。做例如GC之前和之后的存储库中的du -sh objects
查看您节省了多少空间。我会推荐git gc --auto
。
通过与master.git-git-> slave.git […]推动
--force --mirror
选项的"从slave.git"与" master.git"同步,将需要一个" git gc"以保持运行以保持它优化了或既然我们正在镜像已经GC的存储库从属。git不需要垃圾收集?
当您按下或获取时,将在包装中发送新对象。当有太多的情况下,git gc
将融合包装(现在有50个,它是从2008年的20种筹集的),因此最终它值得一提。
git push --mirror
的镜像方面意味着refs(分支和标签)以相同的名称可用,并指向与源相同的对象。这并不意味着底层数据库是确切的镜子。
是的,您仍然需要在镜像目的地中进行gc
,因为放弃旧物体时会累积垃圾。推动操作不会仅仅因为对象不再存在于源中的对象。