Windows 7中的Msysgit bash非常慢


84

我喜欢git,几乎在家里经常在OS X上使用它。在工作中,我们在Windows上使用svn,但希望在这些工具完全成熟后立即迁移到git(不仅是TortoiseGit,而且还类似于VisualSVN提供的非常不错的Visual Studio集成)。但是我离题了...

我最近安装msysgit我的Windows 7机器上,并使用bash所包含的版本时,它的窘况慢。不仅仅是git操作;clear大约需要五秒钟。AAAAH!

有没有人遇到过类似的问题?


编辑看来msysgit与UAC配合不好,可能只是在XP上开发或在禁用UAC的情况下运行Vista或7而导致的微小设计疏忽。使用Run as administrator我在OS X上看到的闪电般的速度启动Git Bash(或在启动不带网络连接的Git Bash之后的7上-请参阅@Gauthier答案)。

编辑2啊哈! 看我的答案。


不慢5秒,不。它会比Cygwin版本慢,但快。
Yann Ramin 2010年

@theatrus:刚才我实际上使用了秒表。平均为3.8秒。因此,您是正确的,但仍然存在严重错误。
凯文·L。2010年

另一个msysgit减速是此处记录
JodaStephen


Answers:


54

您可以通过运行三个命令来设置一些配置选项,从而在Windows上显着提高Git的速度:

git config --global core.preloadindex true
git config --global core.fscache true
git config --global gc.auto 256

笔记:

  • core.preloadindex 并行执行文件系统操作以隐藏延迟(更新:在git 2.1中默认启用)

  • core.fscache 修复了UAC问题,因此您无需以管理员身份运行Git(更新:在Windows 2.8的Git中默认启用)

  • gc.auto 最小化.git /中的文件数


现在这应该是公认的答案。奇迹般有效!
krlmlr 2014年

8
这对我不起作用。我发出命令后,git bash仍然延迟1-2秒。
Jaskey 2014年

对我来说像是一种魅力。使我的git状态在大型仓库中从13秒降低到0.7秒
noelob 2014年

2
git config --global core.fscache true没有为我做任何事 但是,git config core.fscache true做到了。根据这个,那是因为core.fscache是每个回购的设置。
David Merriman,2015年

2
@DavidMerriman“每个仓库”注释只是说明您可以在单个仓库更改此设置。(对于所有设置都是如此,所以我根本不知道为什么要提到它。)此注释并不意味着fscache 只能作为每个回购设置使用。全局设置适用于计算机上的所有存储库,除非按每个存储库设置覆盖。
shoelzer 2015年

37

Vista或7上的慢速解决方案似乎正在使用来运行Git Bash Run as administrator(或为Git Bash快捷方式禁用UAC ...或完全禁用UAC)。区别是白天和黑夜,再次在7上使用git很棒。

这似乎与一个已知问题有关,据我推测,XP作为msysgit的开发环境负有部分责任。


很好的提示(即使它不是故意的:)。在Windows 2008 R2中以1.7.4运行“ git svn clone”对我来说非常慢(SVN中有5000多次提交,花了一半时间才得到一半)...您给了我一个尝试的想法在XP的“本机”环境中,它实际上非常快。谢谢!
bdrajer 2011年

1
我已禁用UAC并尝试以管理员身份运行,但我输入到Git Bash的每个命令仍需要大约5秒钟才能运行(即使只是ls在实际上是空的目录中)
Robin Winslow 2012年

4
:在这个问题的答案为我工作,而不是stackoverflow.com/questions/4485059/...
罗宾·温斯洛

将存储库移至非系统分区也显示了对我的团队的大幅提高,并防止了结帐时出现的随机“无法创建文件”问题。
劳伦斯

1
我尝试了很多解决方案..这个(以管理员身份运行)终于为我工作了..现在我的git再次快速
闪闪

14

对我来说,问题是在shell提示符中使用__git_ps1-我猜是由于msysgit中的磁盘访问缓慢。

解决方案是从/ etc / profile中的PS1 = ...行中删除$(__ git_ps1)

快速测试此解决方案是否适用:在git shell中,键入export PS1 ='$'并检查操作速度。


谢谢!原来这是我在Windows XP上遇到的问题。参见stackoverflow.com/q/5851611/200688
AndyL 2011年

2
__git_ps1如果您禁用了SHOWDIRTYSTATE和/或SHOWUNTRACKEDFILES设置,则可能可以激活,请参阅stackoverflow.com/a/4203968/321973
Tobias Kienzler

这就是在Windows 7上为我完成的全部工作。特别幸运的是,由于该计算机没有管理员权限而被锁定!
航空

