Git - fatal: impossible de créer '/path/my_project/.git/index.lock': le fichier existe

806

Je reçois toujours ce message d'erreur, lorsque j'essaie de déplacer mon arborescence de projet sur git repo.

J'ai vérifié les autorisations de mon répertoire avec ce projet et celles-ci sont définies sur 777. Dans le terminal du répertoire avec my_projectj'ai défini:

git init

et puis si j'essaye

git add.

ou

git commit -m "premier téléchargement"

donc j'obtiendrai l'erreur

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.

J'ai également essayé de créer un nouveau dépôt et de le valider, mais malheureusement, toujours le même message d'erreur.

Quelle est la cause du problème?

user984621
la source
1
J'ai eu ce problème parce que je me suis connecté avec su dans un autre terminal, en revenant au premier tout s'est bien passé
maazza
3
bro j'ai eu le même problème, utilisez "sudo git add. ou git commit -m" first upload "" au lieu de "git add. or git commit -m" first upload ""
mehdi zahrane
Je l'ai corrigé en modifiant les autorisations sur le fichier .git par stackoverflow.com/questions/14127255/… , reportez-vous à la réponse de Mahshid Zeinaly
vikramvi

Réponses:

1740

Essayer

rm -f ./.git/index.lock

Dans votre répertoire de référentiel. Le message d'erreur est plutôt explicite quant à ses causes, donc si vous n'avez aucun autre processus git en cours d'exécution (ce qui est le cas normal), allez-y et supprimez ce fichier.

