Git - fatal: '/path/my_project/.git/index.lock' kann nicht erstellt werden: Datei existiert

805

Ich erhalte immer noch diese Fehlermeldung, wenn ich versuche, meinen Projektbaum auf Git Repo zu verschieben.

Ich habe die Berechtigungen meines Verzeichnisses mit diesem Projekt überprüft und diese sind auf 777 festgelegt. Im Terminal in dem Verzeichnis, in dem my_projectich festgelegt habe:

git init

und dann, wenn ich es versuche

git hinzufügen.

oder

git commit -m "erster Upload"

Also werde ich den Fehler bekommen

fatal: Unable to create '/path/my_proj/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

Ich habe auch versucht ein neues Repo zu erstellen und es dort festzuschreiben, aber leider immer noch die gleiche Fehlermeldung.

Was ist die Ursache des Problems?

user984621
quelle
1
Ich hatte dieses Problem, weil ich mich mit su in einem anderen Terminal angemeldet und zum ersten zurückgeschaltet habe. Alles ging gut
maazza
3
bro ich hatte das gleiche problem, benutze "sudo git add. oder git commit -m" first upload "" anstelle von "git add. oder git commit -m" first upload ""
mehdi zahrane
Ich habe es behoben, indem ich die Berechtigungen für die .git-Datei per stackoverflow.com/questions/14127255/… geändert habe. Siehe Antwort von Mahshid Zeinaly
vikramvi

Antworten:

1739

Versuchen

rm -f ./.git/index.lock

In Ihrem Repository-Verzeichnis. Die Fehlermeldung gibt ziemlich deutlich an, was sie normalerweise verursacht. Wenn also keine anderen Git-Prozesse ausgeführt werden (was der Normalfall ist), löschen Sie diese Datei.

