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

Roh*_*tia 58 git git-bash mingw-w64 mintty windows-10

几个月前我在Windows 10上安装了Git .它运作良好一段时间.但现在,它运行得如此之慢.

git status命令需要7秒才能执行,并且git stash需要花费很多分钟来进行存储(即使没有任何东西可以存储).此外,我想指出git status即时打印结果,但我无法输入新命令几秒钟,如下图所示.

屏幕像这样卡住了7秒钟

我曾尝试在网上冲浪的解决我的问题像这个,这个等,但这些都没有工作.

PS:我使用的是Windows Defender杀毒软件,它并没有让我的Bash变慢.此外,cmd需要更多时间来执行git命令,而git bash需要更长的时间来执行任何命令.


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

psc*_*ild 52

我最近碰到了同样的问题.在尝试了这个线程和许多其他线程的所有建议之后,我终于在这里找到了一个解决方案,分别在这里的链接问题中.

在Windows设备管理器中禁用AMD Radeon图形驱动程序并切换到集成的Intel HD图形对我有用 - 无论出于何种原因.

希望有所帮助!

在我的情况下,我发现sh.exe shell比bash.exe快得多.你可以在git_install_dir/bin中找到sh.exe.

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

  • 任何人都有任何想法为什么禁用AMD驱动程序有帮助?我正在努力在驱动程序如何影响git bash的性能之间建立联系.如果我不得不猜测我会假设它可能与git bash窗口中的内容呈现有关.否则,正如所建议的@bySamo是驱动程序中的错误?我可以在AMD驱动程序和git bash程序之间建立的唯一连接是窗口的渲染.有什么想法吗?我想这可能与他们提出的要求有关. (5认同)
  • 错误是AMD驱动程序将每个进程的进程破坏延迟1秒。(我使用Process Monitor识别了该错误。)更新驱动程序可以解决此问题。 (3认同)
  • 伙计,你刚解决了我的问题,谢谢!我不知道为什么会这样,但禁用AMD驱动程序也为我修复了它.我疯狂地想弄清楚是怎么回事:). (2认同)
  • git-cmd.exe 对我来说明显更快 (2认同)

Pau*_*ntz 33

对我来说,解决方案是将HOME变量设置为我的用户目录(根据此答案).为此(至少在Windows 7上):

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

另请参阅此相关问题的答案.

  • 我的问题是我的主文件夹位于共享网络文件夹上。由于我们主要在 VPN 中工作,GIT 读取 .gitconfig 文件的速度非常慢。可能是由于 VPN 协议速度较慢。现在我的家位于本地硬盘上,一切都变得很快了。 (7认同)
  • 这在我的窗户上工作10大声笑不知道为什么 (5认同)

Von*_*onC 8

再试一次:


csh*_*olk 6

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

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

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

自版本 21 起排除位置窗口


小智 6

我在 Windows 7 和 Window 10 上遇到了同样的问题,在使用 git bash 时,我运行的任何命令都需要相当长的时间来执行。最后经过多次令人头疼的试验,发现问题是由于没有以管理员身份运行我的 git bash exe ,

脚步

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

希望这可以帮助!!!!

  • 您能解释一下为什么这可以解决问题吗?为什么用户权限会带来这样的性能提升? (5认同)
  • 我强烈建议反对这种方法 (4认同)

rak*_*aht 5

我曾经遇到过同样的问题,发现的问题是 __git_ps1,基本上是一个变量,该变量包括状态信息,例如分支名称,头状态分离,git dir,裸仓库中,采摘樱桃或重新设基或合并。

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

无论如何,您要注释掉的信息都是非常有用的,特别是如果您刚开始使用GIT的话。这是一个更快的版本,可以在Internet上找到,并且在我的系统上非常成功地被我使用:

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\]                                         
$ '     
Run Code Online (Sandbox Code Playgroud)

  • 我的意思是,ps1更改了,但是git仍然很慢 (2认同)
  • 在我的环境中,我必须编辑 `$GIT_HOME/etc/profile.d/git-prompt.sh` 并删除行 `PS1="$PS1"'``__git_ps1``'` (~第 31 行)。这就像一个魅力。 (2认同)
  • 我有一个速度更快的。这里的核心问题很大程度上是基于这样一个事实:每次在“PS1”变量中生成提示时,它都会分叉多个进程。解决方案是使用纯 bash。请参阅此处的要点(以及我利用“PROMPT_COMMAND”的修改版本):https://gist.github.com/Ragnoroct/c4c3bf37913afb9469d8fc8cffea5b2f (2认同)
  • 的确。运行``__git_ps1````来查看它给你的PS1提示增加了多少延迟。- 我有2-3秒的时间。由于 HOME 在网络上而加剧。为了获得几乎即时的 PS1 更新,我将我的 HOME 移离网络,并从这里使用了更快的 git 分支脚本(无分叉):https://gist.github.com/Ragnoroct/c4c3bf37913afb9469d8fc8cffea5b2f (2认同)

Phi*_*ego 5

你的路径是否充满了垃圾?有时,简单的命令需要花费 20 秒或更长时间,直到我从 PATH 中删除不必要的内容。

Windows:回显%PATH%

搜索“编辑环境变量”进行更改。

其他:回显$PATH


Von*_*onC 5

为了回应Lafexlos赏金

禁用AMD Radeon驱动程序解决了我的问题,但我真的很想知道为什么要这样做。
希望能有一个针对此的答案。

至于原因:

发行1070个报告。

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

联系了AMD,但没有回应...

项目报告

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

问题1129添加:

从Windows 7(也许是Vista?)开始,该控制台可以通过DirectWrite进行显示,DirectWrite是在Direct3D的基础上构建的,而Direct3D很大程度上取决于DirectX API的驱动程序实现。

作为一名前员工NVIDIA谁工作直接nvd3dumnvwgf2umx而且nvapi我可以告诉你,我们是相当怀疑这个决定的智慧。
似乎AMD应该更持怀疑态度,也许他们的驱动程序质量会更好。

  • 投票最多的答案不是关于原因:我的是。 (5认同)
  • 我很感激你写出答案的努力,但[投票最高的答案](/sf/answers/3063381121/)已经有这些链接,所以不幸的是,这并没有添加任何新内容,至少对我来说。 (2认同)

Kos*_*nko 5

尝试了上述对我有意义的所有内容,但没有帮助。

最后我似乎已经解决了这个问题。事实证明,Windows 版的 Git Credentials Manager 试图联系我的域控制器(由于我不在办公室,所以无法联系到),这导致每次我想要联系时都会出现很大的延迟(30 秒以上)git checkout

要解决此问题,只需完全禁用凭据管理器,现在一切都相当快。禁用它的方法如下:How do I disable Git Credential Manager for Windows?

希望能帮助到那些绝望的人,加油!