Msysgit bash在Windows 7中非常慢
我喜欢git,并在OS X上几乎不断地在家中使用它。 在工作中,我们在Windows上使用svn,但是一旦工具完全成熟(不仅仅是TortoiseGit ,而且还有类似于VisualSVN提供的非常好的Visual Studio集成),就要迁移到git。 但是我离题了
我最近在我的Windows 7机器上安装了msysgit ,使用包含的bash版本时,速度非常慢。 而不仅仅是git操作。 clear
需要大约五秒钟 。 AAAAH!
有没有人遇到类似的问题?
编辑 : 看起来 ,msysgit与UAC没有很好地玩,可能只是一个微小的devise监督,从XP开发或运行Vista或7 UAC禁用产生的; 使用Run as administrator
Git Bash,以OS X的闪电速度(或者在启动Git Bash(无networking连接 – 请参阅@ Gauthier答案)之后的闪存速度)启动Git Bash。
编辑2 : 啊哈! 看到我的答案。
你可以通过运行三个命令来设置一些configuration选项来显着加快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问题,所以你不需要以admin身份运行git(更新:在Git for Windows 2.8中默认启用) -
gc.auto
最大限度地减less.git /
在Vista或7缓慢的解决scheme似乎是运行Git Bash使用Run as administrator
(或禁用UAC的Git Bash 快捷方式 …或完全禁用UAC)。 不同的是昼夜,使用7上的git再次真棒。
这似乎与一个已知的问题有关,正如我所推测的, XP作为msysgit的开发环境是部分责任。
对我来说,问题是在shell提示符下使用__git_ps1 – 我想是因为msysgit中的磁盘访问速度慢。
解决方法是从/ etc / profile中的PS1 = …行中删除$(__ git_ps1)
快速testing这个解决scheme是否适用:在一个git shell中,inputexport PS1 ='$'并检查你的操作速度。
在一台新机器上试了一下这里的所有提示(包括我的其他答案),但没有成功,Git的速度仍然很慢。
然后,我看了一下virusscanning的软件(这是预安装的):我禁用了McAfee Security Center的实时扫描function ,而且现在:git正在快速发展! “git svn rebase”所需的时间从30s降到5s(!)。
我希望这有助于其他人在Windows上仍然有缓慢的Git问题,我失去了小时搞清楚这一点。
唉'以pipe理员身份运行'没有为我工作 – 但正如凯文L发现,断开networking适配器,启动git bash,然后重新连接工作正常。 所以我把它包装在一个批处理脚本中,并把一个快捷方式放到我的“开始”菜单中,标记为以admin身份运行:
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
只要我记得我的networking一下子被切断了,就可以工作。
(Win 7 Professional SP1,Git 1.7.8-preview20111206)
我的一个同事在Outlook运行时就有这种行为。 尝试杀死前景并再次testing。
你也可以尝试testing:
- 没有连接到任何networking,
- 没有杀毒软件运行,
- 没有任何其他程序运行。
我们发现,当在某些用户帐户上运行时,在对WaitForSingleObject()
的调用中分隔git.exe实例,所以只有一个git.exe操作可以一次有效地运行。 更改用户帐户解决此问题。
详细信息在这里: https : //stackoverflow.com/a/13054022
我有MacAffee并告诉它从实时扫描中排除.git目录和所有的子目录解决了性能问题。
在这个问题中发现,closuresUAC虚拟化的运行(不需要完全禁用UAC)会产生很大的不同。
这篇文章解释了如何将其closures(见post的底部,只有一个registry设置)。
在一个(大)SVN回购,我连接到,只是上述改变下降所需的时间从15s到5s,因子3改善所需的时间。
除了Windows 7 UAC之外,还可以在Program Files文件夹外安装mysysgit。 例如,而不是“C:\ Program Files文件(x86)\ Git”,请尝试在“C:\ git”
我试图摆弄“以pipe理员身份运行”和UAC控件无济于事,但放弃了并开始了一个全新的安装。 之前我已经达到了15kB / s,现在已经超过了60kB / s。
如果closuresUAC不会提高性能,请尝试closuresluafv驱动程序。 在尝试了这个页面上几乎所有的东西以及类似的问题之后,这对我很有帮助。 Git已经从不可靠的缓慢走向相当体面。
打开“registry”并findregistry项
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/luafv
将Start
的值从2更改为4。
我find了关于如何在这里禁用luafv
的细节。 请注意,我个人不知道什么是luafv
。 该页面会给出关于如果closures时可能发生的不良事件的各种警告,您应该认真对待。
编辑:下面的评论指出,我得到了这个错误的方式(链接有正确的方式)。 现在是固定的。 对不起,我的垃圾注册人员:)
我刚刚解决这个问题已经有一段时间了,很难找出问题的根源。 最后,我发现了两件事情产生了戏剧性的影响:
- closuresWindowssearch服务。 这对性能有很大的影响。
- closuresGit扩展。 在后台打开“Git扩展浏览”窗口导致Cygwin git命令的执行时间增加了一个看似随机的因素,高达10左右。
这里的问题可能是bash的完成,如果启用了,这在Windows上比Linux慢很多。
尝试将PS1variables设置为像“$”这样简单的东西,看看这是否会加快速度。 如果是这样的话,请注意在近期的git版本中对bash的完成有一些优化。 也许你需要升级。
这对我有效。 不要指望它是一个适合所有的解决scheme。
在bash和windows中检查$ HOME环境variables。 如果它指向一个用户帐户,请检查用户的Windowsconfiguration文件/权限。 相应地更改用户帐户或$ HOME。
我已经遇到了相同的问题在Windows 7 x64上运行git for Windows(msysgit)作为一个有限的用户帐户相当一段时间。 从我在这里和其他地方看到的,共同的主题似乎是缺乏pipe理权限和/或UAC。 由于UAC在我的系统上是closures的,所以试图在程序文件目录中写入/删除某些东西的解释对我来说是最有意义的。
无论如何,我已经解决了我的问题,通过安装zipinstaller的可移植版本的git 1.8。 请注意,我必须解压.7z分发文件,并将其重新打包为压缩文件,以便zipinstaller工作。 我也不得不手动添加该目录到我的系统path。
现在的performance很好。 即使它安装在程序文件(x86)目录,我没有作为有限的用户的权限,它似乎并没有遭受同样的问题。 我认为这是因为便携式版本在写入/删除文件的位置上可能稍微保守一些,可能是这种情况,或者从1.7升级到1.8。 我不打算试图确定哪一个是理由,可以说现在好多了。
你可能想尝试卸载msysgit,重新启动windows,安装最新版本的msysgit。 它似乎为我做了诡计。 我在这里find了这个build议:
https://stackoverflow.com/a/4506192/1413941
编辑
PS我在遇到缓慢的Git问题之前已经禁用了UAC,所以我不知道禁用UAC是否需要或者不要让Git快速运行。
正如所指出的,最好的解决scheme是以pipe理员身份运行。 然而,另一个使git状态快速的选项至less是trustctime = false 。 在这之前, git状态花费了大约30秒,之后和输出中显示的数量相同 – 花费了X秒的时间…
通过更改以下gitconfiguration,您也可以获得重要的性能提升:
git config --global status.submoduleSummary false
在Windows 7 x64上运行简单的git status
命令时,我的电脑运行了超过30秒。 在这个选项被定义之后,命令是立即的。
激活Git自己的跟踪,如下页所述帮助我find了问题的根源,这可能在您的安装中有所不同: https : //github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-慢
这可能是分析你的Git仓库的提示问题。 您可以通过在Git存储库之外的某处进行“清除”来进行testing。 你可以通过修补git-completion.bash或者通过使用core.filemode来玩技巧来加速它。
至于Visual Studio集成:这是开源的。 指望别人为你免费工作是不公平的。
我也觉得不要在msysGit邮件列表上问这个问题,但现在我离题了。