我在一个非常大的repo(apx 100 gb)上运行git gc --aggressive。它从两天前的晚上就开始运行了,到几个小时前,它已经卡住了:“压缩对象:99%(76496/76777)”如果我按Ctrl-C键操作,会有什么后果?我的回购会无法使用吗?我的直觉告诉我没有,但我想听听你的意见。谢谢你,谢谢
git gc --aggressive
1l5u6lss1#
git应该永远不会受到这样的干扰。如果您担心,我建议Ctrl+Z,然后运行git fsck --full,以确保系统是一致的。有许多git-config变量可以帮助你的git-gc运行得更快。我在一个特定的大型repo上使用以下方法,但还有更多的选择可以随机尝试(或仔细研究,无论哪种)。
git fsck --full
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
字符串只有当您的问题是内存不足时,这些才有帮助。请注意,Brian J Murray报告的最佳(git-gc)性能,pack.threads应该设置为您拥有的核心数量。还要注意VonC的另一个答案,它说你可以通过将gc.aggressiveDepth设置为比默认值250小的值来权衡gc性能和磁盘使用率。
pack.threads
gc.aggressiveDepth
dtcbnfnu2#
FWIW,我刚刚通过使用CTRL+C中止git gc来损坏了一个存储库。git fsck现在显示以下错误:
git gc
git fsck
error: HEAD: invalid sha1 pointer [...] error: refs/heads/master does not point to a valid object! notice: No default references
字符串还有不少
dangling commit [...]
型我不打算对此进行研究,但我想指出,我将避免中止git gc。
iqjalb3h3#
注意:git 2.0(2014年第二季度)有一个有趣的演变:“git gc --aggressive”learned“--depth”选项和“gc.aggressiveDepth”配置变量,以允许使用比内置默认值250更不疯狂的深度。这在commit 125f814中描述,由Nguyễn Thái Ngọc Duy ( pclouds )完成:当1c192f3(gc --aggressive:make it really aggressive - 2007-12-06)将--depth=250设为默认值,但并没有真正解释背后的原因,尤其是--depth=250的优缺点。下面一封来自Linus的旧邮件详细解释了这一点。长话短说,--depth=250是一个磁盘保护程序和性能杀手。不是每个人都同意这种侵略性。让用户配置它。这有助于避免在大型存储库上运行该命令时遇到的“冻结”问题。
pclouds
gc --aggressive
--depth=250
3条答案
按热度按时间1l5u6lss1#
git应该永远不会受到这样的干扰。如果您担心,我建议Ctrl+Z,然后运行
git fsck --full
,以确保系统是一致的。有许多git-config变量可以帮助你的git-gc运行得更快。我在一个特定的大型repo上使用以下方法,但还有更多的选择可以随机尝试(或仔细研究,无论哪种)。
字符串
只有当您的问题是内存不足时,这些才有帮助。
请注意,Brian J Murray报告的最佳(git-gc)性能,
pack.threads
应该设置为您拥有的核心数量。还要注意VonC的另一个答案,它说你可以通过将gc.aggressiveDepth
设置为比默认值250小的值来权衡gc性能和磁盘使用率。dtcbnfnu2#
FWIW,我刚刚通过使用CTRL+C中止
git gc
来损坏了一个存储库。git fsck
现在显示以下错误:字符串
还有不少
型
我不打算对此进行研究,但我想指出,我将避免中止
git gc
。iqjalb3h3#
注意:git 2.0(2014年第二季度)有一个有趣的演变:
“git gc --aggressive”learned“--depth”选项和“gc.aggressiveDepth”配置变量,以允许使用比内置默认值250更不疯狂的深度。
这在commit 125f814中描述,由Nguyễn Thái Ngọc Duy (
pclouds
)完成:当1c192f3(
gc --aggressive
:make it really aggressive - 2007-12-06)将--depth=250
设为默认值,但并没有真正解释背后的原因,尤其是--depth=250
的优缺点。下面一封来自Linus的旧邮件详细解释了这一点。
长话短说,
--depth=250
是一个磁盘保护程序和性能杀手。不是每个人都同意这种侵略性。
让用户配置它。
这有助于避免在大型存储库上运行该命令时遇到的“冻结”问题。