Git - fatal: no se puede crear '/path/my_project/.git/index.lock': el archivo existe

806

Todavía recibo este mensaje de error cuando intento mover mi árbol de proyecto a git repo.

Verifiqué los permisos de mi directorio con este proyecto y estos están configurados en 777. En la terminal en el directorio con my_projectconfiguré:

git init

y luego si lo intento

git add.

o

git commit -m "primera carga"

entonces tendré el error

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.

Intenté también crear un nuevo repositorio y allí para confirmarlo, pero desafortunadamente sigue siendo el mismo mensaje de error.

¿Cuál es la causa del problema?

usuario984621
fuente
1
Tuve este problema porque
inicié
3
hermano, tuve el mismo problema, use "sudo git add. o git commit -m" first upload "" en lugar de "git add. o git commit -m" first upload ""
mehdi zahrane
Lo solucioné cambiando los permisos en el archivo .git por stackoverflow.com/questions/14127255/… , consulte la respuesta de Mahshid Zeinaly
vikramvi

Respuestas:

1740

Tratar

rm -f ./.git/index.lock

En su directorio de repositorio. El mensaje de error es bastante explícito en cuanto a qué lo causa típicamente, por lo que si no tiene otros procesos git en ejecución (que es el caso normal), continúe y elimine ese archivo.