12

在一台新机器上尝试了几乎所有这里的技巧(包括我其他回答中的技巧),但是它们没有用,Git仍然慢得要命。

然后,我看了病毒扫描软件(已预装):我禁用了McAfee Security Center的实时扫描。,并且很清楚:git现在发展很快!“ git svn rebase”所需的时间从30s减少到5s(!)。

我希望这对其他在Windows上仍存在Git慢的问题的人有所帮助,我花了数小时弄清楚了这一点。


4
在将git安装的整个路径添加到Avast的排除路径之后,我的Git Bash也会启动缓慢。防病毒套件,git bash的启动时间低于0.5秒
zhxchen17

就是我的答案!!我使用AVG Free。我刚刚禁用了10分钟,突然veeerrryyyy缓慢的重击很快就快了。
Mörre

对于使用Windows Defender的用户,可以让它排除文件夹或进程。见support.microsoft.com/en-us/help/4028485/...
Ehtesh乔杜里

9

las“以管理员身份运行”对我不起作用-但正如Kevin L所发现的,断开网络适配器,启动git bash,然后重新连接工作正常。因此,我将其包装在批处理脚本中,并在“开始”菜单中添加了快捷方式,并标记为以管理员身份运行:

netsh interface set interface "Local Area Connection" DISABLED
cd "%USERPROFILE%\Documents\Visual Studio 2010\Projects"
start cmd /c ""C:\Program Files\Git\bin\sh.exe" --login -i"
netsh interface set interface "Local Area Connection" ENABLED

只要我记得我的网络暂时中断,就可以享受服务。

(Win 7 Professional SP1,Git版本1.7.8-preview20111206)


5

每当运行Outlook时,我的一位同事就有此行为。尝试杀死前景并再次测试。

您还可以尝试测试:

  • 没有连接任何网络,
  • 没有运行防病毒软件,
  • 无需运行任何其他程序。

3
Outlook和杀毒软件似乎都没有作用,但是,如果我禁用了网络连接然后启动git,即使重新连接后,它也闪电般快速(读取:“ Unix”)。有趣的...
Kevin L.

是的 并且git bash保持快速(直到我关闭它并打开另一个实例)。
凯文·L。2010年

2
网络连接也对我有用。我想知道它与网络连接有什么关系。奇怪的是,它在我的家庭网络上可以正常工作,但是拒绝在我的办公室网络上工作。
Sarath,

这解决了我在全新iMac上的Windows 7 Professional 64位上的问题。干杯!
隆达

建议的+1防病毒是导致我的特定系统出现问题的原因。Windows 7 x64旗舰版。可悲的是,UAC(在别处提到)没有任何区别。感谢大家
MickyD 2011年

3

我们发现,当在某些用户帐户上运行时,在对的调用中阻止了单独的git.exe实例 WaitForSingleObject(),因此只有一个git.exe操作可以一次有效地运行。更改用户帐户可以解决此问题。

此处的详细信息:https : //stackoverflow.com/a/13054022



1

本期所述,关闭UAC虚拟化运行(不需要完全禁用UAC)会带来很大的不同。

这篇文章解释了如何关闭它(请参阅文章底部,只有一个注册表设置)。

在我要连接的一个(大型)SVN存储库上,进行上述更改将“ git svn rebase”所需的时间从15s减少到了5s,这是改善的3倍。


这个问题(跟踪)已关闭,新的问题就是这样的:github.com/msysgit/git/issues/94
childno͡.de

1

解决Windows 7 UAC的另一种方法可能是在程序文件文件夹之外安装mysysgit。例如,尝试使用“ C:\ git”安装而不是“ C:\ Program Files(x86)\ Git”

我试着摆弄“以管理员身份运行”和UAC控件无济于事,但放弃并重新开始了全新的安装。以前我的最大速度约为15KiB / s,但现在超过60kiB / s。


1

如果关闭UAC不能提高性能,请尝试关闭luafv驱动程序。在尝试了该页面上的几乎所有内容以及几个类似的问题之后,这对我有用。Git已经从缓慢的速度变成了相当不错的速度。

打开“ regedit”并找到注册表项

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/luafv

将值Start从2更改为4。

我在luafv 这里找到了有关如何禁用的详细信息。请注意,我个人不知道luafv或做。该页面会给出各种警告,提示您将其关闭可能会发生的不良情况,您应该认真对待。

编辑:下面的评论指出我弄错了这个方法(链接有正确的方法)。现在已修复。对不起我把注册表弄糟的人:)


我的默认设置为2。还是很慢。
imanuelcostigan 2013年

