Git Bash (薄荷)在 Windows10操作系统上非常慢

几个月前,我在 视窗10上安装了 Git。有一段时间效果很好。但现在,它运行得非常慢。

git status命令执行 7秒,而 git stash执行 many minutes进行存储(即使没有可存储的东西)。此外,我想指出的是,git status打印结果即时,但我不能输入一个新的命令几秒钟,如下图所示。

The screen is stuck like this for 7 seconds

我已经尝试解决类似的问题,如 连结1连结2等,但这些都没有工作。

附注: 我使用 Windows Defender 杀毒软件,它是 没有让我的 Bash 变慢。此外,Cmd执行 git命令需要更多的时间,而 Git Bash运行任何命令都需要更长的时间。


更新: 我已经切换到 Ubuntu,因此,我目前不使用 Windows。因此,我没有办法检查是否有任何解决方案适合我。我已经接受了由 @ pschild提供的答案,因为它有最多的赞成票,似乎已经为许多人工作。

112104 次浏览

再试一次:

  • 你可以找到的 最新的 Windows Git,像 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\
    
  • set your HOME in that same CMD session

    set HOME=%USERPROFILE%
    
  • Finally, type bash, and see if any Git operation is still slow.

我曾经遇到过同样的问题,我发现问题出在 __git_ps1上,__git_ps1基本上是一个包含状态信息的变量,比如分支名称,分离的头状态,在 git 目录中,在一个空白的回购中,在初选、重新定基或合并中。

为了加速你的 git bash,访问 $GitHome 等配置文件并注释掉在 PS1中添加了 __git_ps1 is的 if-then。

无论如何,您注释出来的信息是非常有用的,特别是如果您刚开始使用 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\]
$ '

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

Disabling AMD Radeon graphics driver in the Windows device manager and switching to integrated Intel HD graphics 对我有用 - for whatever reason.

希望能帮上忙!

在我的例子中,我发现 性感 shell 明显比 bash.exe 快得多,您可以在 git _ install _ dir/bin 中找到 sh.exe。

希望这能帮助人们在只有综合 Intel HD Graphics 的情况下解决这个问题!

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

Windows: echo% PATH%

Search "edit environment variables" to change.

其他: Echo $PATH

对我来说,解决方案是通过以下步骤将 HOME变量设置为我的用户目录(每个 回答) :

  1. 打开 高级系统设置(见下面的说明)
  2. Open 环境变数
  3. System Variables下面,单击“ New...”
  4. 输入“ HOME”作为变量名和用户的路径 值的目录(例如“ C: Users jdoe”)。

Per Alexandre Jobin's comment, Git Bash can be very slow your HOME variable points to a shared network folder. See also the answers to 这个相关的问题 for more solutions.

如何打开 高级系统设置

在 Windows7到10中,高级系统设置通过以下步骤打开:

  1. 打开文件资源管理器
  2. 右键点击“电脑”
  3. 打开高级系统设置。

在 Windows 11上,步骤略有不同:

  1. 打开“开始”菜单(单击左下角的 something 按钮或键入 ⊞ Win键)。
  2. 在搜索框中键入“查看高级系统设置”,然后按 ENTER。

回应 Lafexlos赏金:

禁用 AMD Radeon 驱动程序解决了我的问题,但我真的想知道为什么部分。
希望你能回答这个问题。

至于原因:

第1070期。

打开 Radeon 设置图形用户界面,在等待 bash 提示符的同时点击一些东西,立即释放一些东西,让它看起来很奇怪。

我们联系了 AMD 但没有回应。

返回文章页面 project reports:

But all of the graphic (terminal) output has to be displayed via those drivers.
他们(驱动程序)用隐藏的中断和超时以及天知道什么东西把他们的钩子钩进系统的所有部分。发抖。.

Issue 1129 adds:

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

As a former NVIDIA employee who worked directly on nvd3dum, nvwgf2umx and nvapi I can tell you we were rather skeptical of the wisdom of this decision.
看起来 AMD 应该更加怀疑,也许他们的驾驶质量会更好。

我有一个类似的问题,但只有当我运行 git bash作为一个普通用户,当我启动 git bash作为一个管理员所有命令运行真的很快。

在我的案例中,结果是问题是由 F-Secure 杀毒软件引起的。我将包含 git.exe的目录添加到被排除的目录列表中(不包括扫描目录) ,它为我解决了这个问题。

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

Excluded locations window as of version 21

在 Windows Defender 排除列表中添加 bash.exe、 cmd.exe 和 conhost.exe 的进程排除,显然解决了我在 Windows 1064位上遇到的问题。

免责声明: 不是修复,而是快速变通。

出于某种原因,在我的计算机更新后——我的计算机上没有 Git bash,所以我不得不重新下载新的2.19.2。窗口。1和我有同样的问题,每次执行需要5-7秒。

我没有时间查看所有的链接和禁用图形驱动程序等等。但是我在我的电脑上安装了 Gitshell 和 Github,我把它调出来(Windows PowerShell) ,我可以立即在上面运行我需要的所有东西。

我在 Windows7和 Windows10上遇到了同样的问题,当使用 git bash 时,我运行的任何命令都需要相当长的时间来执行。最后,经过许多令人头痛的试验,发现这个问题是由于没有运行我的 git bash exe 作为管理员,

Steps

  1. Right click on git bash exe.
  2. 点击“以管理员身份运行”
  3. 输入 cd/c/这样的命令