Raphael R.
la source
7
Cela ne se produit pas automatiquement. Vous devez exécuter la commande git pushpour envoyer vos modifications au serveur Web. Les détails sur la façon dont cela fonctionne sont ici: gitready.com/beginner/2009/01/21/pushing-and-pulling.html
Raphael R.
9
J'ai exactement le même problème mais je ne peux pas le résoudre de cette façon parce que le fichier .git / index.lock ne semble pas exister: touch .get/index.lockrenvoietouch: .get/index.lock: No such file or directory
emersonthis
24
Emerson, vous semblez rechercher .get au lieu de .git qui n'existerait pas.
Apie
3
L'autorisation refusée signifie que vous devez accorder à l'utilisateur que vous utilisez Git des autorisations de lecture / écriture sur le fichier. Découvrez la commande chmod (sur * nix ou Propriétés -> onglet Sécurité sur Windows)
Stijn de Witt
9
Si votre erreur indique "Autorisation refusée", vous avez probablement copié les fichiers ailleurs et n'avez pas d'autorisations sur le répertoire .git. Utilisez ls -lpour voir les autorisations, puis utilisez sudo chown -R username ./*et sudo chgrp -R username ./*pour modifier l'utilisateur et le groupe en fonction des vôtres pour tous les fichiers du projet.
chech
158

Sous Windows, faites-le dans l'invite de commande du répertoire repo:

cd .git
del index.lock

MISE À JOUR: J'ai constaté que je n'ai pas besoin de faire cette procédure si j'attends un moment après avoir fermé les fichiers sur lesquels je travaille avant d'essayer de changer de branche. Je pense que parfois ce problème se produit en raison du rattrapage de git avec un système de fichiers lent. D'autres développeurs plus avertis peuvent sonner s'ils pensent que c'est correct.

ssaltman
la source
3
Curieusement, j'obtiens l'erreur sur le fichier, mais lorsque j'essaie de supprimer le fichier dans cmd.exe, le fichier est introuvable :) Même résultat avec les chemins absolus et relatifs. Mais dans Git Bash, ça marche (avec rm -f index.lock)
Juha Untinen
Dans mon cas, j'ai exécuté "Fetch" après quelques redémarrages de Sourcetree et j'ai travaillé.
maxivis
32

Essayez de quitter Xcode - puisqu'il s'agit d'un client git, vous devez quitter Xcode pour éviter les problèmes avec git sur la ligne de commande.

Jeff Grimes
la source
4
Agréable! Notez que Xcode ET d'autres clients Git peuvent être coupables. Dans mon cas, il a également fallu fermer gitX.
NSTJ
Après avoir dû supprimer mon fichier de verrouillage environ 10 fois ce matin, je suis finalement tombé sur cette réponse. Je ne sais pas comment xcode s'est ouvert mais c'était sûr de jeter mon flux de travail. Merci pour le conseil!
Cloudkiller
24

J'avais le même problème. j'ai essayé

rm -f ./.git/index.lock 

et la console m'a donné un message d'erreur. Ensuite, j'ai essayé

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

et cela a fonctionné.

Bonne chance! Cela fonctionne super

Olivia Steger
la source
Je ne vois pas le dossier .git dans mon cas. Je vois seulement ./ et ../ dans la mesure où les répertoires cachés sont des problèmes.
Sur quel type d'ordinateur êtes-vous?
Olivia Steger
18

Dans mon répertoire .git, il n'y avait pas de fichier index.lock. Donc, en utilisant le shell Git Bash, j'ai couru ...

cd .git
touch index.lock
rm index.lock

La commande tactile a créé le fichier et le problème a disparu.

John Livermore
la source
Pourquoi est-ce sous-voté? J'ai reçu le message d'erreur similaire à OP. Cela m'a corrigé et pourrait peut-être aider les autres.
John Livermore
1
J'ai vécu une légère variante de ceci: (1) J'ai rencontré le message d'erreur et expérimenté différents «correctifs»; (2) J'ai trouvé que cela index.lockn'existait pas; (3) J'ai utilisé la touchcommande ci-dessus ; (4) mon client git a cessé de fonctionner normalement (au mieux, il a ralenti à une analyse); (5) J'ai supprimé index.lock; (6) le référentiel a recommencé à fonctionner normalement.
clarpaul
Je ne devrais certainement pas être rétrogradé, j'ai réglé mon problème. Je n'avais pas de fichier index.lock, mais une fois que j'en ai créé un et que je l'ai ensuite supprimé, la validation a fonctionné.
Bynho
touch index.lockimplique que John était sur * NIX, mais je viens de faire l'équivalent sur Windows 10 (créer un index.lockfichier avec un éditeur de texte, le supprimer immédiatement et tirer profit), et le problème a disparu.
ruffin
1
@Spark mis à jour ...
John Livermore
13

Avez-vous accidentellement créé le référentiel en utilisant l' rootutilisateur?

Il se trouve que j'ai créé le référentiel git en tant rootqu'utilisateur.

J'ai supprimé le référentiel git et l'ai créé à nouveau sans sudoet cela fonctionne.

hktang
la source
1
Ouais, c'est tout. Merci
Natassia Tavares
9

j'ai aussi ce problème, et je le trouve vraiment un problème de permission. alors je fais ça:

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

alors tout est génial, et gaa est un succès.

puis j'utilise gp, j'obtiens une autre erreur presque la même erreur

sudo chown -R "${USER:-$(id -un)}" . #use this can fix the problem
défendre orque
la source
génial, qu'est-ce que cela fait? "$ {USER: - $ (id -un)}"
Nick
7

Sous Mac OS X, procédez comme suit dans l'invite de commande du répertoire repo:

cd .git
rm index.lock
Rick Wong
la source
1
Aucun fichier ou répertoire de ce type
Channox
5

Si vous utilisez l'un des #intelliJIDE et que vous recevez ce message (j'utilise #webtorm), veuillez noter que ce problème peut se produire en raison du masquage de l'un des dossiers de projet (dans les paramètres internes), ce qui peut empêcher la GITfusion.

neoswf
la source
5

La solution qui a fonctionné pour moi a été de fermer le texte sublime car le processus d'exécution de git a été lancé par l'éditeur.

snorkelzebra
la source
J'ai récemment installé le plugin Sublime Text GitSavvy et je n'ai eu cette erreur que depuis. Merci pour cet indice, @snorkelzebra
Kitze
5

Si après avoir essayé:

rm -f ./.git/index.lock

vous obtenez:

rm: impossible de dissocier 'index.lock': autorisation refusée

Essayez de fermer tous les logiciels susceptibles d'utiliser Git. J'avais Source Tree et Visual Studio ouverts et après avoir fermé les deux, la commande a fonctionné.

Boos
la source
5

Sous Windows, je n'ai réussi à supprimer le fichier de verrouillage qu'après la fin de la tâche pour tous les processus Git Windows (32 bits) dans le Gestionnaire des tâches.

Solution (Win 10)

1. Fin de tâche pour tous les processus Git Windows (32 bits) dans le gestionnaire de tâches

2. Supprimez le fichier .git / index.lock

ChrisDeDavidMindflowAU
la source
4

Dans mon cas, la solution était d'attendre 5 minutes. De toute évidence, mon opération précédente fonctionnait toujours, mais je ne le savais tout simplement pas. J'utilisais du tortue git sur les fenêtres.

rdans
la source
4

Utilisez ceci:

rm -Force ./.git/index.lock
Manoj Tarkar
la source
4

Je pense qu'il y a une meilleure solution que de supprimer le fichier (et Dieu sait ce qui se passera ensuite lors de la suppression / création d'un fichier avec sudo):

git gc
Roy Segall
la source
3

Vous avez un problème .git/index.lock, supprimez-le à l'aide de la commande ci-dessous.

Commander:

sudo rm -rf .git / index.lock

Pramod Kharade
la source
3

Je l'ai essayé plusieurs fois avec plusieurs méthodes mais celle-ci a fonctionné pour moi (j'ai utilisé le terminal de PyCharm):

$ cd .git/

$ rm -f index.lock

Ensuite, j'ai essayé à nouveau de créer un dépôt git vide:

$ git init

$ git add .

$ git commit -m "commit msg"
rouille
la source
3

S'il s'agit d'un sous-module, essayez plutôt cela dans votre répertoire de référentiel:

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

changer le nom du sous-module en votre nom de sous-module.

Kharda
la source
2

La résolution de ce problème consiste à copier les trois fichiers xcode / projet dans le répertoire, puis à créer un nouveau répertoire (partout ailleurs), puis à coller les trois fichiers / répertoires.

G unitzo
la source
2

Nous pouvons également simplement tuer le processus git. Je reçois le même problème via l'application GUI pour git, quelque chose se passe mal et git fait fonctionner indéfiniment. Le processus de suppression gèlera l'application qui fonctionne avec git, redémarrez-la et tout ira bien.

kaspartus
la source
2

Dans le cas où, pour une raison quelconque, vous effectuez un rebase à partir d'un dossier qui est synchronisé par un service cloud (dropbox, lecteur, onedrive, etc.), vous devez suspendre ou désactiver la synchronisation car cela interfèrerait avec les autorisations pendant le rebase .

Dmase05
la source
2

Pour moi, c'était

rm -r .git-credentials.lock 
N Jay
la source
2

J'avais changé ma permission de répertoire, donc je savais que cela pouvait être lié à la permission. Dans mon cas, j'ai supprimé les utilisateurs indésirables (_www), puis appliqué une autorisation de lecture / écriture à tout le monde en appliquant une modification à tous les contenus. C'est sur Mac

Autorisation de répertoire sur Mac

Hammad Khan
la source
2

Toutes les commandes de suppression n'ont pas fonctionné pour moi, ce que j'ai fait était d'y naviguer en utilisant le chemin fourni dans git, puis de le supprimer manuellement.

Aaron Rabinowitz
la source
2

N'UTILISEZ PAS le plugin Atom platformio-atom-ide-terminal pour ce faire. UTILISEZ LE TERMINAL DE VOTRE DISTRO DIRECTEMENT.

J'ai continué à recevoir cette erreur lors du rebasage / écrasement des commits et je ne savais pas pourquoi parce que je l'avais déjà fait plusieurs fois.

Peu importe combien de fois je supprimerais le index.lock fichier, chaque fois qu'il échouerait.

Il s'avère que c'était parce que j'utilisais le plugin de terminal ATOM EDITOR . Une fois que j'ai utilisé le terminal livré avec Ubuntu, cela a fonctionné comme un charme.

juliangonzalez
la source
2

allez simplement dans D: /project/androidgc/.git/ ce répertoire et supprimez index.lock cela a fonctionné pour moi.

avez raj
la source
1

Dans le cas où quelqu'un utilise git svn, j'ai eu le même problème mais je n'ai pas pu supprimer le fichier car il n'était pas là!. Après avoir vérifié les autorisations, touché le fichier et supprimé, et je ne me souviens plus quoi d'autre, cela a fait l'affaire:

  • caisse la branche principale.
  • git svn rebase (sur master)
  • vérifier la branche sur laquelle vous travailliez
  • git svn rebase
cauchy
la source
1

Un petit ajout car j'ai dû utiliser des réponses différentes pour obtenir la solution réelle (pour moi).

Cela l'a fait pour moi:

  1. Ouvrir la branche sur laquelle vous travaillez
  2. Terminal ouvert (j'utilise le terminal dans Git GUI)
  3. Tapez la commande: cd .git
  4. Tapez la commande: rm -f index.lock

Certains peuvent avoir à utiliser à la -Forceplace de -f. Vous pouvez vérifier les lignes de commande de terminal en exécutant une commande dans votre terminal de quelque chose comme: git help.

Ronnie Oosting
la source
0

Toutes les solutions sont bonnes:

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).

Enfin, ce qui a fait la différence pour moi:

  • Évitez d'utiliser sudo pour décompresser ou copier le nouveau dossier .git. Git n'aura pas accès au dossier .git si vous utilisez les droits de superutilisateur pour le créer
Javi
la source
0

J'ai eu cela se produire lorsque j'étais dans un sous-répertoire du répertoire correspondant au dossier racine du dépôt (c'est-à-dire le répertoire dans lequel se trouvait .git). Le déplacement vers le répertoire racine a résolu le problème - au prix de rendre toutes les références de fichiers un peu plus gênantes car vous devez aller chemin / vers / dossier / foo.ext au lieu de simplement foo.ext

SN
la source