@imanuelc:具有讽刺意味的是,我的现在(在新计算机上)太早了,而且速度也很慢。
jwg

2
这是不正确的。应将其从2更改为4。2表示自动启动。4表示禁用。
richb 2014年

1

我刚刚对此进行了一段时间的故障排除,并且很难找出问题的根源。最终,我发现了两件事产生了巨大影响:

  • 关闭Windows搜索服务。这对性能产生了巨大影响。
  • 关闭Git扩展。在后台打开Git Extensions浏览窗口会导致Cygwin git命令的执行时间增加,看似随机,最多增加约10。

0

如果启用了bash补全功能,那么这里的问题可能就是,它在Windows上比Linux慢很多。

尝试将PS1变量设置为类似“ $”的简单名称,然后看是否可以加快速度。如果确实如此,请注意,最近使用的git-versions对bash-completion进行了一些优化。也许您需要升级。


1
我正在运行绝对最新的最新版本(请参见上面有关VonC答案的评论)。但我会试一试。
凯文·L。2010年

在这种情况下,1.7.0.2不一定是最前沿。我正在谈论的优化发生在上游git中。我不确定它们是否适用于Windows的1.7.0.2版本的Git。
库斯马2010年

0

这对我有用。不要期望它会是一个适合所有解决方案的尺寸。

在bash和Windows中检查$ HOME环境变量。如果它指向用户帐户,请检查用户的Windows配置文件/权限。相应地更改用户帐户或$ HOME。


6
可以详细说明一下这些不祥的形象/能力吗?
Tobias Kienzler 2012年

0

我遇到了同样的问题,在Windows 7 x64上以受限用户帐户运行Windows版git(msysgit)已有相当一段时间。从我在这里和其他地方所读的内容来看,共同的主题似乎是缺乏管理特权和/或UAC。由于UAC在我的系统上处于关闭状态,因此它对试图在程序文件目录中写入/删除内容的解释对我来说最有意义。

无论如何,我通过使用zipinstaller安装便携式版本的git 1.8解决了我的问题。请注意,我必须解压缩.7z分发文件并将其重新打包为zip,以便zipinstaller可以工作。我还必须手动将该目录添加到我的系统路径。

现在的表现还不错。即使它安装在Program Files(x86)目录中(我没有受限用户的权限),它似乎也不会遇到相同的问题。我将其归因于以下事实:便携式版本在写入/删除文件时可能较为保守,或者是从1.7升级到1.8。我不会尝试确定哪个是原因,可以说它现在工作更好。


0

您可能想要尝试卸载msysgit,重新启动Windows,安装最新版本的msysgit。它似乎对我有用。我在这里找到了这个建议:

https://stackoverflow.com/a/4506192/1413941

编辑

PS:在遇到缓慢的Git问题之前,我已经禁用了UAC,所以我不知道是否需要禁用UAC才能使Git快速运行。


0

如前所述,最好的解决方案是以管理员身份运行。但是,至少可以使git status更快的另一种选择是trustctime = false。在此之前,git状态花费了大约30秒,在此之后,它的状态与输出中显示的相同-花了X秒来...


0

您还可以通过更改以下git配置来获得重要的性能提升:

git config --global status.submoduleSummary false

git status在Windows 7 x64上运行简单命令时,我的计算机花了30多秒钟才能运行。定义此选项后,命令立即生效。

激活Git自己的跟踪,如下页所述,帮助我找到了问题的根源,可能与您的安装有所不同:https : //github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-慢


-4

这可能是分析您的Git存储库的提示问题。您可以通过在Git存储库之外的某处进行“清除”来进行测试。您可以通过修补git-completion.bash或通过使用core.filemode技巧来加速它。

至于Visual Studio集成:这是开源的。指望别人免费为您工作是不公平的。

我也觉得不问msysGit邮件列表上的问题很有趣,但是现在离题了。


5
不应容忍StackOverflow上的火焰。请尝试使话语保持更加平民化
2010年

1
这很有趣。我的评论是唯一包含具体技术信息的评论。您知道提供帮助解决该问题的提议吗?当然,我很不高兴在这里提出了关于stackoverflow的问题,我没有对其进行监视,并且必须由其他人向我指出。我希望直接听到这个问题。我不了解您,但是当原始项目甚至没有收到问题通知时,我都会发现这是不公平的。
Dscho

两年后,我同意了。我太苛刻了。抱歉,Dscho。git开发人员的邮件列表确实很有帮助。
2012年

2
@Dscho,您应该了解人们经常在这里发布,因为他们想检查是否没有配置或平台问题,这不是Git中的错误,会引起他们的问题。
jwg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.