Git - fatal: impossibile creare '/path/my_project/.git/index.lock': il file esiste


806

Ricevo ancora questo messaggio di errore, quando provo a spostare l'albero del progetto su git repo.

Ho controllato le autorizzazioni della mia directory con questo progetto e queste sono impostate su 777. Nel terminale nella directory con my_projectho impostato:

git init

e poi se ci provo

git add.

o

git commit -m "primo caricamento"

quindi avrò l'errore

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.

Ho provato anche a creare un nuovo repository e lì per impegnarlo, ma purtroppo rimane sempre lo stesso messaggio di errore.

Qual è la causa del problema?


1
Ho avuto questo problema perché ho effettuato l'accesso con su in un altro terminale, tornando al primo tutto è andato bene
maazza


3
fratello ho avuto lo stesso problema, usa "sudo git add. o git commit -m" primo caricamento "" invece di "git add. o git commit -m" primo caricamento ""
mehdi zahrane

L'ho risolto modificando le autorizzazioni sul file .git per stackoverflow.com/questions/14127255/… , fare riferimento alla risposta di Mahshid Zeinaly
vikramvi,

Risposte:


1740

Provare

rm -f ./.git/index.lock

Nella directory del repository. Il messaggio di errore è piuttosto esplicito su ciò che lo causa in genere, quindi se non hai altri processi git in esecuzione (che è il caso normale), vai avanti ed elimina quel file.


7
Non succede automaticamente. È necessario eseguire il comando git pushper inviare le modifiche al server Web. Dettagli su come funziona qui: gitready.com/beginner/2009/01/21/pushing-and-pulling.html
Raphael R.

9
Sto riscontrando lo stesso identico problema ma non riesco a risolverlo in questo modo perché il file .git / index.lock non sembra esistere: touch .get/index.lockrestituiscetouch: .get/index.lock: No such file or directory
emersonthis

24
Emerson, sembra che tu stia cercando .get invece di .git che non esisterebbe.
Apie,

3
Autorizzazione negata significa che è necessario fornire all'utente che si sta utilizzando Git con autorizzazioni di lettura / scrittura sul file. Controlla il comando chmod (su * nix o Proprietà -> scheda Sicurezza su Windows)
Stijn de Witt

