100

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

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

屏幕就这样卡了7秒

我已经尝试过类似问题的解决方案,如link1link2等,但这些都没有奏效。

PS:我使用 Windows Defender 防病毒软件,它不会让我的 Bash 变慢。此外,cmd需要更多时间来执行git命令,而git bash需要更长的时间来运行任何命令。


更新:我已切换到 Ubuntu,因此,我目前不使用 Windows。因此,我无法检查是否有任何解决方案适合我。我接受了@pschild提供的答案,因为它获得了最多的支持,并且似乎对很多人都有效。

4

18 回答 18

77

我最近遇到了完全相同的问题。在尝试了该线程和许多其他线程的所有建议后,我终于在这里找到了解决方案分别在此处的链接问题中。

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

希望有帮助!

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

希望这可以帮助人们在仅集成英特尔高清显卡时遇到此问题!

于 2017-05-03T14:15:22.097 回答
64

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

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

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

于 2017-11-28T23:12:14.560 回答
13

我曾经遇到过同样的问题,我发现对我来说问题在于 __git_ps1,基本上是一个变量,其中包括状态信息,如分支名称、分离的头状态、在 git 目录中、在裸仓库中、在樱桃采摘或变基或合并。

为了加快您的 git bash,请转到 $GitHome\etc\profile 并注释掉__git_ps1 is添加到 PS1 的 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\]                                         
$ '     
于 2017-03-31T14:16:35.113 回答
11

再试一次:

  • 你可以找到最新的 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\
    
  • HOME在同一个CMD会话中设置你

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

于 2017-03-26T21:33:34.480 回答
11

响应Lafexlos赏金

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

至于为什么:

问题 1070报告。

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

已联系 AMD,但没有任何回应...

项目报告

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

问题 1129补充说:

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

作为直接在 NVIDIA 工作的前 NVIDIA 员工nvd3dum,我可以告诉你nvwgf2umxnvapi我们对这个决定是否明智持怀疑态度。
似乎 AMD 应该更加怀疑,也许他们的驱动程序质量会更好。

于 2018-01-22T21:38:36.173 回答
7

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

脚步

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

希望这可以帮助!!!!

于 2018-12-05T13:15:16.447 回答
4

您的 PATH 是否充满垃圾?有时,简单的命令对我来说需要 20 秒或更长时间,直到我从 PATH 中删除了不必要的东西。

Windows:回显 %PATH%

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

其他:回声 $PATH

于 2017-10-19T04:42:52.623 回答
4

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

最后我似乎已经解决了这个问题。结果是,Windows 的 Git 凭据管理器尝试联系我的域控制器(因为我不在办公室,所以无法联系到),这导致每次我想联系时都会造成很大的延迟(30 多秒),例如git checkout.

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

希望这对绝望的人有所帮助,干杯!

于 2020-04-23T11:21:36.363 回答
3

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

于 2018-09-01T10:33:33.263 回答
2

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

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

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

从版本 21 开始的排除位置窗口

于 2018-03-02T17:10:11.633 回答
2

对我来说,问题出在安装的软件Strawberry Perl中。

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

  • 开放SSH
  • 油灰
  • 用于 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 后,命令开始立即执行。

于 2021-03-11T13:53:25.643 回答
1

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

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

于 2021-06-21T07:16:40.570 回答
1

升级到 Windows 11 为我解决了这个问题。Git 控制台现在与本机命令提示符或 powershell 控制台一样快。因此,如果

  1. 您对缓慢的 git 控制台感到非常恼火,并且
  2. 你的系统是满足升级11要求的个人电脑,
  3. 您不介意这些更改/弃用,

我说试试看。

于 2021-12-02T00:21:51.200 回答
0

免责声明:不是修复。但快速解决方法。

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

我没有时间查看所有链接并禁用图形驱动程序等等。但是我在我的计算机上安装了 Git shell 和 Github,然后我把它拉了起来(Windows PowerShell),我可以在那里立即运行我需要的一切。

于 2018-12-03T18:51:45.403 回答
0

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

于 2021-04-16T10:32:00.773 回答
0

对我来说,固定的是:

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

在此之后,我的 git bash 打开得非常快。

于 2021-11-25T12:56:39.273 回答
0

自 2 个月以来,我一直在与git bash作斗争,因为我的同事(根本问题)告诉我存储 git 凭据,我不知道 Windows 10 发生了什么,但它搞砸了。我注意到,每当它启动时,它都会检查与域服务器的连接。这是我的解决方案。我已经从 属性中删除了这些参数 -> 开始于: %HOMEDRIVE%%HOMEPATH%

开始 -> 搜索 Git Bash -> 打开文件位置 -> Git Bash -> 右键单击​​ -> 属性 -> 直接访问 -> 开始,然后将其删除。

在此处输入图像描述

于 2021-11-03T09:49:41.140 回答
0

For me, the solution was to set the HOME environment variable to my Users folder.

Go to Start - type "environment" - Select "Edit environment variables for your account"

In the top list, check if HOME variable is there. If it's there, change it's value. If it's not there, click on New....

The Variable name will be HOME and Variable value will be path for example C:\Users\<username>.

The reason why this helped to me is that by default, the Home directory in my case, was pointing to shared network drive. This was slowing down the GIT, because it was connecting to that network drive.

于 2021-11-08T09:59:26.957 回答