Ich liebe Git und benutze es unter OS X ziemlich ständig zu Hause. Bei der Arbeit verwenden wir svn unter Windows, möchten jedoch auf git migrieren, sobald die Tools vollständig ausgereift sind (nicht nur TortoiseGit , sondern auch etwas, das der wirklich schönen Visual Studio-Integration von VisualSVN ähnelt ). Aber ich schweife ab...
Ich habe kürzlich msysgit auf meinem Windows 7-Computer installiert , und wenn ich die mitgelieferte Version von bash verwende, ist es schrecklich langsam. Und nicht nur die Git-Operationen; clear
dauert etwa fünf Sekunden . AAAAH!
Hat jemand ein ähnliches Problem erlebt?
Bearbeiten : Es scheint , dass msysgit nicht gut mit spielen UAC und könnte nur ein winziges Design Versehen von der Entwicklung auf XP resultierende oder mit Windows Vista oder 7 mit UAC deaktiviert; Starten von Git Bash mitRun as administrator
Ergebnissen führt zu der Blitzgeschwindigkeit, die ich unter OS X sehe (oder auf 7 nach dem Starten von Git Bash ohne Netzwerkverbindung - siehe @ Gauthier-Antwort).
Edit 2 : AH HA! Siehe meine Antwort.
Antworten:
Sie können Git unter Windows erheblich beschleunigen, indem Sie drei Befehle ausführen, um einige Konfigurationsoptionen festzulegen:
Anmerkungen:
core.preloadindex
führt Dateisystemoperationen parallel aus, um die Latenz auszublenden (Update: standardmäßig in Git 2.1 aktiviert)core.fscache
behebt UAC-Probleme, sodass Sie Git nicht als Administrator ausführen müssen (Update: standardmäßig in Git für Windows 2.8 aktiviert)gc.auto
minimiert die Anzahl der Dateien in .git /quelle
git config --global core.fscache true
tat nichts für mich; allerdingsgit config core.fscache true
hat der Trick. Demnach liegt es daran , dass core.fscache eine Pro-Repo-Einstellung ist.fscache
nur als Pro-Repo-Einstellung funktioniert. Globale Einstellungen gelten für alle Repos auf einer Maschine, sofern sie nicht durch die Pro-Repo-Einstellungen überschrieben werden.Die Lösung für Langsamkeit unter Vista oder 7 scheint darin zu bestehen, Git Bash mit
Run as administrator
(oder durch Deaktivieren der Benutzerkontensteuerung für die Git Bash- Verknüpfung ... oder durch vollständiges Deaktivieren der Benutzerkontensteuerung auszuführen ). Der Unterschied ist Tag und Nacht und die Verwendung von Git auf 7 ist wieder fantastisch.Dies scheint mit einem bekannten Problem zu tun zu haben, und wie ich spekuliert habe, ist XP als Entwicklungsumgebung für msysgit teilweise verantwortlich.
quelle
ls
in einem praktisch leeren Verzeichnis)Für mich war das Problem die Verwendung von __git_ps1 in der Shell-Eingabeaufforderung - ich denke aufgrund des langsamen Festplattenzugriffs in msysgit.
Die Lösung bestand darin, $ (__ git_ps1) aus den Zeilen PS1 = ... in / etc / profile zu entfernen
Schnelltest, ob diese Lösung zutrifft: Geben Sie in einer Git-Shell export PS1 = '$' ein und überprüfen Sie die Geschwindigkeit Ihrer Vorgänge.
quelle
__git_ps1
aktiv lassen , wenn Sie die Einstellungen SHOWDIRTYSTATE und / oder SHOWUNTRACKEDFILES deaktivieren, siehe stackoverflow.com/a/4203968/321973Versuchte fast alle Tipps hier (einschließlich der aus meiner anderen Antwort) auf einem neuen Computer, aber sie funktionierten nicht, Git immer noch langsam wie die Hölle.
Dann habe ich mir die vorinstallierte Virusscanning-Software angesehen: Ich habe das Echtzeit-Scannen des McAfee Security Centers deaktiviert , und presto: git ist jetzt blitzschnell! Die für "git svn rebase" benötigte Zeit sank von 30 auf 5 Sekunden (!).
Ich hoffe, dass dies für andere Leute hilfreich ist, die immer noch Probleme mit langsamem Git unter Windows haben. Ich habe Stunden verloren, um das herauszufinden.
quelle
Leider hat 'Als Administrator ausführen' bei mir nicht funktioniert - aber wie Kevin L herausfand, funktionierte das Trennen des Netzwerkadapters, das Starten von git bash und das erneute Verbinden einwandfrei. Also habe ich dies in ein Batch-Skript eingepackt und eine Verknüpfung in mein Startmenü eingefügt, die als Administrator gekennzeichnet ist:
Funktioniert ein Vergnügen, solange ich mich erinnere, dass mein Netzwerk vorübergehend unterbrochen wird.
(Win 7 Professional SP1, Git Version 1.7.8-Vorschau20111206)
quelle
Ein Kollege von mir hatte dieses Verhalten, wenn Outlook ausgeführt wurde. Ich versuche, Outlook zu töten und erneut zu testen.
Sie können auch versuchen zu testen:
quelle
Wir haben festgestellt, dass bei der Ausführung auf bestimmten Benutzerkonten separate git.exe-Instanzen bei einem Aufruf von blockiert werden
WaitForSingleObject()
, sodass nur eine einzige git.exe-Operation gleichzeitig effektiv ausgeführt werden kann. Das Ändern des Benutzerkontos hat dieses Problem umgangen.Details hier: https://stackoverflow.com/a/13054022
quelle
Ich habe MacAffee und fordere es auf, das .git-Verzeichnis und alle Unterverzeichnisse vom Echtzeit-Scannen auszuschließen, um das Leistungsproblem zu beheben.
quelle
Wie in dieser Ausgabe zu sehen ist , macht das Ausführen mit deaktivierter UAC-Virtualisierung (es ist nicht erforderlich, die UAC vollständig zu deaktivieren) einen großen Unterschied.
In diesem Beitrag wird erläutert, wie Sie es deaktivieren (siehe unten im Beitrag, nur eine Registrierungseinstellung).
Bei einem (großen) SVN-Repo, mit dem ich eine Verbindung herstelle, wurde durch die oben genannte Änderung die für "git svn rebase" benötigte Zeit von 15 auf 5 Sekunden gesenkt, was eine Verbesserung um den Faktor 3 darstellt.
quelle
Eine Alternative zum Herumspielen mit der Windows 7-Benutzerkontensteuerung besteht darin, mysysgit außerhalb Ihres Ordners "Programme" zu installieren. Versuchen Sie beispielsweise anstelle von "C: \ Programme (x86) \ Git", in "C: \ git" zu installieren.
Ich habe erfolglos versucht, mit 'Als Administrator ausführen' und UAC-Steuerelementen herumzuspielen, aber aufgegeben und eine Neuinstallation gestartet. Ich hatte vorher ungefähr 15KiB / s, aber jetzt sind es über 60kiB / s.
quelle
Wenn das Ausschalten der Benutzerkontensteuerung die Leistung nicht verbessert, schalten Sie den luafv-Treiber aus. Dies funktionierte für mich, nachdem ich fast alles auf dieser Seite und einige ähnliche Fragen ausprobiert hatte. Git ist von ungewöhnlich langsam zu ziemlich anständig geworden.
Öffnen Sie 'regedit' und suchen Sie den Registrierungsschlüssel
Ändern Sie den Wert von
Start
von 2 auf 4.Die Details zum Deaktivieren
luafv
habe ich hier gefunden . Beachten Sie, dass ich persönlich keine Ahnung habe, wasluafv
ist oder tut. Diese Seite enthält verschiedene Warnungen vor schlechten Dingen, die beim Ausschalten auftreten können und die Sie wahrscheinlich ernst nehmen sollten.EDIT: Der Kommentar unten hat darauf hingewiesen, dass ich das falsch herum verstanden habe (der Link hat es richtig herum). Es ist jetzt behoben. Entschuldigung an die Leute, deren Register ich weggeworfen habe :)
quelle
Ich habe gerade eine Weile Fehlerbehebung durchgeführt und es fiel mir schwer, die Ursache des Problems zu ermitteln. Am Ende fand ich zwei Dinge, die einen dramatischen Einfluss hatten:
quelle
Das Problem hier könnte die Bash-Vervollständigung sein, wenn diese aktiviert ist, was unter Windows etwas langsamer ist als unter Linux.
Versuchen Sie, die PS1-Variable auf etwas Einfaches wie "$" zu setzen, und prüfen Sie, ob dies die Dinge beschleunigt. Wenn dies der Fall ist, beachten Sie, dass die Bash-Vervollständigung in den neuesten Git-Versionen optimiert wurde. Möglicherweise müssen Sie ein Upgrade durchführen.
quelle
Das hat bei mir funktioniert. Erwarten Sie nicht, dass es sich um eine Einheitslösung handelt.
Überprüfen Sie die Umgebungsvariable $ HOME in Bash und Windows. Wenn es auf ein Benutzerkonto verweist, überprüfen Sie das Windows-Profil / die Berechtigungen des Benutzers. Ändern Sie entweder das Benutzerkonto oder das $ HOME entsprechend.
quelle
Ich habe seit geraumer Zeit das gleiche Problem beim Ausführen von git für Windows (msysgit) unter Windows 7 x64 als eingeschränktes Benutzerkonto festgestellt. Nach dem, was ich hier und an anderen Orten gelesen habe, scheint das gemeinsame Thema das Fehlen von Administratorrechten und / oder Benutzerkontensteuerung zu sein. Da die Benutzerkontensteuerung auf meinem System deaktiviert ist, ist die Erklärung, dass versucht wird, etwas in das Programmdateiverzeichnis zu schreiben / löschen, für mich am sinnvollsten.
Auf jeden Fall habe ich mein Problem gelöst, indem ich die tragbare Version von Git 1.8 mit zipinstaller installiert habe. Beachten Sie, dass ich die .7z-Verteilungsdatei entpacken und als Zip neu packen musste, damit das Zip-Installationsprogramm funktioniert. Ich musste dieses Verzeichnis auch manuell zu meinem Systempfad hinzufügen.
Die Leistung ist jetzt in Ordnung. Obwohl es im Verzeichnis Programme (x86) installiert ist, für das ich als eingeschränkter Benutzer keine Berechtigungen habe, scheint es nicht unter demselben Problem zu leiden. Ich schreibe dies entweder der Tatsache zu, dass die tragbare Version etwas konservativer ist, wenn sie Dateien schreibt / löscht, was wahrscheinlich der Fall ist, oder dem Upgrade von 1.7 auf 1.8. Ich werde nicht versuchen herauszufinden, welcher der Grund ist. Es reicht zu sagen, dass es jetzt viel besser funktioniert .
quelle
Möglicherweise möchten Sie versuchen, msysgit zu deinstallieren, Windows neu zu starten und die neueste Version von msysgit zu installieren. Es schien den Trick für mich zu tun. Ich habe diesen Vorschlag hier gefunden:
https://stackoverflow.com/a/4506192/1413941
BEARBEITEN
PS Ich hatte die Benutzerkontensteuerung bereits deaktiviert, bevor ich auf langsame Git-Probleme stieß. Daher weiß ich nicht, ob die Deaktivierung der Benutzerkontensteuerung erforderlich ist oder nicht, damit Git schnell funktioniert.
quelle
Die beste Lösung ist, wie bereits erwähnt, als Administrator zu arbeiten. Eine weitere Option, um den Git-Status zumindest schnell zu machen , ist trustctime = false . Vorher dauerte dieser Git-Status ungefähr 30 Sekunden und danach ist es der gleiche Betrag, der in der Ausgabe angezeigt wird. Es dauerte X Sekunden, bis ...
quelle
Sie können auch einen wichtigen Leistungsschub erzielen, indem Sie die folgende Git-Konfiguration ändern:
Beim Ausführen des einfachen
git status
Befehls unter Windows 7 x64 dauerte die Ausführung meines Computers mehr als 30 Sekunden. Nachdem diese Option definiert wurde, erfolgt der Befehl sofort.Durch Aktivieren von Gits eigener Ablaufverfolgung, wie auf der folgenden Seite erläutert, konnte ich den Ursprung des Problems ermitteln, das sich in Ihrer Installation unterscheiden kann: https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so- langsam
quelle
Es ist wahrscheinlich eine Frage der Eingabeaufforderung, die Ihr Git-Repository analysiert. Sie können testen, indem Sie irgendwo außerhalb eines Git-Repositorys "clear" ausführen. Und Sie können es beschleunigen, indem Sie entweder git-finish.bash patchen oder mit core.filemode Streiche spielen.
Was die Visual Studio-Integration betrifft: Dies ist Open Source. Es ist unfair zu erwarten, dass andere kostenlos für Sie arbeiten.
Ich finde es auch ziemlich lustig, die Frage nicht auf der msysGit-Mailingliste zu stellen, aber jetzt schweife ich ab .
quelle