希望这能有所帮助!

尝试以上的一切对我有任何意义,没有帮助。

Finally I seem to have fixed the issue. Turned out, Git Credentials Manager for Windows tried to contact my domain controller (that is out of reach since I'm out of the office), and that caused a great delay (30+ seconds) each time I wanted to e.g. git checkout.

要解决这个问题,只需要完全禁用凭证管理器,现在一切都相当快了。这是如何禁用它: 如何禁用 Windows 的 Git 凭据管理器?

希望这能帮助那些绝望的人,干杯!

对我来说,问题出在安装的软件 草莓 Perl上。

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

  • OpenSSH
  • 油灰
  • Git for Windows
  • Qt 5.12.6

But, the installator Qt 5.12.6 prompts you to install Strawberry Perl. It seems like this package is needed to automate the creation of software deployment scripts. Strawberry Perl have more open-source software besides the Perl. But in reality in 99% of cases Strawberry Perl installation is unnecessary.

在卸载 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 版本命令会在45秒内执行!卸载 Strawberry Perl 之后,命令立即开始执行。

我将 Windows 10作为虚拟机运行(使用 VMware 融合) ,对我来说,在虚拟机设置中将1个处理器核心改为2个处理器核心(我发现这是推荐的最小值)解决了这个问题。在@rakwaht 的回答中,@block _ split 的评论指向同一个方向(即并发线程或进程减慢速度的问题)。

诸如 pull、 push 等命令在 git bash 上似乎永远都用不完。尝试 git windows 命令行提示 github 身份验证是必要的(web 浏览器/个人令牌)。在身份验证方面,命令开始在 git 窗口和 git bash 上正常工作。

发行: https://github.com/git-for-windows/git/issues/3284

I have been strugling with Git Bash since 2 months because my colleauge( root problem) told me to store git credentials and I don't know what happend to windows 10 but it screwed up. What I have noticed that whenever it starts it is checking the connection to domain server. here goes my solution. I have removed from these arguments from Properties-> 从:% HOMEDRIVE%% HOMEPATH% 开始。

开始-> 搜索 Git Bash-> 打开文件位置-> Git Bash-> 右键单击-> 属性-> 直接访问-> 开始并删除它,无论你有什么。

enter image description here

对我来说,解决方案是将主页环境变量设置为“用户”文件夹。

转到 Start-type "environment"-选择 "Edit environment variables for your account"

在最上面的列表中,检查 HOME变量是否存在。如果它在那里,改变它的价值。如果没有,点击 New...

Variable name将是 HOMEVariable value将是路径,例如 C:\Users\<username>

这对我有帮助的原因是,默认情况下,我的主目录指向共享网络驱动器。这减慢了 GIT 的速度,因为它正在连接到那个网络驱动器。

对我来说,解决的问题是:

  1. 更新 git bash (版本2.34.1 +)
  2. 以管理员身份运行(因此它将运行所有安装后脚本)
  3. 成交

在这之后,我的 Git 狂欢很快就开始了。

升级到 Windows11为我解决了这个问题。Git 控制台现在与本机命令提示符或 Powershell 控制台一样快。所以,如果

  1. 您对缓慢的 git 控制台已经够恼火的了,而且
  2. 您的系统是一台个人电脑,满足升级11个要求,
  3. 您不介意 这些的更改/弃用,

我建议你试试。

It may be due to the default PS1 configuration of git-bash. It's easy to test.

检查 PS1

printf "$PS1\n"

它应该输出类似于

\[\]\[\]\u@\h \[\]$... \[\]\w\[\]`__git_ps1`\[\]$

罪魁祸首可能是 __git_ps1我们来调查一下

time __git_ps1
time __git_ps1
(main)
real    0m0.290s
user    0m0.015s
sys     0m0.030s

We can change our PS1 to something simpler (but faster)

time git rev-parse --abbrev-ref HEAD 2> /dev/null
main


real    0m0.118s
user    0m0.000s
sys     0m0.031s

通过添加以下到我们的 .bashrc

# Use simpler git ps1
PS1="$(sed 's@`__git_ps1`@ (`git rev-parse --abbrev-ref HEAD 2> /dev/null`)@' <<< "$PS1")"

这种方法比修改与 git-forwindows 绑定在一起的提示/ps1内容要好得多。

while we are at it I would also recommend adding

# Delete git for windows PS1 newline
PS1=$(sed 's@\\n@@g' <<< "$PS1")

它去掉了额外的换行符,这会导致 less输出的第一行在退出寻呼机时从屏幕上滚动出来

Lots of great answers here, BUT, none of these options worked/applied or applied in my case,

如果是这样的话,去检查 ~/.bash_history文件。清除这个文件,解决了我的问题。

我在这里检查了所有建议的解决方案,但是没有一个适用于我的情况(路径是好的,本地的英特尔驱动程序,最新版本的 git-bash-windows 等等)

所以我做了一些调查,意识到极端的延迟是由于 bash 历史文件变得如此之大,它延迟了我在 bash 中要做的所有事情,因为它正在加载历史文件并写入它。

例如: 启动、 git 命令、 npm 命令等(有些比其他的慢)

希望这能帮到你,以防你像我一样束手无策:)

Following commands worked very well for me. The solution is taken from following 邮寄

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

通常,在最新的 git 版本中,默认情况下应该启用前两个命令。