242 votes

git index.lock Le fichier existe lorsque j'essaie de commiter, mais je ne peux pas supprimer le fichier.

Quand je fais 'git commit', j'obtiens ce qui suit :

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

Cependant, quand je fais ls project_path/.git/index.lock il dit que le fichier n'existe pas. Avez-vous une idée de ce que je dois faire ? J'ai également remarqué que le fichier project_path/.git appartient à Root, mais je ne sais pas si cela a un rapport avec le problème que je rencontre.

la version de git est 1.7.5.4

edit : Il semble que le problème était probablement dû à un autre processus en cours d'exécution, qui écrivait (à mon insu) dans le répertoire du projet. J'ai redémarré ma machine et je n'ai plus eu de problème pour commiter.

3 votes

Il pourrait très bien s'agir d'un problème de permissions où Git suppose que, puisqu'il ne peut pas créer le fichier, il existe déjà. Avez-vous essayé de prendre la propriété du répertoire ou d'exécuter votre commande en utilisant sudo ?

0 votes

J'ai eu la même erreur, puis j'ai essayé d'écraser et de reformuler en une seule opération de rebasement. J'ai juste del reword et tout fonctionne bien, et reword au prochain rebasement.

1 votes

Je pense que votre explication sur une autre application accédant au repo git est correcte. J'ai eu le même problème lors d'un rebasement. Gitx était en cours d'exécution. Une fois que je l'ai quitté, git a fonctionné correctement.

407voto

Ryan S Points 676

Il s'agit peut-être d'une vieille réponse mais j'espère qu'elle sera plus utile aux prochains qui ont besoin de cette solution.

Sur linux/unix/gitbash/cygwin, essayez

rm -f .git/index.lock

Dans l'invite de commande de Windows, essayez :

del .git\index.lock

1 votes

Je vois que parfois le fichier de verrouillage est supprimé automatiquement. Savez-vous pourquoi ce fichier doit parfois être supprimé manuellement ?

0 votes

Je n'ai pas d'index.lock, que faire ? :(

75 votes

Étant donné que le problème dans la question était qu'il n'était pas en mesure de supprimer le fichier, pourquoi pensez-vous qu'essayer de supprimer le fichier devrait être la solution ?

12voto

Daniel YC Lin Points 1207
  1. vérifier si le git fonctionne toujours (ps -ef | grep git)
  2. si non, supprimer le fichier verrouillé
  3. si oui, tuer le processus git au début.

0 votes

Seul celui-ci a fonctionné pour la WSL

7voto

MyztikJenz Points 1247

Je viens d'avoir ce problème... C'est la faute de Gitbox. Donc peut-être que vous aviez une interface graphique en cours d'exécution qui causait des problèmes.

0 votes

Ce n'était pas une interface graphique mais j'avais un processus séparé qui écrivait dans le répertoire du projet. Je n'arrivais pas à le comprendre et ça me rendait fou.

0 votes

Il semble que GitX aime aussi causer ce problème.

0 votes

6 ans plus tard, c'était Atom pour moi.

5voto

caligari Points 897

Probablement (cela m'est arrivé), ls La commande dit il n'existe pas parce que l'utilisateur actuel n'a pas les droits pour atteindre ce répertoire ou ce fichier.

Retirez la serrure et assurez-vous que vous exécutez git avec le bon utilisateur afin d'éviter les problèmes de permission.

Si vous êtes dans une boîte GNU/Linux avec sudo commandement :

sudo rm project_path/.git/index.lock

0 votes

Sous Windows, vous pouvez vérifier si le dossier est en lecture seule en faisant un clic droit sur->Propriétés->Attributs.

0 votes

Étant donné que le problème dans la question était que le fichier n'existait pas, pourquoi pensez-vous qu'essayer de supprimer le fichier devrait être la solution ?

0 votes

@skyking Les problèmes de permission font apparaître la même erreur. En effet, je suis venu à cette question à cause du titre. J'ai écrit ma réponse comme une solution possible et quelques votes confirment que cela arrive à d'autres personnes aussi ;)

4voto

Suhail Bhat Points 71

Parfois, Git crée un fichier verrou associé à votre repo lorsque vous effectuez des modifications ou, plus probablement, lorsque vous utilisez des sous-modules. Le message d'erreur vous indiquera le chemin du fichier de verrouillage. Correction : Il suffit d'aller manuellement dans le chemin dans le terminal et de supprimer le fichier de verrouillage par $ rm index.lock

Cela devrait aider.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X