others - 在Windows 7 到x64,git/bash极其缓慢

  显示原文与译文双语对照的内容
0 0

在一个小项目的开发过程中,我在 Windows 和Ubuntu上使用了 Git,经常在两者之间来回翻转。 我所遇到的问题是,git/bash总是变慢。 当我说慢速时,我的意思是运行 cd 从 8 -25秒开始运行,运行 git 命令从 5秒,然后 ls 可以占用 30秒的时间。 不用说,这一点也不有趣,更不用说有效率了。 我知道Git在 Windows 上比较慢,但这很荒谬。

worked--temporarily--for我的一个解决方案是禁用我的网络连接( 就像中建议的那样,这个答案是 ),启动 git,然后重新连接。 有时,在执行这里操作之后,它会持续数天,但性能总是会降低。 我已经通过trawled的讨论小组,所以,odata问题列表,等等 和关闭几个星期,但我还没能打开工作的解决方案。

到目前为止,我尝试过:

  • 将 git &项目文件夹添加到扫描仪列表的病毒排除中
  • 完全禁用我的病毒扫描程序( 卡巴斯基是 2011 )
  • 确保 Outlook 未运行( Outlook 2007 )
  • 正在关闭所有其他应用程序
  • 以管理员身份运行 git
  • 禁用网络连接,启动 git,并禁用连接
  • 禁用网络连接,启动 git,re-enabling连接( 仅偶尔运行)
  • 运行 git gc
  • 和上面的组合

我曾经阅读过一些人成功禁用bash完成,但理想情况下我希望保持活跃。 checkPermission的版本是 1.7.3.1 -preview20101002 &操作系统是 Windows 7 x64. 在Linux上运行同样的东西,可以预见的是,闪电很快。 我将使用 Linux,但我需要在 Windows 中运行一些东西,( 某些应用程序,测试,等等 ) 。

是否遇到类似的问题? 如果是的话,问题的基础是什么,解决方案是什么?

编辑:这不仅仅扩展到了git仓库,只是为了参考,我一直在使用的仓库是非常小的: ~4-50 文件最大值。

时间: 原作者:

0 0

你可以通过运行三个命令来设置一些配置选项来显著加速 Windows 上的git:


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

注释:

  • core.preloadindex 并行地执行 文件系统 操作以隐藏延迟,在所有平台的未来版本中默认会启用这些操作( 更新: 在v2.1中启用)

  • core.fscache 修复UAC问题( 不需要运行git作为管理员)

  • gc.auto 使文件中的文件数最小化。

0 0

你的Bash提示符中有显示的Git信息? 如果是这样的话,可能是你在每个命令上做了太多的工作。 要测试这个理论,在Bash中尝试以下临时更改:

 
export PS1='$'

 
原作者:
0 0

我的Windows 主目录在网络上,我怀疑 Git Bash命令首先在那里。 果然,当我查看 $PATH, 时,它首先列出了/h/bin,其中/h 是 Windows 文件服务器上的共享,尽管/h/bin 不存在。 我编辑了/etc/profile 并注释出导出命令,将它的放在 $PATH: 中


#export PATH="$HOME/bin:$PATH"

这使得我的命令运行得更快,可能是因为 Git Bash不再在网络上寻找可执行文件。 我的/etc/profile 是 c:Program 文件( x86 ) Gitetcprofile 。

0 0

虽然你的问题可能是网络,但我有个人加速了本地 git status 调用( 7 + 秒至 700毫秒) 通过执行两个修改。 在 700 mb的仓库上,有 21,000个文件和大量的大型二进制文件。

一个是启用并行索引预加载。 从命令提示符中:
git config core.preloadindex true
这将 time git status 从 7秒更改为 2.5秒。

更新 !

不再需要以下内容。 修补程序已经将它的修复为 mysysgit 1.9.4
https://github.com/msysgit/git/commit/64d63240762df22e92b287b145d75a0d68a66988
但是,你必须通过键入
git config core.fscache true

我还禁用了UAC和"luafv"驱动程序( 需要重新启动) 。 这将禁用 Windows vista,7和 8中的驱动程序,这些驱动程序将尝试将尝试写入系统位置的程序重定向到一个用户目录。

