如何防止GIT中的垃圾收集?

Cod*_*rer 19 git garbage-collection

Git神秘地"不时"运行垃圾收集,并删除和孤立的提交.

https://www.kernel.org/pub/software/scm/git/docs/git-gc.html

从科学角度来说,这将在您意识到您确实需要刚刚删除的提交之前大约6-8小时发生.

我宁愿没有Git删除我的文件.如何完全禁用自动垃圾收集?

SLa*_*aks 27

您刚刚链接到的同一页面:

一些git命令可以自动运行git gc; 有关详细信息,请参阅下面的--auto标志.如果您知道自己在做什么,并且您想要的是永久禁用此行为而无需进一步考虑,只需执行以下操作:

$ git config --global gc.auto 0
Run Code Online (Sandbox Code Playgroud)

  • @Hatchling:听起来你需要安装git. (5认同)
  • 引用的段落*没有*告诉我们这是否是GC发生的*唯一*机制。OP 说“Git 神秘地‘时不时’运行垃圾收集”,给人的印象是 gc 也可能在用户发出任何 git 命令的情况下*不*触发。保证这实际上不会发生将填补这个答案中的空白。 (2认同)

Von*_*onC 6

另一种方法,最近记录在:
Documentation/config:提及" now"和" never"用于"过期"设置

除了近似风格的值(" 2.months.ago"," yesterday")之外,' gc.*expire*'配置变量的消费者也接受并尊重' now'("立即执行")和' never'("完全禁止").

请参阅Eric Sunshine()提交的8cc8816(2015年7月28日). 建议:Michael Haggerty().(由Junio C Hamano合并- -提交8cc8816,2015年7月28日)sunshineco
mhagger
gitster

这意味着这也会阻止任何gc:

git config --global gc.pruneExpire never
git config --global gc.reflogExpire never
Run Code Online (Sandbox Code Playgroud)

  • 将`gc.auto`设置为零会更好,因为`gc`会自动重新打包对象以提高性能.你真的想要gc,但你不想让东西过期,这正是这些配置参数所做的. (2认同)