Raphael R.
fuente
77
No sucede automáticamente. Debe ejecutar el comando git pushpara enviar sus cambios al servidor web. Los detalles sobre cómo funciona esto están aquí: gitready.com/beginner/2009/01/21/pushing-and-pulling.html
Raphael R.
99
Estoy teniendo el mismo problema, pero no puedo resolverlo de esta manera porque el archivo .git / index.lock no parece existir: touch .get/index.lockretornostouch: .get/index.lock: No such file or directory
emersonthis
24
Emerson, parece que estás buscando .get en lugar de .git que no existiría.
Apie
3
Permiso denegado significa que debe otorgarle al usuario que está utilizando Git permisos de lectura / escritura en el archivo. Consulte el comando chmod (en * nix o Propiedades -> pestaña Seguridad en Windows)
Stijn de Witt
99
Si su error dice "Permiso denegado", probablemente haya copiado los archivos de otro lugar y no tenga permisos sobre el directorio .git. Use ls -lpara ver los permisos, luego use sudo chown -R username ./*y sudo chgrp -R username ./*para cambiar el usuario y el grupo a los suyos para todos los archivos del proyecto.
chech
158

En Windows, haga esto en el símbolo del sistema desde el directorio repo:

cd .git
del index.lock

ACTUALIZACIÓN: He descubierto que no necesito realizar este procedimiento si espero un momento después de cerrar los archivos en los que estoy trabajando antes de intentar cambiar de rama. Creo que a veces este problema ocurre debido a que git se pone al día con un sistema de archivos lento. Otros desarrolladores más expertos en git pueden intervenir si creen que esto es correcto.

ssaltman
fuente
3
Por extraño que parezca, recibo el error sobre el archivo, pero luego, cuando trato de eliminar el archivo en cmd.exe, dice que el archivo no se encuentra :) Mismo resultado con rutas absolutas y relativas. Pero en Git Bash, funciona (con rm -f index.lock)
Juha Untinen
En mi caso, ejecuté "Fetch" después de un par de reinicios de Sourcetree y trabajé.
maxivis
32

Intente salir de Xcode: dado que es un cliente git, debe salir de Xcode para evitar problemas con git en la línea de comandos.

Jeff Grimes
fuente
44
¡Agradable! Tenga en cuenta que Xcode Y otros clientes Git pueden ser los culpables. En mi caso también tomó cerrar gitX.
NSTJ
Después de tener que eliminar mi archivo de bloqueo 10 veces más o menos esta mañana, finalmente me topé con esta respuesta. No sé cómo se abrió xcode, pero fue seguro destrozar mi flujo de trabajo. ¡Gracias por el consejo!
Cloudkiller
24

Estaba teniendo el mismo problema. Lo intenté

rm -f ./.git/index.lock 

y la consola me dio un mensaje de error. Entonces intenté

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

Y eso funcionó.

¡Buena suerte! Esto funciona super

Olivia Steger
fuente
No veo la carpeta .git en mi caso. Solo veo ./ y ../ en lo que respecta al directorio oculto son preocupaciones.
¿En qué tipo de computadora estás?
Olivia Steger
18

En mi directorio .git, no había ningún archivo index.lock. Entonces, usando el shell Git Bash, corrí ...

cd .git
touch index.lock
rm index.lock

El comando táctil creó el archivo y el problema desapareció.

John Livermore
fuente
¿Por qué se rechaza esto? Recibí el mensaje de error similar a OP. Esto me arregló, y tal vez podría ayudar a otros.
John Livermore
1
Experimenté una ligera variante de esto: (1) Experimenté el mensaje de error y experimenté con diferentes 'soluciones'; (2) Descubrí que index.lockno existía; (3) Usé el touchcomando anterior ; (4) mi cliente git dejó de funcionar normalmente (en el mejor de los casos, se ralentizó); (5) borré index.lock; (6) el repositorio comenzó a funcionar normalmente de nuevo.
clarpaul
Definitivamente no debería ser rechazado, resolvió mi problema. No tenía un archivo index.lock, pero una vez que creé uno y luego lo eliminé, el commit funcionó.
Bynho
touch index.lockimplica que John estaba en * NIX, pero acabo de hacer el equivalente en Windows 10 (crear un index.lockarchivo con un editor de texto, eliminarlo inmediatamente y obtener ganancias), y el problema desapareció.
ruffin
1
@Spark actualizado ...
John Livermore
13

¿Creó accidentalmente el repositorio utilizando el rootusuario?

Simplemente sucede que creé el repositorio de git como rootusuario.

Eliminé el repositorio de git y lo creé de nuevo sin sudoy funciona.

hktang
fuente
1
Yeap, eso es todo. Gracias
Natassia Tavares
9

También tengo este problema, y ​​lo encuentro realmente un problema de permiso. entonces hago esto:

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

entonces todo es genial, y gaa es el éxito.

y luego uso gp, obtengo otro error casi el mismo error

sudo chown -R "${USER:-$(id -un)}" . #use this can fix the problem
defender orca
fuente
brillante, ¿qué hace esto? "$ {USER: - $ (id -un)}"
Nick
7

En Mac OS X, haga esto en el símbolo del sistema desde el directorio repo:

cd .git
rm index.lock
Rick Wong
fuente
1
No
existe
5

Si está utilizando uno de los #intelliJIDE y está recibiendo este mensaje (lo estoy usando #webtorm), tenga en cuenta que este problema puede ocurrir debido a la ocultación de una de las carpetas del proyecto (configuración interna), y esto puede evitar la GITfusión.

neoswf
fuente
5

La solución que funcionó para mí fue cerrar el texto sublime porque el editor inició el proceso de ejecución de git.

snorkelzebra
fuente
Recientemente instalé el complemento Sublime Text GitSavvy y tuve este error solo desde entonces. Gracias por la pista, @snorkelzebra
Kitze
5

Si después de intentarlo:

rm -f ./.git/index.lock

usted obtiene:

rm: no se puede desvincular 'index.lock': permiso denegado

Intenta cerrar todo el software que pueda estar usando Git. Tenía Source Tree y Visual Studio abiertos y después de cerrar ambos, el comando funcionó.

Abucheos
fuente
5

En Windows, solo logré eliminar el archivo de bloqueo después de finalizar la tarea para todos los procesos de Git Windows (32 bits) en el Administrador de tareas.

Solución (gana 10)

1. Finalice la tarea para todos los procesos de Git Windows (32 bits) en el Administrador de tareas

2. Elimine el archivo .git / index.lock

ChrisDeDavidMindflowAU
fuente
4

En mi caso, la solución fue esperar 5 minutos. Obviamente, mi operación anterior aún se estaba ejecutando, pero simplemente no lo sabía. Estaba usando tortuga git en windows.

rdans
fuente
4

Utilizar este:

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

Creo que hay una mejor solución que eliminar el archivo (y Dios sabe lo que sucederá después al eliminar / crear un archivo con sudo):

git gc
Roy Segall
fuente
3

Tiene un problema, .git/index.lockasí que bórrelo con el siguiente comando.

Mando:

sudo rm -rf .git / index.lock

Pramod Kharade
fuente
3

Lo intenté con muchos métodos varias veces, pero este funcionó para mí (utilicé el terminal de PyCharm):

$ cd .git/

$ rm -f index.lock

Luego intenté nuevamente crear un repositorio git vacío:

$ git init

$ git add .

$ git commit -m "commit msg"
oxido
fuente
3

Si es un submódulo, intente esto en su directorio de repositorio:

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

cambie submodules-name a su nombre de submódulo.

Kharda
fuente
2

La resolución de este problema es copiar los tres archivos xcode / project en el directorio y luego crear un nuevo directorio (en cualquier otro lugar) y luego pegar los tres archivos / directorios.

G unitzo
fuente
2

También podemos simplemente matar el proceso git. Recibo el mismo problema a través de la aplicación GUI para git, algo sale mal y git hace que algunos funcionen infinitamente. El proceso de eliminación congelará la aplicación que funciona con git, simplemente reiníciela y todo estará bien.

kaspartus
fuente
2

En caso de que, por cualquier motivo, esté haciendo un cambio de base desde una carpeta que está siendo sincronizada por un servicio en la nube (dropbox, unidad, onedrive, etc.), debe pausar o desactivar la sincronización ya que interferirá con los permisos durante el cambio de base .

Dmase05
fuente
2

Para mi fue

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

Había cambiado el permiso de mi directorio, así que sabía que podría estar relacionado con el permiso. En mi caso, eliminé usuarios no deseados (_www) y luego apliqué permiso de lectura / escritura a todos mediante el cambio aplicado a todos los contenidos. Esto está en Mac

Permiso de directorio en Mac

Hammad Khan
fuente
2

Todos los comandos de eliminación no funcionaron para mí, lo que hice fue navegar allí usando la ruta provista en git y luego eliminarlo manualmente.

Aaron Rabinowitz
fuente
2

NO USE el átomo platformio-atom-ide-terminal complemento para hacer esto. UTILICE EL TERMINAL DE SU DISTRO DIRECTAMENTE.

Seguía recibiendo este error mientras rebase / aplastaba las confirmaciones y no sabía por qué porque lo había hecho antes varias veces.

No importaba cuántas veces borraría el index.lockarchivo, cada vez que fallaría.

Resulta que fue porque estaba usando el complemento de terminal ATOM EDITOR . Una vez que usé el terminal que viene con Ubuntu, funcionó de maravilla.

juliangonzalez
fuente
2

simplemente vaya a D: /project/androidgc/.git/ este directorio y elimine index.lock, esto funcionó para mí.

avez raj
fuente
1

En caso de que alguien esté usando git svn, tuve el mismo problema pero no pude eliminar el archivo ya que no estaba allí. Después de verificar los permisos, tocar el archivo y eliminarlo, y no recuerdo qué más, esto funcionó:

  • Pagar la rama maestra.
  • git svn rebase (en maestro)
  • verifica la sucursal en la que estabas trabajando
  • git svn rebase
cauchy
fuente
1

Una pequeña adición porque tuve que usar diferentes respuestas para obtener la solución real (para mí).

Esto lo hizo por mí:

  1. Abra la rama en la que está trabajando
  2. Terminal abierto (uso terminal en Git GUI)
  3. Typ en comando: cd .git
  4. Typ en comando: rm -f index.lock

Algunos pueden tener que usar en -Forcelugar de -f. Puede comprobar las líneas de comandos de su terminal mediante la ejecución de un comando en su terminal algo como: git help.

Ronnie Oosting
fuente
0

Todas las soluciones son correctas:

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

Finalmente, lo que hizo la diferencia para mí:

  • Evite usar sudo para descomprimir o copiar la nueva carpeta .git. Git no tendrá acceso a la carpeta .git si usa los derechos de superusuario para crearla
Javi
fuente
0

Tuve esto cuando estaba en un subdirectorio del directorio correspondiente a la carpeta raíz del repositorio (es decir, el directorio en el que estaba .git). Subir al directorio raíz resolvió el problema, a costa de hacer que todas las referencias de archivos sean un poco más inconvenientes, ya que debe ir a path / to / folder / foo.ext en lugar de solo foo.ext

SN
fuente