在Windows 10操作系统上,Git Bash(mintty)非常慢

时间:2017-03-19 14:55:34

标签: git windows-10 git-bash mingw-w64 mintty

几个月前我在 Windows 10 上安装了Git。它运作良好一段时间。但现在,它的运行速度很慢。

git status命令需要 7秒才能执行,而git stash需要多分钟才能进行存储(即使没有任何要存储的内容) 。此外,我想指出git status即时打印结果,但我无法输入新命令几秒钟,如下图所示。

The screen is stuck like this for 7 seconds

我已经尝试上网搜索问题的解决方案,例如thisthis等,但这些都没有奏效。

P.S。:我使用Windows Defender防病毒软件,使我的Bash变慢。此外, cmd 需要更多时间来执行git命令,而 git bash 需要更长时间才能执行任何命令。

更新:我已切换到Ubuntu,因此,我目前不使用Windows。所以,我无法检查是否有任何解决方案适合我。我接受@pschild提供的答案,因为它拥有最多的赞成票,似乎对很多人有用。

14 个答案:

答案 0 :(得分:47)

我最近碰到了同样的问题。在尝试了该线程和许多其他线程的所有建议后,我终于在链接问题here中找到了解决方案here

在Windows设备管理器中禁用AMD Radeon图形驱动程序并切换到集成的英特尔高清显卡为我工作 - 无论出于何种原因。

希望有所帮助!

就我而言,我发现 sh.exe shell比bash.exe快得多。你可以在git_install_dir / bin中找到sh.exe。

希望这可以帮助人们解决这个问题,同时只集成英特尔高清显卡!

答案 1 :(得分:23)

对我来说,解决方法是将HOME变量设置为我的用户目录(按此answer)。要做到这一点(至少在Windows 7上):

  1. 右键单击文件资源管理器中的“计算机”。
  2. 打开高级系统设置。
  3. 打开环境变量
  4. 在“系统变量”下,单击“新建...”
  5. 输入“HOME”作为变量名称和用户路径 值的目录(例如“C:\ Users \ jdoe”)。
  6. 另见this related question的答案。

答案 2 :(得分:5)

再试一次:

  • 您可以找到的latest Git for Windows,例如PortableGit-2.12.1-64-bit.7z.exe(在任何地方解压缩,无需设置)
  • 然后在CMD会话中,将PATH设置为:

    set G=c:\path\to\latest\git
    set PATH=%G%\bin;%G%\usr\bin;%G%\mingw64\bin
    set PATH=%PATH%;C:\windows\system32;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\
    
  • 将您的HOME设置在同一CMD会话

    set HOME=%USERPROFILE%
    
  • 最后,输入bash,看看是否有任何Git操作仍然很慢。

答案 3 :(得分:5)

回复Lafexlos' bounty

  

禁用AMD Radeon驱动程序解决了我的问题,但我真的很想知道为什么这部分   希望得到一个侧重于此的答案。

至于原因:

Issue 1070报告。

  

在等待bash提示时,启动Radeon设置GUI并点击某些内容会立即释放某些内容并使其显示 - 很奇怪。

与AMD联系但没有回复...

project reports

  

但是必须通过这些驱动程序显示所有图形(终端)输出   他们(司机)将他们的钩子带入系统的所有部分,隐藏的中断和超时,善良知道什么。颤抖..

Issue 1129补充道:

  

从Windows 7(可能是Vista?)开始,控制台能够通过DirectWrite显示自己,DirectWrite构建在Direct3D之上,Direct3D严重依赖于DirectX API的驱动程序实现。

     

作为直接在nvd3dumnvwgf2umxnvapi工作的NVIDIA前员工,我可以告诉您,我们对此决定的智慧持怀疑态度。
  似乎AMD应该更加怀疑,也许他们的驾驶员质量会更好。

答案 4 :(得分:4)

我遇到了同样的问题,我发现的问题是我的问题是__git_ps1,基本上是一个变量,它包含状态信息,如分支名称,分离头状态,在git目录中,在一个简单的仓库中,在樱桃采摘或变基或合并的过程中。

为了加速你的git bash,请转到$ GitHome \ etc \ profile并注释掉if-then,其中__git_ps1 is添加到PS1。

无论如何,您正在评论的信息非常有用,特别是如果您刚开始使用GIT。 这是一个更快的版本,可以在互联网上找到并在我的系统上非常成功地使用:

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