要查看有关这里效果如何影响git性能的讨论,请阅读: https://code.google.com msysgit/issues/detail?id=320

若要禁用这里驱动程序,请在注册表中更改"开始"密钥 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/luafv 到 4以禁用驱动程序。 然后,将UAC设置为最低的设置,"从不通知"。

如果禁用这个驱动程序使你的( 它应该) 更加安全,那么在驱动器( 或者分区) 上运行的替代方式与你的系统分区不同。 显然,驱动程序只在系统分区上的文件访问上运行。 我有第二个硬盘,当我在驱动器上运行这个注册表修改时看到相同的结果。

这里更改将 time git status 从 2.5秒更改为 0.7秒。

你也可能想要跟踪 https://github.com/msysgit/git/pull/94https://github.com/git/git/commit/d637d1b9a8fb765a8542e69bd2e04b3e229f663b,以查看在 Windows 中的速度问题。

原作者:
0 0

似乎完全卸载 Git,重新启动( 经典的Windows 固化),重新安装Git是治愈。 我还清除了所有在( 它们被手工创建) 上留下的bash配置文件。 一切又快了。

If for some reason reinstalling is not possible ( 或者想要或者),then I order to definitely try changing PS1 variable referenced in Chris answer of dolan. It resulted in significant speedups in certain operations.

原作者:
0 0

在Dolan的Chris回答的扩展中,我使用了以下可选的PS1设置。 只需将代码Fragment添加到 ~/.profile ( 在 Win7: c:/Users/USERNAME/.profile).


fast_git_ps1 () 
{ 
 printf --"$(git branch 2>/dev/null | grep -e '* ' | sed 's/^..(.*)/{1}/')" 
} 

PS1='[33]0;$MSYSTEM:w07 
33[32m]u@h [33[33mw$(fast_git_ps1)33[0m] 
$ ' 

这保留了彩色外壳的好处,并显示了当前分支名称( 如果在git仓库中),但在我的机器上,从 ~0.75s 到 0.1的速度大大加快。

基于这个博客

原作者:
0 0

通过将 core.preloadindex 设置为 ,我看到了一个不错的改进,建议使用

原作者:
0 0

我解决缓慢git问题开始赢得 7 x64 cmd.exe"作为管理员运行"。

0 0

我已经遇到了将 git for Windows ( checkPermission ) on Windows 7 x64作为有限用户帐户的问题。 从我在这里和其他地方看到的,共同主题似乎是缺乏管理特权和/或者 UAC 。 由于UAC在我的系统上,它试图写入/删除 Program Files 目录中的东西的解释对我来说最有意义。

在任何情况下,我已经解决了我的问题通过安装git的便携版本 1.8 zipinstaller 。 注意,我必须解压. 7 z 分发文件并将它的打包为 zip,以便zipinstaller能够工作。 我还不得不手动将那个目录添加到我的系统路径。

现在的性能很好。 尽管它安装在 Program Files (x86) 目录中,但我没有作为有限用户的权限,它似乎没有遇到同样的问题。 我认为这可能是因为便携版本在写入/删除文件的位置更加保守,可能是这种情况,或者从 1.7到 1.8的升级。 我不打算去决定哪个是原因,足以说它现在工作得更好了,包括 bash 。

0 0

就像Chris和Dolan的wilbert的回答所指出的,的PS1会降低你的

我使用的不是完全禁用( 就像Dolan建议的) 或者使用Wilbert提供的脚本,而是使用了更快的"哑 PS1"。

它使用 (git symbolic-ref -q HEAD || git rev-parse --short HEAD) 2>/dev/null :


PS1='33[33m]w n[33[32m]$((git symbolic-ref -q HEAD || git rev-parse -q --short HEAD) 2>/dev/null) [33[00m]# '

在我的cygwin上,这比 "fast_git_ps1的"应答 - 200 ms vs 400毫秒快,所以它可以让你的速度变慢一点。

这不是 __git_ps1 一样复杂的,例如它不改变提示cd到. git 目录时, 等等 但对于正常的日常使用足够好和快。

测试git 1.7.9 ( cygwin,但应该在任何平台上工作)

原作者:
...