Git Bash (mintty) ist unter Windows 10 extrem langsam


73

Ich habe Git vor ein paar Monaten auf meinem Windows 10 installiert . Es hat einige Zeit gut funktioniert. Aber jetzt läuft es so langsam.

Die Ausführung des git statusBefehls dauert 7 Sekunden und git stashdas Verstauen viele Minuten (auch wenn nichts zu verstauen ist). Ich möchte auch darauf hinweisen, dass git statusdas Ergebnis sofort gedruckt wird, aber ich kann einige Sekunden lang keinen neuen Befehl eingeben, wie in der Abbildung unten gezeigt.

Der Bildschirm bleibt 7 Sekunden lang so hängen

Ich habe versucht, im Internet nach Lösungen für mein Problem wie dieses , dieses usw. zu suchen, aber keines davon hat funktioniert.

PS: Ich verwende Windows Defender Antivirus und es macht meinen Bash NICHT langsam. Außerdem benötigt cmd mehr Zeit, um gitBefehle auszuführen , während git bash länger braucht, um einen Befehl auszuführen.


Update: Ich habe auf Ubuntu umgestellt und verwende daher derzeit kein Windows. Ich kann also auf keinen Fall überprüfen, ob eine der Lösungen für mich funktioniert. Ich akzeptiere die Antwort von @pschild, da es die meisten Upvotes hat und anscheinend für viele Menschen funktioniert hat.


4
Es sieht so aus, als ob das Problem in Ihrer Bash-Eingabeaufforderungseinstellung liegt. Versuchen Sie, die Einstellung PS1='$ 'so einzustellen, dass die Einstellung für ausgefallene Eingabeaufforderungen deaktiviert ist, und prüfen Sie dann, ob sie für Sie immer noch langsam ist.
Holygeek

@holygeek, danke, es hat geholfen. Jetzt dauert der Git-Status ungefähr 3-4 Sekunden anstatt 7. Aber es ist immer noch langsam, oder?
Rohan Bhatia

Ist es nur GIT? Befinden Sie sich auf einem Netzlaufwerk oder einer SSD? Beobachten Sie zufällige Verzögerungen bei der Verwendung Ihres Computers?
Guillaume F.

Ja, es ist nur GIT, alles andere ist in Ordnung. Ich bin nicht auf einem Netzwerklaufwerk oder einer SSD
Rohan Bhatia

1
Als Bounty-Neuling habe ich sowohl den Bounty-Grund als auch die benutzerdefinierte Meldung vermasselt. Das Deaktivieren des AMD Radeon-Treibers hat mein Problem gelöst, aber ich frage mich wirklich, warum. Ich würde mich über eine Antwort freuen, die sich darauf konzentriert.
Lafexlos

Antworten:


62

Ich bin kürzlich auf genau das gleiche Problem gestoßen. All Ratschläge aus diesem Thread und vielen anderen Themen, fand ich endlich eine Lösung nach dem Versuch , hier jeweils in dem verknüpften Problem hier .

Das Deaktivieren des AMD Radeon-Grafiktreibers im Windows-Geräte-Manager und das Umschalten auf integrierte Intel HD-Grafik hat bei mir funktioniert - aus welchem ​​Grund auch immer.

Hoffentlich hilft das!

In meinem Fall stellte ich fest, dass die sh.exe- Shell deutlich schneller ist als bash.exe. Sie finden sh.exe in git_install_dir / bin.

Hoffe, dies hilft Menschen, die dieses Problem haben, während sie nur Intel HD-Grafik integriert haben!


2
Alter, du hast gerade mein Problem behoben, danke!. Ich habe keine Ahnung, warum dies geschieht, aber das Deaktivieren des AMD-Treibers hat es auch für mich behoben. Ich wurde verrückt, als ich versuchte herauszufinden, was los war :).
DVM

1
Mann, vielen Dank. Ich habe den ganzen Tag damit verbracht, dies zum Laufen zu bringen. Ich würde das nie sehen.
Ante Braovic

1
Verbrachte 5 Tage. und schließlich löste dies das Problem. : +1
Swagat Swain