PS1='\[\033]0;$MSYSTEM:\w\007                                                                
\033[32m\]\u@\h \[\033[33m\w$(fast_git_ps1)\033[0m\]                                         
$ '     

答案 5 :(得分:3)

尝试了以上对我来说有意义的一切,没有帮助。

最后,我似乎已经解决了该问题。原来,适用于Windows的Git Credentials Manager尝试与我的域控制器联系(因为我不在办公室,所以无法联系),并且每次我想例如,这都会造成很大的延迟(超过30秒)。 git checkout

要解决此问题,只需完全禁用Credentials Manager,现在一切都很快。这是禁用它的方法:How do I disable Git Credential Manager for Windows?

希望这可以帮助绝望的人,加油!

答案 6 :(得分:2)

你的PATH是垃圾吗?对我来说简单的命令有时需要20秒或更长时间,直到我从PATH中移除不必要的东西。

Windows:echo%PATH%

搜索"编辑环境变量"改变。

其他:     echo $ PATH

答案 7 :(得分:2)

在Windows 7和Windows 10上,我遇到了同样的问题,而在使用git bash时,我运行的任何命令都将花费大量时间来执行。最终,经过许多令人震惊的尝试,发现该问题是由于未以管理员身份运行我的git bash exe

步骤

  1. 右键单击git bash exe。
  2. 点击“以管理员身份运行”
  3. 键入cd / c /
  4. 之类的命令

希望这会有所帮助!!!!

答案 8 :(得分:1)

我遇到了类似的问题,但只有当我以普通用户身份运行git bash时,当我以管理员身份启动git bash时,所有命令都运行得非常快。

据我所知,问题是由F-Secure防病毒引起的。我将包含git.exe的目录添加到排除目录列表中(从扫描中排除),它为我解决了这个问题。

如何排除目录:https://community.f-secure.com/t5/Business/Excluding-objects-from-Real-Time/ta-p/66013

答案 9 :(得分:1)

在Windows Defender排除列表中为bash.exe,cmd.exe和conhost.exe添加进程排除显然可以在Windows 10 64bit上为我解决此问题。

答案 10 :(得分:1)

对我来说,问题在于安装的软件 Strawberry Perl

我正在使用适用于 Windows 10 的下一个开源软件:

  • OpenSSH
  • 腻子
  • Windows 版 Git
  • Qt 5.12.6

但是,安装程序 Qt 5.12.6 会提示您安装 Strawberry Perl。似乎需要这个包来自动创建软件部署脚本。 Strawberry Perl 除了 Perl 之外,还有更多的开源软件。但实际上 99% 的情况下都不需要安装 Strawberry Perl。

在卸载 Strawberry Perl 之前,我的 PATH 变量变成了这样:

PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\PuTTY\;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Users\stepanov_sm\AppData\Local\Microsoft\WindowsApps;

卸载 Strawberry Perl 后,我的 PATH 变量变成了这样:

PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\stepanov_sm\AppData\Local\Microsoft\WindowsApps;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\PuTTY\;

可能是,Strawberry Perl 与 Git for Windows 中的二进制文件/脚本重叠。在卸载 Strawberry Perl 之前,命令 git --version 在 45 秒内执行!卸载 Strawberry Perl 后,命令立即开始执行。

答案 11 :(得分:0)

免责声明:不是解决方案。但快速的解决方法。

由于计算机更新后的某些原因-我的计算机上没有安装Git bash,因此我不得不重新下载一个新的2.19.2.windows.1,每次执行都花费5-7时,我遇到了相同的问题秒。

我没有时间研究所有链接并禁用图形驱动程序,而没有其他功能。但是我在计算机上安装了Github的Git外壳,然后将其拉起(Windows PowerShell),就可以立即在其中运行所需的一切。

答案 12 :(得分:0)

我将 Windows 10 作为虚拟机运行(使用 VMware fusion),对我而言,将虚拟机设置中的 1 个处理器内核更改为 2 个处理器内核(无论如何我发现这是推荐的最小值)解决了这个问题。 @chunk_split 对@rakwaht 的回答的评论指向同一个方向(即并发线程或进程减慢速度的问题)。

答案 13 :(得分:0)

pull、push 等命令似乎在 git bash 上永远运行。在 git windows 命令行上尝试提示需要 github 身份验证(网络浏览器/个人令牌)。在身份验证方面,命令在 git windows 和 git bash 上也开始正常工作。

问题:https://github.com/git-for-windows/git/issues/3284