Msysgit bash在Windows 7中非常慢

时间:2010-05-14 16:21:37

标签: git windows-7 msysgit

我喜欢git并且在OS X上经常使用它。在工作中,我们在Windows上使用svn,但是一旦工具完全成熟(不仅仅是TortoiseGit),还希望迁移到git,而且还有类似于VisualSVN提供的非常好的Visual Studio集成的东西) 。但我离题了......

我最近在我的Windows 7计算机上安装了msysgit,并且当使用包含的bash版本时,它骇人地慢。而不仅仅是git操作; clear大约需要五个。 AAAAH!

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


编辑出现 msysgit与UAC的效果不佳,可能只是因为在XP上运行或运行Vista或7 UAC禁用;使用Run as administrator启动Git Bash会产生我在OS X中看到的闪电速度(或者在没有网络连接的情况下启动Git Bash后的7点 - 请参阅@Gauthier回答)。

编辑2 AH HA!请参阅我的回答。

19 个答案:

答案 0 :(得分:53)

通过运行三个命令设置一些配置选项,您可以在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(更新:默认情况下在Git for Windows 2.8中启用)

  • gc.auto最小化.git /

    中的文件数量

答案 1 :(得分:36)

Vista或7上的缓慢解决方案似乎是使用Run as administrator运行Git Bash(或禁用UAC进行Git Bash shortcut ...或禁用UAC entirely )。不同的是夜晚和白天,使用7上的git再次很棒。

这似乎与known issue有关,正如我推测的那样,XP as a development environment for msysgit是部分责任。

答案 2 :(得分:13)

对我来说,问题是在shell提示符中使用__git_ps1 - 我猜是因为msysgit中磁盘访问速度慢。

解决方法是从/ etc / profile

中的PS1 = ...行中删除$(__ git_ps1)

快速测试是否适用此解决方案:在git shell中输入 导出PS1 ='$' 并检查你的运作速度。

答案 3 :(得分:12)

在新机器上尝试了所有提示(包括我的其他答案中的提示),但是它们没有用,Git仍然很慢。

然后我看了一下virusscanning软件(已预先安装):我禁用了迈克菲安全中心的实时扫描,并且presto:git现在非常快! “git svn rebase”所需时间从30秒降至5秒(!)。

我希望这对于在Windows上仍然存在缓慢Git问题的其他人有帮助,我已经失去了几个小时来解决这个问题。

答案 4 :(得分:9)

唉'以管理员身份运行'对我不起作用 - 但正如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 :(得分:5)

我的一位同事在Outlook运行时都有这种行为。 尝试杀死前景并再次测试。

您也可以尝试测试:

  • 没有连接到任何网络,
  • 没有防病毒运行,
  • 没有任何其他程序在运行。

答案 6 :(得分:3)

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

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

答案 7 :(得分:3)

我有MacAffee,并告诉它排除.git目录和实时扫描的所有子目录解决了性能问题。

答案 8 :(得分:1)

正如在this issue中找到的那样,在UAC虚拟化关闭的情况下运行(完全禁用UAC不需要它)会产生很大的不同。

This post解释了如何关闭它(请参阅帖子的底部,只有一个注册表设置)。

在我正在连接的一个(大)SVN回购中,只需进行上述更改就可以将“git svn rebase”所需的时间从15秒减少到5秒,这是3倍的改进。

答案 9 :(得分:1)

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

打开'regedit'并找到注册表项

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/luafv

Start的值从2更改为4.

我找到了有关如何停用luafv here的详细信息。请注意,我个人不知道luafv是什么或做了什么。该页面提供了各种警告,如果你关闭它可能会发生的坏事,你应该认真对待。

编辑:下面的评论指出我得到了错误的方法(链接正确的方式)。现在修好了。对于我的注册管理机构遭遇破坏的人们抱歉:)

答案 10 :(得分:1)

搞乱Windows 7 UAC的另一种方法可能是在Program Files文件夹之外安装mysysgit。例如,而不是" C:\ Program Files(x86)\ Git",请尝试在" C:\ git"

中安装

我试图摆弄'以管理员身份运行'和UAC控制无济于事,但放弃并开始全新安装。我之前的最大速度是15KiB / s,但现在已超过60kiB / s。

答案 11 :(得分:1)

我刚刚对此进行了一段时间的故障排除,并且很难找到问题的根源。最后,我发现了两件具有重大影响的事情:

  • 关闭Windows搜索服务。这对性能产生了巨大影响。
  • 关闭Git扩展程序。让Git Extensions浏览窗口在后台打开导致Cygwin git命令执行时间增加一个看似随机因素,最多可达10左右。

答案 12 :(得分:0)

我在Windows 7 x64上运行git for Windows(msysgit)作为受限用户帐户已经遇到了同样的问题。从我在这里和其他地方读到的,共同的主题似乎是缺乏管理权限和/或UAC。由于UAC在我的系统上已关闭,因此它尝试在程序文件目录中编写/删除某些内容的解释对我来说是最有意义的。

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

现在表现还不错。即使它安装在Program Files(x86)目录中,我没有作为受限用户的权限,它似乎也没有遇到同样的问题。我将此归因于便携式版本在写入/删除文件的位置(可能是这种情况)或从1.7升级到1.8的位置更为保守。我不打算确定哪一个是原因,足以说它现在更好地工作了

答案 13 :(得分:0)

你可能想尝试卸载msysgit,重启windows,安装最新版本的msysgit。它似乎为我做了伎俩。我在这里找到了这个建议:

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

修改

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

答案 14 :(得分:0)

这对我有用。 不要指望它将是一个适合所有解决方案。

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

答案 15 :(得分:0)

这里的问题可能是bash-completion如果启用了,这在Windows上比Linux慢很多。

尝试将PS1变量设置为像“$”这样的简单变量,看看这是否会加快速度。如果确实如此,请注意在最近的git-versions中对bash-completion进行了一些优化。也许你需要升级。

答案 16 :(得分:0)

最好的解决方案是以管理员身份运行,正如所指出的那样。但是,至少快速使 git status 的另一个选项是 trustctime = false 。在此之前 git status 大约需要30秒,之后它与输出中显示的数量相同 - 需要X秒才能...

答案 17 :(得分:0)

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

git config --global status.submoduleSummary false

在Window 7 x64上运行简单git status命令时,我的计算机运行时间超过30秒。定义此选项后,命令立即生效。

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

答案 18 :(得分:-4)

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

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

我也觉得在msysGit邮件列表上问这个问题很有意思,但现在离题了。