Git Bash (mintty) is extremely slow on Windows 10 OS
I installed Git on my Windows 10 a couple of months ago. It worked well for some time. But now, it's running very slow.
The git status
command takes 7 seconds to execute, and git stash
takes many minutes for stashing (even if there is nothing to stash). Also, I would like to point out that git status
prints the result instantaneously, but I can not enter a new command for a few seconds, as shown in the image below.
I have tried solutions to similar problems like link1, link2, etc., but none of these have worked.
P.S.: I use Windows Defender antivirus, and it is NOT making my Bash slow. Also, cmd takes more time to execute git
commands while git bash takes longer to run any command.
Update: I have switched to Ubuntu, and therefore, I don't use Windows presently. So, there is no way I can check if any of the solutions work for me. I have accepted the answer provided by @pschild since it has the most upvotes and seems to have worked for many people.
Solution 1:
I recently ran into the exact same issue. After trying all the advice from this thread and a lot of other threads, I finally found a solution here, respectively in the linked issue here.
Disabling AMD Radeon graphics driver in the Windows device manager and switching to integrated Intel HD graphics worked for me - for whatever reason.
Hope that helps!
In my case, I found sh.exe shell to be significantly faster than bash.exe. You can find sh.exe in git_install_dir/bin.
Hope this helps people having this issue while only having integrated Intel HD graphics!
Solution 2:
For me, the solution was to set the HOME variable to my user directory (per this answer). To do this (at least on Windows 7):
- Right-click on "Computer" in file explorer.
- Open Advanced System Settings.
- Open Environment Variables
- Under System Variables, click "New..."
- Enter "HOME" for the variable name and the path to your user directory for the value (for example "C:\Users\jdoe").
See also the answers to this related question.
Solution 3:
I had the same problem once and what I found is that the issue for me was with __git_ps1
, basically a variable that includes status informationlike branch name, detached head state, in the git dir, in a bare repo, in the middle of cherry picking or rebasing or merging.
In order to speed up your git bash, go to $GitHome\etc\profile and comment out the if-then where __git_ps1 is
added to PS1.
Anyway the information that you are commenting out are quite useful, expecially if you are at the beginning with GIT. Here is a faster version, found on the internet and used by me quite succesfully on my system:
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\]
$ '
Solution 4:
In response to Lafexlos's bounty:
Disabling AMD Radeon driver solved my issue but I am really wondering on why part.
Would appreciate an answer which focuses on that.
As to why:
Issue 1070 reports.
Bringing up the Radeon settings GUI and clicking on something while waiting for the bash prompt immediately releases something and makes it appear - weird.
AMD was contacted but no response...
This project reports:
But all of the graphic (terminal) output has to be displayed via those drivers.
They (the drivers) get their hooks into all parts of the system with hidden interrupts and time outs and goodness knows what. Shudders..
Issue 1129 adds:
Starting with Windows 7 (maybe Vista?) the console had the ability to display itself via DirectWrite, which is build on top of Direct3D, which is heavily dependent on driver implementations of DirectX API.
As a former NVIDIA employee who worked directly on
nvd3dum
,nvwgf2umx
andnvapi
I can tell you we were rather skeptical of the wisdom of this decision.
Seems AMD should have been more skeptical, perhaps their driver quality would have been better.
Solution 5:
Try again with:
- the latest Git for Windows you can find, like
PortableGit-2.12.1-64-bit.7z.exe
(unzip it anywhere you want, no setup) -
then in a
CMD
session, set yourPATH
with: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 sameCMD
sessionset HOME=%USERPROFILE%
Finally, type
bash
, and see if any Git operation is still slow.