众所周知,我们可以定期运行git gc
将对象打包在下.git/objects
。
但是,对于远程中央Git存储库(是否裸露),经过多次推送之后,myproj.git/objects
;下有很多文件;每次提交似乎都在那里创建了一个新文件。
如何打包那么多文件?(我的意思是位于远程中央裸存储库上的存储库,而不是本地克隆存储库上的存储库。)
进行提交后,应将远程仓库配置为根据需要运行gc。请参见gc.auto
ingit-gc
和git-config
手册页的文档。
但是,远程回购不需要太多的垃圾回收,因为它很少有悬而未决的提交。这些通常是由分支删除和重新设置之类的东西引起的,通常仅在本地存储库中发生。
因此需要更多gc来进行重新打包,这是为了节省存储空间而不是删除实际的垃圾。该gc.auto
变量足以解决此问题。
不必要。如果我们推动一个bugfix分支供多个人进行协作,然后在合并到master时进行一个基础调整,那么我们实质上是在远程进行基础调整。即使我们不执行重新基准化,远程回购协议仍应经常打包东西,以便新手可以更快地克隆。
@Ryuu,是的,你说的很对。这是远程回购可能以松散的对象结束的方式之一。但是,在谈论重新定级时,我确实说了“通常”。也许随着人们对git的使用越来越复杂,这种情况变得越来越普遍。即便如此,自动垃圾收集最终还是应该照顾好它。
我认为执行强制推送以覆盖上次提交推送(?)时也会产生松散的提交,但我可能是错的。有什么想法吗?
@Sнаđошƒаӽ是的,这会创建松散的对象。它属于重定基调的标题,尽管在远程存储库中并不常见,但仍会发生,特别是在请求请求工作流或任何其他允许用户在远程存储库上拥有私有分支的工作流中,他们可以在远程存储库中对其进行修改。非快进方式。当我在2010年撰写本文时,GitHub并不像现在这样占主导地位。