7
Hat jemand eine Idee, warum das Deaktivieren des AMD-Treibers hilft? Ich habe Mühe, die Verbindung zwischen den Auswirkungen des Treibers auf die Leistung von Git Bash herzustellen. Wenn ich raten müsste, würde ich annehmen, dass es vielleicht jemanden hat, der mit dem Rendern des Inhalts im Git-Bash-Fenster zu tun hat. Ansonsten, wie vorgeschlagen @bySamo, ist es ein Fehler im Treiber? Die einzige Verbindung, die ich zwischen dem AMD-Treiber und dem Git-Bash-Programm herstellen kann, ist das Rendern des Fensters. Irgendwelche Gedanken? Ich denke, es könnte etwas mit den Anfragen zu tun haben, die sie stellen.
Lsakurifaisu

7
Der Fehler ist, dass der AMD-Treiber die Prozesszerstörung um 1 Sekunde pro Prozess verzögert. (Ich habe den Fehler mithilfe von Process Monitor identifiziert.) Durch Aktualisieren des Treibers wird dieses Problem behoben.
Nyanpasu64

44

Für mich bestand die Lösung darin, die Variable HOME auf mein Benutzerverzeichnis zu setzen (gemäß dieser Antwort ). Um dies zu tun (zumindest unter Windows 7):

  1. Klicken Sie im Datei-Explorer mit der rechten Maustaste auf "Computer".
  2. Öffnen Sie die erweiterten Systemeinstellungen.
  3. Umgebungsvariablen öffnen
  4. Klicken Sie unter Systemvariablen auf "Neu ...".
  5. Geben Sie "HOME" als Variablennamen und den Pfad zu Ihrem Benutzerverzeichnis für den Wert ein (z. B. "C: \ Users \ jdoe").

Siehe auch die Antworten auf diese verwandte Frage .


Zum Zeitpunkt dieses Problems hatte ich bereits eine HOME-Umgebungsvariable.
Rohan Bhatia

Bisher bin ich mindestens dreimal auf diese Antwort zurückgekommen. Etwas muss HOMEgelegentlich meine Variable löschen ...
Paul Wintz

2
Mein Problem war, dass sich mein HOME-Ordner in einem freigegebenen Netzwerkordner befand. Da wir hauptsächlich in VPN arbeiten, hat GIT die .gitconfig-Datei sehr langsam gelesen. Wahrscheinlich aufgrund des langsamen Protokolls über VPN. Jetzt, wo sich mein Zuhause auf meiner lokalen Festplatte befindet, ist alles wieder schnell.
Alexandre Jobin

10

Ich hatte einmal das gleiche Problem und stellte fest, dass das Problem für mich im __git_ps1Grunde genommen eine Variable war, die Statusinformationen wie den Namen des Zweigs, den Status des getrennten Kopfes, im Git-Verzeichnis, in einem nackten Repo, mitten im Kirschernte oder enthält Umbasieren oder Zusammenführen.

Um deine Git-Bash zu beschleunigen, gehe zu $ ​​GitHome \ etc \ profile und kommentiere das Wenn-Dann-Element aus, das __git_ps1 iszu PS1 hinzugefügt wurde.

Auf jeden Fall sind die Informationen, die Sie auskommentieren, sehr nützlich, insbesondere wenn Sie am Anfang mit GIT stehen. Hier ist eine schnellere Version, die im Internet zu finden ist und von mir recht erfolgreich auf meinem System verwendet wird:

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\]                                         
$ '     

2
Ich meinte ja die ps1 hat sich geändert aber git ist immer noch langsam
Rohan Bhatia

2
In meiner Umgebung musste ich $GIT_HOME/etc/profile.d/git-prompt.shdie Zeile bearbeiten und entfernen PS1="$PS1"'``__git_ps1``'(~ Zeile 31). Das hat wie ein Zauber gewirkt.
Bobbel

1
Ich habe gerade PS1 = '$' gemacht und dadurch lief es unter Windows 10 viel schneller.
Don Smith

Ich wünschte, es könnte mehrere akzeptierte Antworten geben. Es scheint, dass es mehrere Probleme gibt, die Leistungsprobleme mit Git Bash verursachen können. Einige Probleme führen dazu, dass die Ausführung von Befehlen wie dem Git-Status mehrere Sekunden dauert. Andere Probleme führen zu einer Verzögerung bei der Rückkehr zur Eingabeaufforderung, nachdem Befehle ausgeführt wurden. Es scheint, als hätten die meisten der verschiedenen völlig unabhängigen Antworten hier jemandem geholfen. Für mich hat das Update __git_ps1 den Trick gemacht.
Harperka

