Das bedeutet normalerweise, dass ein Prozess immer noch diese bestimmte Datei verwendet (hat immer noch ein Handle)
(unter Windows ProcessExplorerist es gut, diese Art von Prozess zu verfolgen)
Versuchen Sie, Ihre anderen Programme zu schließen, und versuchen Sie es erneut git pull.
Beachten Sie, dass Sie mit der GIT_ASK_YESNOVariablen eine Alternative haben .
Update Januar 2019:
Dies sollte mit Git 2.21 (Q1 2019) noch behoben werden, da " git gc" und " git repack" die offenen Packdateien, die sie vor dem Entfernen für nicht erforderlich befunden hatten, nicht geschlossen haben, was auf einer Plattform, die nicht in der Lage war, eine geöffnete Datei zu entfernen, nicht funktionierte.
Dies wurde korrigiert.
Siehe Commit 5bdece0 (15. Dezember 2018) von Johannes Schindelin ( dscho) .
(Zusammengeführt von Junio C Hamano - gitster- in Commit 5104f8f , 18. Januar 2019)
gc/ repack: Packungen bei Bedarf freigeben
Unter Windows können Dateien nicht entfernt oder umbenannt werden, wenn noch Handles von einem Prozess gehalten werden.
Um dem abzuhelfen, haben wir die close_all_packs()Funktion eingeführt.
Zuvor haben wir sichergestellt, dass die Packs kurz vor dem Erscheinen freigegeben werden git gc, falls gcnicht mehr benötigte Packs entfernt werden sollen.
Dieser Entwickler hat jedoch vergessen, dass er gcselbst auch Packs loslassen muss, z. B. wenn alle Packs über die --aggressiveOption konsolidiert werden .
Ebenso git repack -dmöchte veraltete Packs löschen und muss daher auch alle Pack-Handles schließen.
Update Januar 2016
Dies sollte in Git 2.8 (März 2016) behoben werden (siehe Git 2.19, Q3 2018 unten).
Siehe Commit d562102 , Commit dcacb1b , Commit df617b5 , Commit 0898c96 (13. Januar 2016) von Johannes Schindelin ( dscho) .
(Zusammengeführt von Junio C Hamano - gitster- in Commit 3c80940 , 26. Januar 2016)
fetch: Pack-Dateien vor dem Sammeln von Müll freigeben
Vor dem automatischen Gc'ing müssen wir sicherstellen, dass die Pack-Dateien freigegeben werden, falls sie neu gepackt und mit Müll gesammelt werden müssen.
Viele Codepfade, die gc --autovor dem Beenden " " ausgeführt werden, haben die Paketdateien zugeordnet und die Dateideskriptoren offen gelassen, was für Systeme, die geöffnete Dateien nicht entfernen können, nicht geeignet war.
Sie schließen jetzt die Packungen, bevor sie dies tun.
Das behebt das git-for-widowsProblem 500 .
Wenn man sich den Test ansieht, der zur Validierung dieses neuen Ansatzes verwendet wird , besteht eine mögliche Problemumgehung (da Git 2.8 noch nicht verfügbar ist) darin, künstlich zu erhöhen gc.autoPackLimit.
git config gc.autoPackLimit 10000
git fetch
git config gc.autoPackLimit 50 # default value
In Git 2.8.4 (Juni 2016) wird das Problem 755 erwähnt, das das Problem ebenfalls lindern sollte ( Commit 2db0641 ):
Stellen Sie sicher, dass temporäre Dateihandles nicht von untergeordneten Prozessen geerbt werden
Tatsächlich ist das oben erwähnte git-for-windowsProblem 500 mit Git 2.19, Q3 2018, wirklich behoben.
Siehe " Git - Verknüpfung der Datei aufheben .idxund .packfehlgeschlagen (das einzige prozesseigene Handle für diese Datei ist git.exe) ".