9
Se il tuo errore dice "Autorizzazione negata", probabilmente hai copiato i file da qualche altra parte e non hai i permessi sulla directory .git. Utilizzare ls -lper visualizzare le autorizzazioni, quindi utilizzare sudo chown -R username ./*e sudo chgrp -R username ./*per modificare l'utente e il gruppo come propri per tutti i file nel progetto.
chech

158

In Windows, farlo nel prompt dei comandi dalla directory repo:

cd .git
del index.lock

AGGIORNAMENTO: ho scoperto che non è necessario eseguire questa procedura se aspetto un momento dopo aver chiuso i file su cui sto lavorando prima di provare a cambiare ramo. Penso che a volte questo problema si verifichi a causa del fatto che Git sta raggiungendo un file system lento. Altri sviluppatori più informati possono intervenire se pensano che sia corretto.


3
Stranamente, ricevo l'errore sul file ma poi quando provo a eliminare il file in cmd.exe, dice file non trovato :) Stesso risultato con percorsi assoluti e relativi. Ma in Git Bash, funziona (con rm -f index.lock)
Juha Untinen il

Nel mio caso, ho eseguito "Fetch" dopo un paio di riavvii di Sourcetree e ho lavorato.
maxivis,

32

Prova a uscire da Xcode: poiché si tratta di un client git, devi uscire da Xcode per evitare problemi con git sulla riga di comando.


4
Bello! Si noti che Xcode e altri client Git possono essere colpevoli. Nel mio caso ci è voluto anche chiudere gitX.
NSTJ,

Dopo aver dovuto cancellare il mio file di blocco 10 volte o giù di lì stamattina, sono finalmente incappato in questa risposta. Non so come si sia aperto xcode, ma era sicuro che stava distruggendo il mio flusso di lavoro. Grazie per il consiglio!
Cloudkiller,

24

Avevo lo stesso problema. Provai

rm -f ./.git/index.lock 

e la console mi ha dato un messaggio di errore. Poi ho provato

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

e ha funzionato.

In bocca al lupo! Funziona alla grande


Nel mio caso non vedo la cartella .git. Vedo solo ./ e ../ per quanto riguarda la directory nascosta sono preoccupazioni.

Che tipo di computer sei?
Olivia Steger

18

Nella mia directory .git, non c'era alcun file index.lock. Quindi, usando la shell Git Bash, ho corso ...

cd .git
touch index.lock
rm index.lock

Il comando touch ha creato il file e il problema è scomparso.


Perché questo è downvoted? Ho ricevuto il messaggio di errore simile a OP. Questo mi ha risolto, e forse potrebbe aiutare gli altri.
John Livermore,

1
Ho riscontrato una leggera variante di questo: (1) ho riscontrato il messaggio di errore e ho sperimentato diverse 'correzioni'; (2) ho scoperto che index.locknon esisteva; (3) Ho usato il touchcomando sopra ; (4) il mio client git ha smesso di funzionare normalmente (nella migliore delle ipotesi, ha rallentato a gattonare); (5) ho cancellato index.lock; (6) il repository ha ripreso a funzionare normalmente.
clarpaul,

Sicuramente non dovrebbe essere sottoposto a downgrade, risolto il mio problema. Non avevo un file index.lock, ma una volta creato, e successivamente rimosso, il commit ha funzionato.
Bynho,

touch index.lockimplica che John era su * NIX, ma ho appena fatto l'equivalente su Windows 10 (creare un index.lockfile con un editor di testo, eliminarlo immediatamente e trarne profitto) e il problema è andato.
ruffin,

1
@Spark aggiornato ...
John Livermore

13

Hai creato accidentalmente il repository utilizzando l' rootutente?

Accade semplicemente che ho creato il repository git come rootutente.

Ho eliminato il repository git e l'ho creato di nuovo senza sudoe funziona.


1
Sì, tutto qui. Grazie
Natassia Tavares il

9

anch'io ho questo problema e lo trovo davvero un problema di autorizzazione. quindi faccio questo:

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

allora ererything è grande e gaa è successo.

e poi uso gp, ottengo un altro errore quasi lo stesso errore

sudo chown -R "${USER:-$(id -un)}" . #use this can fix the problem

geniale, che cosa fa questo? "$ {USER: - $ (id -un)}"
Nick,

7

In Mac OS X, farlo nel prompt dei comandi dalla directory repo:

cd .git
rm index.lock

1
Nessun file o directory di questo tipo
Channox l'

5

Se stai utilizzando uno degli #intelliJIDE e ricevi questo messaggio (lo sto usando #webtorm), tieni presente che questo problema può verificarsi a causa del nascondere una delle cartelle del progetto (all'interno delle impostazioni) e ciò può impedire l' GITunione.


5

La soluzione che ha funzionato per me è stata la chiusura di un testo sublime perché il processo di esecuzione di git è stato avviato dall'editor.


Di recente ho installato il plugin Sublime Text GitSavvy e ho avuto questo errore solo da allora. Grazie per il suggerimento, @snorkelzebra
Kitze,

5

Se dopo aver provato:

rm -f ./.git/index.lock

ottieni:

rm: impossibile scollegare "index.lock": autorizzazione negata

Prova a chiudere tutto il software che potrebbe utilizzare Git. Ho aperto Source Tree e Visual Studio e dopo aver chiuso entrambi i comandi hanno funzionato.


5

In Windows, sono riuscito a eliminare il file di blocco solo dopo l'Ending Task per tutti i processi Git Windows (32 bit) nel Task Manager.

Soluzione (Win 10)

1. Termina attività per tutti i processi Git Windows (32 bit) in Task Manager

2. Eliminare il file .git / index.lock


4

Nel mio caso la soluzione era aspettare 5 minuti. Ovviamente la mia precedente operazione era ancora in corso ma non lo sapevo. Stavo usando git tartaruga su Windows.



4

Penso che ci sia una soluzione migliore rispetto alla rimozione del file (e dio sa cosa accadrà dopo quando si rimuove / crea un file con sudo):

git gc

3

Hai problemi con .git/index.lockquindi eliminalo usando il comando seguente.

Comando:

sudo rm -rf .git / index.lock


3

L'ho provato con molti metodi diverse volte, ma questo ha funzionato per me (ho usato il terminale di PyCharm):

$ cd .git/

$ rm -f index.lock

Quindi ho provato di nuovo a creare un repository git vuoto:

$ git init

$ git add .

$ git commit -m "commit msg"

3

Se si tratta di un sottomodulo, provare invece nella directory del repository:

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

cambia il nome del sottomodulo con il nome del tuo sottomodulo.


2

La risoluzione per questo problema è la copia dei tre file xcode / project nella directory e quindi la creazione di una nuova directory (Ovunque altro) e quindi incollare i tre file / directory.


2

Inoltre possiamo semplicemente uccidere il processo git. Ricevo lo stesso problema tramite l'app GUI per git, qualcosa va storto e git fa funzionare all'infinito. Il processo di uccisione bloccherà l'applicazione che funziona con git, basta riavviarla e tutto andrà bene.


2

Nel caso, per qualsiasi motivo, stai effettuando un rebase da una cartella che è stata sincronizzata da un servizio cloud (dropbox, unità, onedrive, ecc.), Dovresti mettere in pausa o disattivare la sincronizzazione poiché interferirà con le autorizzazioni durante il rebase .


2

Per me lo è stato

rm -r .git-credentials.lock 

2

Avevo cambiato il mio permesso di directory così sapevo che poteva essere legato al permesso. Nel mio caso ho rimosso utenti indesiderati (_www) e quindi ho applicato l'autorizzazione di lettura / scrittura a tutti applicando la modifica a tutti i contenuti. Questo è su Mac

Autorizzazione directory su Mac


2

Tutti i comandi di rimozione non hanno funzionato per me quello che ho fatto è stato di navigare lì usando il percorso fornito in git e quindi eliminarlo manualmente.


2

NON USARE il plugin Atom platformio-atom-ide-terminal per fare questo. UTILIZZARE DIRETTAMENTE IL TERMINAL DEL DISTRO.

Continuavo a ricevere questo errore durante il rebasing / squishing di commit e non sapevo perché perché l'avevo fatto prima diverse volte.

Non importa quante volte avrei eliminato il index.lock file, ogni volta che fallirebbe.

Si è scoperto perché stavo usando il plug-in del terminale ATOM EDITOR . Una volta ho usato il terminale fornito con Ubuntu ha funzionato come un incantesimo.


2

vai semplicemente su D: /project/androidgc/.git/ questa directory ed elimina index.lock ha funzionato per me.


1

Nel caso in cui qualcuno stia usando git svn, ho avuto lo stesso problema ma non sono riuscito a rimuovere il file poiché non era lì !. Dopo aver controllato le autorizzazioni, toccato il file ed eliminato, e non ricordo cos'altro, questo ha funzionato:

  • controlla il ramo principale.
  • git svn rebase (sul master)
  • controlla la filiale su cui stavi lavorando
  • git svn rebase

1

Un po 'di aggiunta perché ho dovuto usare risposte diverse per ottenere la soluzione effettiva (per me).

Questo ha fatto per me:

  1. Apri filiale su cui stai lavorando
  2. Terminale aperto (utilizzo terminale in Git GUI)
  3. Digita il comando: cd .git
  4. Digita il comando: rm -f index.lock

Alcuni potrebbero dover usare al -Forceposto di -f. È possibile controllare le righe di comando del terminale eseguendo un comando in qualcosa di terminale come: git help.


0

Tutte le soluzioni sono giuste:

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

Infine, ciò che ha fatto la differenza per me:

  • Evita di usare sudo per decomprimere o copiare la nuova cartella .git. Git non avrà accesso alla cartella .git se usi i diritti di superutente per crearla

0

Ho avuto questo verificarsi quando ero in una sottodirectory della directory corrispondente alla cartella principale del repository (cioè la directory in cui era .git). Passare alla directory principale ha risolto il problema - a costo di rendere tutti i riferimenti ai file un po 'più scomodi in quanto è necessario andare percorso / a / cartella / foo.ext anziché solo foo.ext

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.