Nach stundenlangem Testen ... Grafiktreiber, Einstellungen für HOME-Umgebungsvariablen, git bash als Administrator starten, nichts hat geholfen. Aber als ich die PS1-Eingabeaufforderung in my <git_install_folder>/etc/profile.d/git-prompt.shänderte, um eine fast_git_ps1-Funktion zu verwenden, begann sie sofort zu beschleunigen. Das Weglassen des __git_ps1-Teils der Eingabeaufforderung hat es sogar sofort geschafft, aber die nützlichen
Zweiginformationen

9

Versuchen Sie es erneut mit:

  • das neueste Git für Windows, das Sie finden können, wie PortableGit-2.12.1-64-bit.7z.exe(entpacken Sie es, wo immer Sie wollen, kein Setup)
  • CMDStellen Sie dann in einer Sitzung Ihre ein PATHmit:

    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\
    
  • Stellen Sie Ihre HOMEin derselben CMDSitzung ein

    set HOME=%USERPROFILE%
    
  • Geben Sie abschließend ein bashund prüfen Sie, ob eine Git-Operation noch langsam ist.


Muss ich meine letzte Version von Git deinstallieren? Es war auch 2.12.1, aber das war kein tragbarer Git
Rohan Bhatia

@RohanBhatia Nein; Dies ist eine tragbare Version: Dekomprimieren Sie sie einfach, wo immer Sie möchten. Auf diese Weise können Sie mehrere Git-Versionen haben. Nur Ihr PFAD muss angepasst werden.
VonC

@RohanBhatia Enthält Ihr PATH nur Git- und System32-Windows-Ordner? Und befindet sich Ihre Ansicht in Laufwerk C: \? (oder wird über einen gemeinsam genutzten Netzwerkpfad darauf zugegriffen?) Dauert der Git-Status in einer CMD-Sitzung lange? (im Gegensatz zu einer Git Bash Session)
VonC

Sie können meine Pfadvariablen und andere Umgebungsvariablen hier sehen . Nicht klar, was Sie mit dem Blick bedeuten, die in Laufwerk C, aber mein Programm Dateien und alles andere ist in Laufwerk C . Ja, leider dauert der Git-Status fast genauso lange, um den Git-Status oder einen anderen Git-Befehl auszuführen.
Rohan Bhatia

@RohanBhatia keine Umgebungsvariable Windows erforderlich. Öffnen Sie einfach eine CMD, geben Sie die von setmir erwähnten ' ' Befehle ein, cd zu Ihrer Ansicht, und versuchen Sie dort einen Git-Status (keine Bash erforderlich)
VonC

9

Als Antwort auf Lafexlos ' Kopfgeld :

Das Deaktivieren des AMD Radeon-Treibers hat mein Problem gelöst, aber ich frage mich wirklich, warum.
Würde mich über eine Antwort freuen, die sich darauf konzentriert.

Warum:

Ausgabe 1070 Berichte.

Wenn Sie die Benutzeroberfläche für die Radeon-Einstellungen aufrufen und auf etwas klicken, während Sie auf die Bash-Eingabeaufforderung warten, wird sofort etwas freigegeben und es erscheint seltsam.

AMD wurde kontaktiert, aber keine Antwort ...

Dieses Projekt berichtet :

Die gesamte Grafikausgabe (Terminalausgabe) muss jedoch über diese Treiber angezeigt werden.
Sie (die Fahrer) bekommen ihre Haken in alle Teile des Systems mit versteckten Interrupts und Timeouts und Güte weiß was. Schaudert ..

Ausgabe 1129 fügt hinzu:

Ab Windows 7 (vielleicht Vista?) Konnte sich die Konsole über DirectWrite anzeigen lassen, das auf Direct3D aufbaut, das stark von den Treiberimplementierungen der DirectX-API abhängt.

Als ehemaliger NVIDIA-Mitarbeiter, der direkt daran gearbeitet hat nvd3dum, nvwgf2umxund nvapiich kann Ihnen sagen, waren wir der Weisheit dieser Entscheidung eher skeptisch gegenüber.
AMD hätte eher skeptisch sein sollen, vielleicht wäre ihre Fahrerqualität besser gewesen.


