Git - fatal: Não foi possível criar '/path/my_project/.git/index.lock': o arquivo existe


806

Ainda estou recebendo essa mensagem de erro quando tento mover minha árvore de projeto para o git repo.

Eu verifiquei as permissões do meu diretório com este projeto e elas estão definidas no 777. No terminal do diretório, my_projecteu defini:

git init

e então se eu tentar

git add.

ou

git commit -m "primeiro upload"

então eu vou pegar o erro

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.

Tentei também criar um novo repositório e lá para enviá-lo, mas infelizmente ainda a mesma mensagem de erro.

Qual é a causa do problema?


1
Eu tive esse problema porque eu entrei com o su em um terminal diferente, voltando para o primeiro tudo correu bem
maazza


3
bro i teve o mesmo problema, use primeiro upload " "em vez de "add git ou git commit -m "primeiro carregamento""" sudo git add ou git commit -m.".
Mehdi zahrane

Eu tenho que fixa alterando permissões de arquivo .git per stackoverflow.com/questions/14127255/... , referem-se a resposta de Mahshid Zeinaly
vikramvi

Respostas:


1740

Tentar

rm -f ./.git/index.lock

No diretório do seu repositório. A mensagem de erro é bastante explícita sobre o que a causa normalmente; portanto, se você não tiver outros processos git em execução (que é o caso normal), vá em frente e exclua esse arquivo.


7
Isso não acontece automaticamente. Você precisa executar o comando git pushpara enviar suas alterações ao servidor da web. Detalhes sobre como isso funciona estão aqui: gitready.com/beginner/2009/01/21/pushing-and-pulling.html
Raphael R.

9
Estou tendo o mesmo problema, mas não posso resolvê-lo desta maneira, porque o arquivo .git / index.lock não parece existir: touch .get/index.lockretornatouch: .get/index.lock: No such file or directory
emersonthis

24
Emerson, você parece estar procurando .get em vez de .git que não existiria.
Apie

3
Permissão negada significa que você precisa dar ao usuário que você está usando o Git com permissões de leitura / gravação no arquivo. Confira comando chmod (em * nix ou Propriedades -> guia Segurança no Windows)
Stijn de Witt

9
Se o seu erro indicar "Permissão negada", você provavelmente já copiou os arquivos de outro lugar e não tem permissão no diretório .git. Use ls -lpara ver as permissões e, em seguida, use sudo chown -R username ./*e sudo chgrp -R username ./*para alterar o usuário e o grupo para todos os arquivos no projeto.
chech

158

No Windows, faça isso no prompt de comando no diretório repo:

cd .git
del index.lock

ATUALIZAÇÃO: Descobri que não preciso executar esse procedimento se esperar um momento depois de fechar os arquivos nos quais estou trabalhando antes de tentar alternar ramificações. Às vezes, acho que esse problema ocorre devido ao atraso do git com um sistema de arquivos lento. Outros desenvolvedores com mais conhecimento sobre o Git podem entrar em sintonia se acharem que isso está correto.


3
Estranhamente, recebo o erro sobre o arquivo, mas quando tento excluir o arquivo no cmd.exe, ele diz que o arquivo não foi encontrado :) O mesmo resultado com caminhos absolutos e relativos. Mas, em Git Bash, ele funciona (com rm -f index.lock)
Juha Untinen

No meu caso, executei "Buscar" depois de algumas reinicializações do Sourcetree e trabalhei.
maxivis

32

Tente sair do Xcode - já que é um cliente git, é necessário sair do Xcode para evitar problemas com o git na linha de comando.


4
Agradável! Observe que o Xcode E outros clientes Git podem ser culpados. No meu caso, também foi necessário fechar o gitX.
NSTJ 16/01

Depois de ter que excluir meu arquivo de bloqueio 10 vezes mais ou menos nesta manhã, finalmente encontrei esta resposta. Não sei como o xcode se abriu, mas com certeza estava destruindo meu fluxo de trabalho. Obrigado pela dica!
Cloudkiller

24

Eu estava tendo o mesmo problema. eu tentei

rm -f ./.git/index.lock 

e o console me deu uma mensagem de erro. Então eu tentei

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

e isso funcionou.

Boa sorte! Isso funciona super


Não vejo a pasta .git no meu caso. Só vejo ./ e ../ no que diz respeito ao diretório oculto.

Em que tipo de computador você está?
Olivia Steger

18

No meu diretório .git, não havia arquivo index.lock. Então, usando o shell Git Bash, eu corri ...

cd .git
touch index.lock
rm index.lock

O comando touch criou o arquivo e o problema foi resolvido.


Por que isso é prejudicado? Recebi a mensagem de erro semelhante ao OP. Isso me consertou e talvez pudesse ajudar os outros.
John Livermore

1
Eu experimentei uma leve variante disso: (1) eu experimentei a mensagem de erro e experimentei diferentes 'correções'; (2) descobri que index.locknão existia; (3) eu usei o touchcomando acima ; (4) meu cliente git parou de funcionar normalmente (na melhor das hipóteses, diminuiu para um rastreamento); (5) eu apaguei index.lock; (6) o repositório começou a funcionar normalmente novamente.
clarpaul

Definitivamente não deveria ter voto negativo, resolvido o meu problema. Eu não tinha um arquivo index.lock, mas depois que criei um e o removi posteriormente, a confirmação funcionou.
Bynho 17/03/17

touch index.lockimplica que John estava no * NIX, mas eu fiz o equivalente no Windows 10 (crie um index.lockarquivo com um editor de texto, exclua-o imediatamente e obtenha lucro), e o problema se foi.
Ruffin

1
@Spark updated ...
John Livermore

13

Você acidentalmente criou o repositório usando o rootusuário?

Acontece que eu criei o repositório git como rootusuário.

Eu apaguei o repositório git e o criei novamente sem sudoe ele funciona.


1
Sim, é isso. Obrigado
Natassia Tavares

9

Também tenho esse problema e acho realmente um problema de permissão. então eu faço isso:

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

então ererything é ótimo e gaa é sucesso.

e então eu uso gp, eu recebo outro erro quase o mesmo erro

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

brilhante, o que isso faz? "$ {USER: - $ (id -un)}"
Nick

7

No Mac OS X, faça isso no prompt de comando no diretório repo:

cd .git
rm index.lock

1
Não
existe

5

Se você estiver usando um dos #intelliJIDEs e recebendo esta mensagem (estou usando #webtorm), observe que esse problema pode ocorrer devido ao ocultar uma das pastas do projeto (dentro das configurações) e isso pode impedir a GITmesclagem.


5

A solução que funcionou para mim foi fechar texto sublime porque o processo git em execução foi iniciado pelo editor.


Instalei recentemente o plug-in Sublime Text GitSavvy e tive esse erro apenas desde então. Obrigado pela dica, @snorkelzebra
Kitze

5

Se depois de tentar:

rm -f ./.git/index.lock

você obtém:

rm: não é possível desvincular 'index.lock': permissão negada

Tente fechar todos os softwares que possam estar usando o Git. Eu tinha o Source Tree e o Visual Studio abertos e, depois de fechar, o comando funcionou.


5

No Windows, só consegui excluir o arquivo de bloqueio após o término da tarefa para todos os processos do Git Windows (32 bits) no Gerenciador de tarefas.

Solução (Win 10)

1. Finalize a tarefa para todos os processos do Git Windows (32 bits) no Gerenciador de tarefas

2. Exclua o arquivo .git / index.lock


4

No meu caso, a solução foi esperar 5 minutos. Obviamente, minha operação anterior ainda estava em execução, mas eu simplesmente não sabia. Eu estava usando tartaruga git no windows.



4

Eu acho que existe uma solução melhor do que remover o arquivo (e Deus sabe o que acontecerá a seguir ao remover / criar um arquivo com sudo):

git gc

3

Você está com problemas .git/index.lockpara excluí-lo usando o comando abaixo.

Comando:

sudo rm -rf .git / index.lock


3

Eu tentei com vários métodos várias vezes, mas este funcionou para mim (usei o terminal do PyCharm):

$ cd .git/

$ rm -f index.lock

Então tentei novamente criar um repositório git vazio:

$ git init

$ git add .

$ git commit -m "commit msg"

3

Se for um submódulo, tente isso no diretório do repositório:

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

altere submodules-name para seu submodule name.


2

A solução para esse problema é copiar os três arquivos xcode / projeto no diretório e criar um novo diretório (em qualquer outro lugar) e colar os três arquivos / diretórios.


2

Também podemos simplesmente matar o processo git. Eu recebo o mesmo problema via aplicativo GUI para o git, algo dá errado e o git faz algum trabalho infinitamente. O processo de assassinato congelará o aplicativo que funciona com o git, basta reiniciá-lo e tudo ficará bem.


2

Caso, por qualquer motivo, você esteja refazendo uma pasta que está sendo sincronizada por um serviço de nuvem (dropbox, drive, onedrive, etc.), você deve pausar ou desativar a sincronização, pois isso interferirá nas permissões durante a rebase. .


2

Para mim foi

rm -r .git-credentials.lock 

2

Eu havia mudado minha permissão de diretório, então sabia que poderia estar relacionado à permissão. No meu caso, removi usuários indesejados (_www) e apliquei permissão de leitura / gravação a todos, aplicando alterações a todo o conteúdo. Isso está no Mac

Permissão de diretório no Mac


2

Todos os comandos de remoção não funcionaram para mim, o que eu fiz foi navegar até lá usando o caminho fornecido no git e excluindo-o manualmente.


2

NÃO USE o Plugin Atom platformio-atom-ide-terminal para fazer isso. USE O TERMINAL DO DISTRO DIRETAMENTE.

Eu continuava recebendo esse erro ao refazer / esmagar as confirmações e não sabia por que, porque já havia feito isso várias vezes.

Não importa quantas vezes eu excluísse o index.lockarquivo, toda vez que ele falharia.

Acontece que foi porque eu estava usando o plugin do terminal ATOM EDITOR . Uma vez que eu usei o terminal que acompanha o Ubuntu, ele funcionou como um encanto.


2

basta ir para D: /project/androidgc/.git/ neste diretório e excluir index.lock isso funcionou para mim.


1

Caso alguém esteja usando o git svn, eu tive o mesmo problema, mas não foi possível remover o arquivo, pois ele não estava lá !. Depois de verificar as permissões, tocar no arquivo e excluí-lo, e não me lembro mais, isso fez o truque:

  • faça check-out no ramo principal.
  • git svn rebase (no mestre)
  • checkout da filial em que você estava trabalhando
  • git svn rebase

1

Um pouco de adição, porque eu tive que usar respostas diferentes para obter a solução real (para mim).

Isso fez por mim:

  1. Abrir filial em que você está trabalhando
  2. Terminal aberto (eu uso terminal no Git GUI)
  3. Digite o comando: cd .git
  4. Digite o comando: rm -f index.lock

Alguns podem ter que usar em -Forcevez de -f. Você pode verificar as linhas de seu terminal de comando executando um comando no seu terminal como algo: git help.


0

Todas as soluções estão certas:

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, o que fez a diferença para mim:

  • Evite usar o sudo para descompactar ou copiar a nova pasta .git. O Git não terá acesso à pasta .git se você usar direitos de superusuário para criá-la

0

Isso ocorreu quando eu estava em um subdiretório do diretório correspondente à pasta raiz do repositório (ou seja, o diretório em que o .git estava). Mover para o diretório raiz resolveu o problema - ao custo de tornar todas as referências de arquivo um pouco mais inconvenientes, pois você precisa ir no caminho / para / pasta / foo.ext em vez de apenas foo.ext

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.