几个月前我在 Windows 10 上安装了Git。它运作良好一段时间。但现在,它的运行速度很慢。
git status
命令需要 7秒才能执行,而git stash
需要多分钟才能进行存储(即使没有任何要存储的内容) 。此外,我想指出git status
即时打印结果,但我无法输入新命令几秒钟,如下图所示。
我已经尝试上网搜索问题的解决方案,例如this,this等,但这些都没有奏效。
P.S。:我使用Windows Defender防病毒软件,不使我的Bash变慢。此外, cmd 需要更多时间来执行git
命令,而 git bash 需要更长时间才能执行任何命令。
更新:我已切换到Ubuntu,因此,我目前不使用Windows。所以,我无法检查是否有任何解决方案适合我。我接受@pschild提供的答案,因为它拥有最多的赞成票,似乎对很多人有用。
答案 0 :(得分:47)
我最近碰到了同样的问题。在尝试了该线程和许多其他线程的所有建议后,我终于在链接问题here中找到了解决方案here。
在Windows设备管理器中禁用AMD Radeon图形驱动程序并切换到集成的英特尔高清显卡为我工作 - 无论出于何种原因。
希望有所帮助!
就我而言,我发现 sh.exe shell比bash.exe快得多。你可以在git_install_dir / bin中找到sh.exe。
希望这可以帮助人们解决这个问题,同时只集成英特尔高清显卡!
答案 1 :(得分:23)
对我来说,解决方法是将HOME变量设置为我的用户目录(按此answer)。要做到这一点(至少在Windows 7上):
另见this related question的答案。
答案 2 :(得分:5)
再试一次:
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)
禁用AMD Radeon驱动程序解决了我的问题,但我真的很想知道为什么这部分 希望得到一个侧重于此的答案。
至于原因:
Issue 1070报告。
在等待bash提示时,启动Radeon设置GUI并点击某些内容会立即释放某些内容并使其显示 - 很奇怪。
与AMD联系但没有回复...
但是必须通过这些驱动程序显示所有图形(终端)输出 他们(司机)将他们的钩子带入系统的所有部分,隐藏的中断和超时,善良知道什么。颤抖..
Issue 1129补充道:
从Windows 7(可能是Vista?)开始,控制台能够通过DirectWrite显示自己,DirectWrite构建在Direct3D之上,Direct3D严重依赖于DirectX API的驱动程序实现。
作为直接在
nvd3dum
,nvwgf2umx
和nvapi
工作的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 ,
步骤
希望这会有所帮助!!!!
答案 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 的下一个开源软件:
但是,安装程序 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 上也开始正常工作。