Ich freue mich über Ihre Bemühungen, eine Antwort zu verfassen, aber die Antwort mit der höchsten Bewertung enthält bereits diesen Link. Leider fügt dies zumindest für mich nichts Neues hinzu.
Lafexlos

5

Ich hatte das gleiche Problem unter Windows 7 und Windows 10, während ich die Git-Bash verwendete. Die Ausführung eines Befehls, den ich ausführe, würde viel Zeit in Anspruch nehmen. Schließlich stellte ich nach vielen Versuchen mit Kopfbruch fest, dass das Problem darauf zurückzuführen war, dass meine Git-Bash-Exe nicht als Administrator ausgeführt wurde.

Schritte

  1. Klicken Sie mit der rechten Maustaste auf git bash exe.
  2. Klicken Sie auf "Als Administrator ausführen".
  3. Geben Sie Befehle wie cd / c / ein

hoffe das hilft!!!!


3

Versuchte alles darüber, was für mich Sinn machte, half nicht.

Schließlich scheint ich das Problem behoben zu haben. Es stellte sich heraus, dass Git Credentials Manager für Windows versucht hat, meinen Domänencontroller zu kontaktieren (der nicht erreichbar ist, da ich nicht im Büro bin), und dies verursachte jedes Mal eine große Verzögerung (30+ Sekunden), wenn ich z git checkout.

Um dies zu beheben, musste nur der Credentials Manager vollständig deaktiviert werden, jetzt ist alles ziemlich schnell. So deaktivieren Sie es: Wie deaktiviere ich Git Credential Manager für Windows?

Hoffe das hilft den Verzweifelten, Prost!


2

Das Hinzufügen eines Prozessausschlusses für bash.exe, cmd.exe und conhost.exe in der Liste der Windows Defender-Ausschlüsse hat das Problem für mich unter Windows 10 64-Bit anscheinend gelöst.


2

Ist dein Pfad voller Müll? Einfache Befehle dauerten manchmal 20 Sekunden oder länger, bis ich unnötige Dinge aus meinem Pfad entfernte.

Windows: echo% PATH%

Suchen Sie nach "Umgebungsvariablen bearbeiten", um sie zu ändern.

Sonstiges: echo $ PATH


1
unter Windows ist das set pathübrigens.
1mike12

superuser.com/questions/1070994/… möchte auch hier auf diesen verweisen. Ich denke, vor allem die Intel-Sachen zu reinigen, hat meine Muschel schneller gemacht
Joel

Auf einem anderen Win7 AD-Computer dauert es jedes Mal 2 Sekunden, wenn ich die Eingabetaste drücke. CMD arbeitet schnell. MinGW, Cygwin langsam. Intel-Grafik. Versuchte alle Antworten und machte mich verrückt.
Philip Rego

1

Ich habe ein ähnliches Problem, aber nur wenn ich git bashals normaler Benutzer ausgeführt wurde, als ich git bashals Administrator gestartet bin, wurden alle Befehle sehr schnell ausgeführt.

In meinem Fall stellte sich heraus, dass das Problem durch F-Secure Antivirus verursacht wurde. Ich git.exehabe der Liste der ausgeschlossenen Verzeichnisse (vom Scannen ausgeschlossen) ein Verzeichnis hinzugefügt, das dieses Problem für mich gelöst hat.

So schließen Sie das Verzeichnis aus: https://community.f-secure.com/t5/Business/Excluding-objects-from-Real-Time/ta-p/66013


Ich hatte wochenlang das gleiche Problem. Tks!
Thiago Lunardi

0

Haftungsausschluss: Keine Lösung. Aber schnelle Problemumgehung.

Aus irgendeinem Grund hatte ich nach der Aktualisierung meines Computers keinen Git-Bash auf meinem Computer, daher musste ich den neuen 2.19.2.windows.1 erneut herunterladen, und ich hatte das gleiche Problem, da jede Ausführung 5-7 Sekunden dauerte.

Ich hatte keine Zeit, mir alle Links anzusehen und Grafiktreiber zu deaktivieren und was nicht. Aber ich hatte Git Shell mit Github auf meinem Computer installiert und ich habe das aufgerufen (Windows PowerShell) und ich konnte dort alles ausführen, was ich sofort brauchte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.