停止git gc - aggressive,这是件坏事吗?

imy*_*mmy 31 git git-gc

我正在运行一个git gc --aggressive非常大的回购(apx 100 gb).它已经运行了两个晚上,并且在几个小时之后,它一直被困在:"压缩对象:99%(76496/76777)"

如果我Ctrl- C这个过程,后果是什么?我的回购会无法使用吗?我的直觉说不,但我想要一些意见.谢谢!

Set*_*son 31

git应该永远不会受到这样的干扰.如果你担心,我建议Ctrl+ Z然后运行一个git fsck --full以确保系统是一致的.

有许多git-config变量可能有助于你的git-gc更快.我在一个特定的大型仓库上使用以下内容,但还有更多选项可供随机尝试(或仔细研究,无论哪个).

git config pack.threads 1
git config pack.deltaCacheSize 1
git config core.packedGitWindowSize 16m
git config core.packedGitLimit 128m
git config pack.windowMemory 512m
Run Code Online (Sandbox Code Playgroud)

如果您的问题是内存不足,这些只会有所帮助.


Mal*_*sen 7

FWIW,我刚刚git gc用CTRL + C 中止了一个存储库.git fsck现在显示以下错误:

error: HEAD: invalid sha1 pointer [...]
error: refs/heads/master does not point to a valid object!
notice: No default references
Run Code Online (Sandbox Code Playgroud)

还有不少

dangling commit [...]
Run Code Online (Sandbox Code Playgroud)

我不打算对此进行调查,但我想指出,我将避免中止git gc.


Von*_*onC 5

注意:git 2.0 有一个有趣的演变(2014 年第 2 季度)

\n
\n

“git gc --aggressive”学习了“--深度”选项和“gc.aggressiveDepth”配置变量,以允许使用比内置默认值 250 更不疯狂的深度。

\n
\n

这在提交 125f814中进行了描述,由Nguy\xe1\xbb\x85n Th\xc3\xa1i Ng\xe1\xbb\x8dc Duy 完成 ( pclouds)完成:

\n
\n

1c192f3gc --aggressive:让它变得非常激进 - 2007-12-06)设置--depth=250默认值时,它并没有真正解释背后的原因,特别是--depth=250.

\n

下面一封来自 Linus 的旧邮件详细解释了这一点。
\n长话短说,--depth=250是一个磁盘保护程序和性能杀手
\n并不是每个人都同意这种侵略性。
\n让用户配置它。

\n
\n

这可以帮助避免在大型存储库上运行该命令时遇到的“冻结”问题。

\n