Mit einer der Dateien in meinem lokalen Git-Repository stimmt etwas nicht. Wenn ich versuche, den Zweig zu ändern, heißt es:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
Was könnte das bedeuten?
Mit einer der Dateien in meinem lokalen Git-Repository stimmt etwas nicht. Wenn ich versuche, den Zweig zu ändern, heißt es:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
Was könnte das bedeuten?
Antworten:
Dies kann bedeuten, dass ein anderes Programm die Datei verwendet, wodurch verhindert wird, dass git die Datei in das Arbeitsverzeichnis oder aus dem Arbeitsverzeichnis "verschiebt", wenn Sie versuchen, Zweige zu ändern.
Ich habe dies unter Windows Vista geschehen lassen, wo Eclipse das Programm ist, das die Datei "verwendet". Die Datei ist möglicherweise nicht in Eclipse geöffnet, wurde jedoch möglicherweise von einem von Eclipse ausgeführten Prozess geöffnet.
Versuchen Sie in diesem Fall, die Datei in allen Anwendungen zu schließen, die sie möglicherweise verwendet haben. Wenn dies nicht funktioniert, beenden Sie alle Anwendungen, die die Datei möglicherweise geöffnet haben, vollständig.
GitKraken
Sie dies möglicherweise, wenn Sie Befehle wie eine Rebase ausführen
Ich hatte dieses Problem und löste es durch den Befehl: git gc
Der obige Befehl entfernt temporäre und unnötige Dateien. (Müllsammler.)
git pull
git gc
automatisch initiiert und gc versuchte, auf einige .pack- und .inx-Dateien zuzugreifen. Diese wurden vom "Windows Git" -Prozess gehalten, dem der git pull
Befehl gehörte. Manuelles Ausführen git gc
und dann - git pull
behebt das Problem wirklich.
git gc
bekam ich wieder den gleichen Fehler, als er gerade gc
lief
Diese Lösung von hier hat für mich funktioniert:
Dies ist eine Windows-spezifische Antwort, daher bin ich mir bewusst, dass sie für Sie nicht relevant ist. Ich füge sie nur zum Nutzen zukünftiger Sucher ein.
In meinem Fall lag es daran, dass ich Git über eine nicht erhöhte Befehlszeile ausführte. "Als Administrator ausführen" hat das Problem für mich behoben.
Ctrl+C
um die sehr lange Liste nicht verknüpfbarer Dateien zu beenden; gitbash, meine IDE und die GitHub Windows-Anwendung beendet; gitbash im erhöhten Modus "Als Administrator ausführen" neu gestartet; und rannte git gc --aggressive
. Es dauerte eine Weile, bis es fertig war, aber ohne Fehler durchgekommen.
Ich bin auf dieses Problem gestoßen, als ich a git pull
.
Ich habe es versucht git gc
und es hat mein Problem gelöst.
In meinem Fall gibt es keine Prozesse, die die Datei oder das Verzeichnis berühren. Möglicherweise passiert es, wenn der Pfad sehr lang ist, weil eine Betriebssystembeschränkung (Windows). Versuchen Sie, das Longpath-Support-Flag in der globalen Git-Konfiguration wie unten angegeben zu aktivieren:
git config --global core.longpaths true
oder versuchen Sie, das Ja / Nein-Antwortflag zu setzen, wenn es für Sie nicht in Konflikt steht
set GIT_ASK_YESNO=false
Wenn der Pfad zu lang ist, habe ich keine erfolgreiche Lösung gefunden.
GIT_ASK_YESNO
, kann keine Informationen zu diesem finden. Woher kommt das ?
core.longpaths
mit zusätzlichem: reset --hard prune gc hat bei mir funktioniert - musste aber AndroidStudio schließen, um die
Ich habe es versucht git gc
und es hat mein Problem gelöst.
Dies kann für jemanden nützlich sein. Wenn all das bei Ihnen nicht funktioniert hat, gehen Sie folgendermaßen vor:
Schließen Sie Ihre IDE (meine war Eclipse, nicht sicher, ob sie für Intellij und andere gilt) oder eine andere App, die möglicherweise git verwendet.
Öffnen Sie git über die Befehlszeile (in meinem Fall hatte ich git bash) und führen Sie es git gc
wie von anderen erwähnt aus.
Das hat die Magie für mich getan.
Da ich Gitkraken und die Eingabeaufforderung verwende, bin ich auf dasselbe Problem gestoßen . Und dann git gc
führe ich Befehl aus, es hat mein Problem gelöst. Also bin ich glücklich und möchte einige der Punkte teilen, die hilfreich sein könnten.
Was git gc
wird tun?
git gc
Entfernen nicht erreichbarer Objekte, die möglicherweise aus früheren Aufrufen von git add erstellt wurden.
Wann laufen git gc
?
In doc wird den Benutzern empfohlen, diese Aufgabe regelmäßig in jedem Repository auszuführen, um eine gute Speicherplatzauslastung und eine gute Betriebsleistung zu gewährleisten.
Wie mache ich es automatisch konfigurierbar?
Einige git-Befehle führen möglicherweise automatisch git gc aus. Einzelheiten finden Sie unter der Flagge --auto unten. Wenn Sie wissen, was Sie tun, und alles, was Sie möchten, ist, dieses Verhalten ohne weitere Überlegungen dauerhaft zu deaktivieren, tun Sie es einfach
git config --global gc.auto 0
In meinem Fall (Win8.1, TortoiseGit wird ausgeführt) war es der Prozess "TortoiseSVN-Statuscache", der die Datei sperrte.
Durch das Töten konnte ich "git gc" ohne weitere Probleme ausführen. Der obige Prozess wird von TortoiseGit gestartet, sodass Sie ihn nicht manuell neu starten müssen.
Ich hatte diese Art von Problem unter Windows 7 und es stellte sich heraus, dass dies auf einen verwaisten git.exe
Prozess zurückzuführen war.
Öffnen Sie zur Lösung den Task-Manager und beenden Sie alle git.exe
Prozesse.
Da git
Befehle nur von kurzer Dauer sind, sollten Sie normalerweise keine git.exe
im Task-Manager sehen. Wenn sie dort sind, bedeutet dies normalerweise, dass etwas nicht stimmt, und Sie sollten diese Prozesse beenden.
Unter Windows 8: Ich habe git gc ausgeführt und es wurde angegeben, dass git gc bereits ausgeführt wurde. Ich habe git gc --force ausgeführt und der Garbage Collector wurde ausgeführt.
Ich könnte dann Zweige wechseln und ohne Probleme zusammenführen, versuchen Sie es mit git gc --force.
Vielleicht hat der GC-Prozess aus dem einen oder anderen Grund nicht anmutig aufgehört.
Ich hatte dieses Problem mit .tmp
Dateien im /.git/objects/pack
Ordner. Ich glaube, während eines Push- oder Pull-Vorgangs ist etwas fehlgeschlagen. Deshalb habe ich diese temporären Dateien entfernt und den HEAD auf mein letztes Commit zurückgesetzt. Ich bin mir nicht sicher, ob dies empfohlen wird, aber es hat bei mir funktioniert. Gab git count-objects -v
mir auch eine Liste der .tmp
Dateien, die nicht in den Pack-Ordner gehörten.
Oder um die J / N-Nachrichten in Windows zu unterdrücken git open cmd.exe
und auszuführen:
SETX GIT_ASK_YESNO false
hier zu sehen: https://twitter.com/petercamfield/status/494805475733807104
git gc
, git count-objects -v
hilft Überbleibsel Temp Objekte in dem bei der Identifizierung pack
Ordner.
Ich konnte dieses Problem lösen, indem ich Powershell als Administrator und von dort aus
öffnetegit checkout <branch_name>
Ich hatte das gleiche Problem, als ich 'Git Pull' machte. Ich habe den manuellen Housekeeping-Git-Befehl 'git gc' ausprobiert und mein Problem behoben.
Nach dem Befehl ausführen
git rm -rf foo.bar
Ich sehe Fehler
Unlink of file 'foo.bar' failed. Should I try again? (y/n)
Weil ein anderes Programm diese Datei verwendet . Wenn ich beispielsweise eine Java-Webanwendung im Debug-Modell oder eine Webanwendung auf einem Server ausführe, kann ich keine Protokolldatei löschen. Deaktivieren Sie den Anwendungsserver (oder deaktivieren Sie den Debug-Prozess) und versuchen Sie es erneut
git rm -rf foo.bar
Ich sehe, dass die Datei gelöscht wurde.
Nachdem keine der oben genannten Antworten zu funktionieren schien, git fetch -p
erledigte das Laufen den Job für mich.
Ich bin in Windows auf dieses Problem gestoßen. Vielleicht möchten Sie die Git-Bash als Administrator ausführen und dann die gewünschten Befehle ausführen, die das Problem für mich gelöst haben.
Ich habe jeden einzelnen Tipp auf dieser Seite ausprobiert und nichts hat geholfen. Ich habe ein git fetch
und ein git reset --hard origin/development
gab mir den Knickfehler. Ich konnte nicht auf das letzte Commit zurücksetzen.
Was half, war das Auschecken eines anderen Zweigs und dann das Auschecken des vorherigen Zweigs. Sehr seltsam, aber es hat das Problem gelöst.
Wenn das Schließen Ihrer IDE und das Ausführen verschiedener hier aufgelisteter Git-Befehle nicht hilft, versuchen Sie, alle ausgeführten Java-Prozesse manuell zu beenden. Ich hatte wahrscheinlich einen Java-Prozess von Eclipse übrig, der irgendwie eine Konfigurationsdatei offen hielt.
Wenn Sie Docker verwenden und Windows 10 ausführen, möchten Sie möglicherweise die Container stoppen, in denen die Datei möglicherweise ausgeführt wird. Führen Sie aus, um den Status Ihrer Container anzuzeigen
docker ps -a
Um sie zu stoppen, laufen Sie einfach
docker stop <container name or container id>
Dies hat bei mir funktioniert, da ich meine lokalen Dateien mit einer .sh-Datei ausführe
Unter Windows wurde dieser Fehler bei git clone
einem (ziemlich großen) Repo festgestellt. SmartGit geschlossen und meine Backup-Software (CrashPlan) angehalten, und danach hat es funktioniert. Ich bin mir nicht sicher, welcher der beiden den Trick gemacht hat, aber wenn einer von beiden läuft, könnte dies auch für Sie tun.
Ich hatte das gleiche Problem beim Ausführen eines Git-Pulls und wie oben angegeben, lag es an einem Programm, das diese Dateien enthielt und kein Git-Pull zuließ. Das Schließen des Programms hat geholfen. Normalerweise hält die IDE (wie Eclipse), von der aus die Dateien eingecheckt werden, sie im Hintergrund. Das gleiche zu schließen und Git Pull erneut auszuführen, löste das Problem für mich.
Ich hatte den gleichen Fehler und das Schließen der App, bei der die Datei geöffnet war, löste ihn. Ich konnte zurückgehen und "Y" drücken.