Ich verwende git
zum Verwalten von Dateien in einem lokalen Verzeichnis auf einem Windows-Computer. Hier ist kein Netzwerk beteiligt. Ich drücke oder ziehe nicht auf einen anderen Computer. Mein Verzeichnis enthält vielleicht 100 Dateien, alle Testdateien, ziemlich klein. Wenn ich renne git status
, dauert es regelmäßig 20 bis 30 Sekunden. Ist das normal? Kann ich irgendetwas tun, um es zu beschleunigen, oder einen besseren Weg, um den Status meines Repositorys zu sehen (geänderte Dateien, nicht verfolgte Dateien usw.)? Andere git
Befehle scheinen viel schneller ausgeführt zu werden.
85
Antworten:
Haben Sie git gc ausprobiert ? Dies reinigt die Kruft aus dem Git-Repo.
quelle
git status
dentime
Befehl ausgeführt und eine "Echtzeit" von 30.464s erhalten. Ich liefgit gc
danntime git status
noch einmal und bekam eine Echtzeit von 35.409s. Ziemlich seltsam.git status
mehrmaliger Ausführung hintereinander benötigen die nachfolgenden Läufe nur einen Bruchteil der ersten. Wenn Sie also hin und wieder laufengit status
, wird erwartet, dass es sehr schnell läuft.git gc
git status
Bei einem ähnlichen Problem stellte ich fest, dass ein Git-Repo in einem Verzeichnis unterhalb meines vorhandenen Git-Repo zu einer massiven Verlangsamung führte.
Ich habe das sekundäre Git-Repo woanders hingelegt und jetzt ist die Geschwindigkeit schnell!
quelle
Verwenden Sie eine Virenschutzsoftware? Vielleicht stört das die Dinge.
git
ist für mich unter Windows mit Repositorys von Tausenden von Dateien sehr schnell.quelle
Haben Sie versucht, neu zu packen? Git-Repack .
Versuchen Sie andernfalls, das Verzeichnis zu duplizieren und den Ordner .git im duplizierten Verzeichnis zu löschen. Erstellen Sie dann ein neues Git-Verzeichnis und prüfen Sie, ob es noch langsam ist.
Wenn es immer noch langsam ist, klingt es wie ein System- oder Hardwareproblem. Git beendet für mich den Status von Hunderten von Dateien in weniger als 5 Sekunden.
quelle
Aus irgendeinem Grund
git status
ist es besonders langsam, nachdem der Repository-Ordner an einen neuen Speicherort verschoben oder kopiert wurde.Nachfolgende Läufe sind in diesem Fall normalerweise schneller.
quelle
git status
Befehl, also würde er wahrscheinlich dieselbe Zeit in Anspruch nehmen, um ihn auszuführen.Mein
git status
war sehr langsam (bis zu einer Minute), da sich die globale.gitignore
Datei in meinem Windows-Benutzerprofil befand, das auf einer unzugänglichen Netzwerkfreigabe gespeichert war.git config --global core.excludesfile
zeigte so etwas wie
\\Nxxxx0\User\Username\Eigene Dateien\gitignore_global.txt
Aus irgendeinem Grund
\\Nxxxx0
war der Zugriff nicht möglich und mein Benutzerprofil wurde von einem Sicherungssystem geladen\\Nxxxxx1
. Es hat einige Zeit gedauert, um das herauszufinden, da mein Benutzerprofil normalerweise durch ein Unternehmensstart-Skript an einen Laufwerksbuchstaben gebunden ist und der Zugriff auf diesen Laufwerksbuchstaben wie gewohnt funktioniert hat. Ich bin mir nicht sicher, warum die Git-Konfiguration die Netzwerkfreigabe und nicht den Laufwerksbuchstaben verwendet hat (wahrscheinlich ist ein jüngeres Ich schuld).Nach dem Einstellen
git config --global core.excludesfile $HOME/Eigene\ Dateien/gitignore_global.txt
git status
war wieder normale Geschwindigkeit.quelle
Durch das Laufen
git fsck
wurde dieses Problem in der Vergangenheit für mich behoben.quelle
Für mich war die Langsamkeit darauf zurückzuführen, dass viele nicht verfolgte Dateien (temporäre Dateien und Ausgabedateien aus Skripten) vorhanden waren. Das Ausführen
git status -uno
, das die nicht verfolgten Dateien ausschließt, lief viel schneller und entspricht meinen Anforderungenquelle
Das Problem für mich war, dass ich viele verschiedene Repositorys auf meine lokale Festplatte geklont hatte. Je mehr Repos Sie haben, desto länger dauert es, Befehle wie den Git-Status auszuführen.
Ich habe einfach viele der Repos gelöscht, die ich lokal nicht mehr benötigte, und mein Git-Status ging von 1 Minute ~ auf 5 Sekunden.
Ich kann hier keine ähnlichen Antworten sehen.
quelle
git status
Sie in einem Verzeichnis ausführen, in irgendeiner Weise beeinflussen kann. Wenn Ihre Repositorys in verschiedenen Verzeichnissen ausgecheckt sind, können Sie jeweils nurgit status
eines davon ausführen . Es könnte eine andere Geschichte sein, wenn sich Ihre Git-Repos überschneiden, aber das ist sowieso eine schlechte Idee.Ein weiterer Aspekt, der
git status
verbessert wird (in Git 2.14.x / 2.15, Q4 2017), ist, wenn auch ignorierte Dateien angezeigt werden (git status --ignored
)Siehe Commit 5aaa7fd (18. September 2017) von Jameson Miller (
jamill
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 075bc9c , 29. September 2017)Weitere Verbesserungen (eingestellt in Git 2.17, Q2 2018) finden Sie in dieser Antwort .
quelle
node_modules
könnte von dieser Leistungsänderung betroffen sein. Nur vielleicht.Ältere Versionen von Git haben ein Leistungsproblem mit dem Git-Status. Weitere Informationen finden Sie unter Möglichkeiten zur Verbesserung der Git-Status-Leistung .
Git 2.13 hat 1 Fix und 2.17 mehr. Ich bin von 2.7 auf 2.23 umgezogen und es hat den langsamen Status behoben. Für 2.24 ist bald eine weitere Verbesserung geplant.
quelle
In meinem Fall wurde die Langsamkeit dadurch verursacht, dass Sie
git status
als anderer Benutzer als der Eigentümer der Dateien im Projekt ausgeführt wurden.Obwohl dies nicht in allen Fällen der Fall ist, kann ein einfacher
chown
Benutzer für Ihren aktuellen Benutzer den Trick ausführen.quelle
Beginnen Sie mit einem neuen Klon Ihrer Kasse.
und dann git status in mynewrepo.
Alternativ und wenn Sie mutiger sind, entfernen Sie den Müll von Ihrer vorhandenen Kasse.
Dadurch wird vermieden, dass Git einen (möglicherweise großen) Satz ignorierter oder nicht eingecheckter Dateien scannen muss.
quelle