Raphael R.
quelle
7
Es passiert nicht automatisch. Sie müssen den Befehl ausführen git push, um Ihre Änderungen auf den Webserver zu übertragen. Details dazu finden Sie hier: gitready.com/beginner/2009/01/21/pushing-and-pulling.html
Raphael R.
9
Ich bin genau das gleiche Problem haben , aber ich kann es auf diese Weise nicht lösen , weil die .git / index.lock Datei nicht existiert erscheinen: touch .get/index.lockRückkehrtouch: .get/index.lock: No such file or directory
emersonthis
24
Emerson, Sie scheinen nach .get anstelle von .git zu suchen, das es nicht geben würde.
Apie
3
Verweigerte Berechtigung bedeutet, dass Sie dem Benutzer, den Sie verwenden, Git mit Lese- / Schreibberechtigungen für die Datei erteilen müssen. Überprüfen Sie den Befehl chmod (unter * nix oder Eigenschaften -> Registerkarte Sicherheit unter Windows)
Stijn de Witt
9
Wenn Ihr Fehler "Berechtigung verweigert" lautet, haben Sie die Dateien wahrscheinlich von einem anderen Ort kopiert und haben keine Berechtigungen für das Verzeichnis .git. Verwenden Sie ls -ldiese Option , um Berechtigungen anzuzeigen sudo chown -R username ./*und sudo chgrp -R username ./*dann Benutzer und Gruppe für alle Dateien im Projekt zu ändern.
chech
158

Führen Sie dies unter Windows an der Eingabeaufforderung des Repo-Verzeichnisses aus:

cd .git
del index.lock

UPDATE: Ich habe festgestellt, dass ich dieses Verfahren nicht ausführen muss, wenn ich einen Moment nach dem Schließen der Dateien, an denen ich arbeite, warte, bevor ich versuche, die Zweige zu wechseln. Ich denke, manchmal tritt dieses Problem auf, weil Git ein langsames Dateisystem einholt. Andere, besser ausgebildete Entwickler können sich einschalten, wenn sie dies für richtig halten.

Ssaltman
quelle
3
Seltsamerweise erhalte ich den Fehler bezüglich der Datei, aber wenn ich dann versuche, die Datei in cmd.exe zu löschen, heißt es, dass die Datei nicht gefunden wurde :) Gleiches Ergebnis mit absoluten und relativen Pfaden. Aber in Git Bash funktioniert es (mit rm -f index.lock)
Juha Untinen
In meinem Fall habe ich "Fetch" nach ein paar Neustarts von Sourcetree ausgeführt und gearbeitet.
Maxivis
32

Versuchen Sie, Xcode zu beenden - da es sich um einen Git-Client handelt, müssen Sie Xcode beenden, um Probleme mit Git in der Befehlszeile zu vermeiden.

Jeff Grimes
quelle
4
Nett! Beachten Sie, dass Xcode UND andere Git-Clients Schuldige sein können. In meinem Fall musste auch gitX geschlossen werden.
NSTJ
Nachdem ich heute Morgen ungefähr 10 Mal meine Sperrdatei löschen musste, bin ich endlich auf diese Antwort gestoßen. Ich weiß nicht, wie sich xcode geöffnet hat, aber es hat meinen Workflow sicher zerstört. Danke für den Tipp!
Cloudkiller
24

Ich hatte das gleiche Problem. Ich habe es versucht

rm -f ./.git/index.lock 

und die Konsole gab mir eine Fehlermeldung. Dann habe ich es versucht

rm --force ./.git/index.lock

und das hat funktioniert.

Viel Glück! Das funktioniert super

Olivia Steger
quelle
Ich sehe in meinem Fall keinen .git-Ordner. Ich sehe nur ./ und ../, was versteckte Verzeichnisse betrifft.
Auf welchem ​​Computertyp bist du?
Olivia Steger
18

In meinem .git-Verzeichnis gab es keine index.lock-Datei. Also lief ich mit der Git Bash Shell ...

cd .git
touch index.lock
rm index.lock

Der Touch-Befehl erstellte die Datei und das Problem wurde behoben.

John Livermore
quelle
Warum wird das abgelehnt? Ich habe die ähnliche Fehlermeldung wie OP erhalten. Das hat mich repariert und könnte vielleicht anderen helfen.
John Livermore
1
Ich habe eine leichte Variante davon erlebt: (1) Ich habe die Fehlermeldung erfahren und mit verschiedenen 'Korrekturen' experimentiert; (2) Ich fand, dass index.lockes nicht existierte; (3) Ich habe den obigen touchBefehl verwendet. (4) Mein Git-Client funktionierte nicht mehr normal (bestenfalls wurde er langsamer). (5) Ich habe gelöscht index.lock; (6) Das Repository begann wieder normal zu funktionieren.
Clarpaul
Sollte auf keinen Fall herabgestimmt werden, mein Problem gelöst. Ich hatte keine index.lock-Datei, aber nachdem ich eine erstellt und anschließend entfernt hatte, funktionierte das Commit.
Bynho
touch index.lockimpliziert, dass John auf * NIX war, aber ich habe gerade das Äquivalent unter Windows 10 gemacht (eine index.lockDatei mit einem Texteditor erstellen , sofort löschen und profitieren), und das Problem ist weg.
Ruffin
1
@ Park aktualisiert ...
John Livermore
13

Haben Sie das Repository versehentlich mit dem rootBenutzer erstellt?

Es kommt einfach vor, dass ich das Git-Repository als rootBenutzer erstellt habe.

Ich habe das Git-Repository gelöscht und es ohne erneut erstellt sudound es funktioniert.

hktang
quelle
1
Ja, das war's. Vielen Dank
Natassia Tavares
9

Ich habe dieses Problem auch, und ich finde es wirklich ein Berechtigungsproblem. Also mache ich das:

sudo chown -R : .git #change group
sudo chmod -R 775 .git #change permission

dann ist alles großartig und gaa ist erfolg.

und dann benutze ich gp, ich bekomme einen anderen Fehler fast den gleichen Fehler

sudo chown -R "${USER:-$(id -un)}" . #use this can fix the problem
verteidige Orca
quelle
genial, was macht das? "$ {USER: - $ (id -un)}"
Nick
7

In Mac OS X tun Sie dies an der Eingabeaufforderung aus dem Repo-Verzeichnis:

cd .git
rm index.lock
Rick Wong
quelle
1
Keine solche Datei oder Verzeichnis
Channox
5

Wenn Sie eine der #intelliJIDEs verwenden und diese #webtormNachricht empfangen (ich verwende ), beachten Sie bitte, dass dieses Problem auftreten kann, weil einer der Projektordner (innerhalb der Einstellungen) ausgeblendet ist und dies das GITZusammenführen verhindern kann .

neoswf
quelle
5

Die Lösung, die für mich funktioniert hat, war das Schließen von erhabenem Text, da der laufende Git-Prozess vom Editor initiiert wurde.

Schnorchelbra
quelle
Ich habe kürzlich das Sublime Text Plugin GitSavvy installiert und hatte diesen Fehler erst seitdem. Vielen Dank für den Hinweis, @snorkelzebra
Kitze
5

Wenn Sie nach dem Versuch:

rm -f ./.git/index.lock

du erhältst:

rm: Verknüpfung von 'index.lock' kann nicht aufgehoben werden: Berechtigung verweigert

Versuchen Sie, alle Software zu schließen, die möglicherweise Git verwendet. Ich hatte Source Tree und Visual Studio geöffnet und nach dem Schließen funktionierte der Befehl.

Boos
quelle
5

Unter Windows konnte ich die Sperrdatei erst nach dem Beenden der Aufgabe für alle Git Windows (32-Bit) -Prozesse im Task-Manager löschen.

Lösung (Win 10)

1. Beenden Sie die Aufgabe für alle Git Windows (32-Bit) -Prozesse im Task-Manager

2. Löschen Sie die Datei .git / index.lock

ChrisDeDavidMindflowAU
quelle
4

In meinem Fall bestand die Lösung darin, 5 Minuten zu warten. Offensichtlich lief meine vorherige Operation noch, aber ich wusste es einfach nicht. Ich habe Schildkrötengit an Fenstern benutzt.

rdans
quelle
4

Benutze das:

rm -Force ./.git/index.lock
Manoj Tarkar
quelle
4

Ich denke, es gibt eine bessere Lösung als das Entfernen der Datei (und Gott weiß, was als nächstes passieren wird, wenn eine Datei mit sudo entfernt / erstellt wird):

git gc
Roy Segall
quelle
3

Sie haben ein Problem .git/index.lockdamit, es mit dem folgenden Befehl zu löschen.

Befehl:

sudo rm -rf .git / index.lock

Pramod Kharade
quelle
3

Ich habe es mehrmals mit vielen Methoden versucht, aber diese hat bei mir funktioniert (ich habe das Terminal von PyCharm verwendet):

$ cd .git/

$ rm -f index.lock

Dann habe ich erneut versucht, ein leeres Git-Repo zu erstellen:

$ git init

$ git add .

$ git commit -m "commit msg"
Rost
quelle
3

Wenn es sich um ein Submodul handelt, versuchen Sie dies stattdessen in Ihrem Repository-Verzeichnis:

rm -f ../.git/modules/submodule-name/index.lock

Ändern Sie den Submodulnamen in Ihren Submodulnamen.

Kharda
quelle
2

Die Lösung für dieses Problem besteht darin, die drei xcode- / Projektdateien in das Verzeichnis zu kopieren, ein neues Verzeichnis zu erstellen (wo auch immer) und dann die drei Dateien / Verzeichnisse einzufügen.

G unitzo
quelle
2

Außerdem können wir den Git-Prozess einfach beenden. Ich erhalte das gleiche Problem über die GUI-App für Git, etwas geht schief und Git macht einige Arbeit unendlich. Der Killing-Prozess friert die Anwendung ein, die mit Git funktioniert. Starten Sie sie einfach neu und alles ist in Ordnung.

Kaspartus
quelle
2

Falls Sie aus irgendeinem Grund eine Rebase aus einem Ordner durchführen, der von einem Cloud-Dienst synchronisiert wird (Dropbox, Laufwerk, Onedrive usw.), sollten Sie die Synchronisierung anhalten oder deaktivieren, da dies die Berechtigungen während der Rebase beeinträchtigt .

Dmase05
quelle
2

Für mich war es

rm -r .git-credentials.lock 
N Jay
quelle
2

Ich hatte meine Verzeichnisberechtigung geändert, damit ich wusste, dass es sich um eine Berechtigung handeln könnte. In meinem Fall habe ich unerwünschte (_www) Benutzer entfernt und dann Lese- / Schreibberechtigungen auf alle angewendet, indem ich Änderungen an allen Inhalten vorgenommen habe. Dies ist auf dem Mac

Verzeichnisberechtigung auf Mac

Hammad Khan
quelle
2

Alle Befehle zum Entfernen haben bei mir nicht funktioniert. Ich habe dort über den in git angegebenen Pfad navigiert und ihn dann manuell gelöscht.

Aaron Rabinowitz
quelle
2

Verwenden Sie dazu NICHT das Atom platformio-atom-ide-terminal Plugin. NUTZEN SIE DAS TERMINAL IHRES DISTROS DIREKT.

Ich habe diesen Fehler beim Umbasieren / Quetschen von Commits immer wieder erhalten und wusste nicht warum, weil ich es schon mehrmals getan hatte.

Es war egal, wie oft ich die index.lockDatei jedes Mal löschen würde , wenn sie fehlschlug.

Es stellte sich heraus, dass ich das ATOM EDITOR- Terminal-Plugin verwendet habe. Nachdem ich das mit Ubuntu gelieferte Terminal benutzt hatte, funktionierte es wie ein Zauber.

juliangonzalez
quelle
2

Gehen Sie einfach zu D: /project/androidgc/.git/ in diesem Verzeichnis und löschen Sie index.lock. Dies hat bei mir funktioniert.

avez raj
quelle
1

Falls jemand git svn verwendet, hatte ich das gleiche Problem, konnte die Datei jedoch nicht entfernen, da sie nicht vorhanden war!. Nachdem ich die Berechtigungen überprüft, die Datei berührt und gelöscht hatte und mich nicht mehr daran erinnere, was noch alles getan hat, hat dies den Trick getan:

  • Kasse der Hauptniederlassung.
  • git svn rebase (auf master)
  • Überprüfen Sie den Zweig, an dem Sie gearbeitet haben
  • git svn rebase
cauchy
quelle
1

Ein wenig hinzufügen, weil ich verschiedene Antworten verwenden musste, um die eigentliche Lösung zu erhalten (für mich).

Das hat es für mich getan:

  1. Öffnen Sie den Zweig, an dem Sie arbeiten
  2. Terminal öffnen (ich benutze Terminal in Git GUI)
  3. Befehl eingeben: cd .git
  4. Befehl eingeben: rm -f index.lock

Einige müssen möglicherweise -Forceanstelle von verwenden -f. Sie können die Befehlszeilen Ihres Terminals überprüfen, indem Sie einen Befehl in Ihrem Terminal ausführen, z git help.

Ronnie Oosting
quelle
0

Alle Lösungen sind richtig:

Just remove .git from your corrupted repository, 

then copy this file if back from another clone (if you don't have it in another machine, just clone it).

Schließlich, was machte den Unterschied für mich:

  • Vermeiden Sie die Verwendung von sudo zum Entpacken oder Kopieren des neuen .git-Ordners. Git hat keinen Zugriff auf den Ordner .git, wenn Sie Superuser-Rechte zum Erstellen verwenden
Javi
quelle
0

Ich hatte dies, als ich mich in einem Unterverzeichnis des Verzeichnisses befand, das dem Stammordner des Repos entspricht (dh dem Verzeichnis, in dem sich .git befand). Das Verschieben in das Stammverzeichnis löste das Problem - auf Kosten aller Dateiverweise, die etwas unpraktischer sind, da Sie den Pfad / to / folder / foo.ext anstatt nur foo.ext verwenden müssen

SN
quelle