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?

user984621
fonte
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.

Raphael R.
fonte
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.

ssaltman
fonte
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.

Jeff Grimes
fonte
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

Olivia Steger
fonte
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.

John Livermore
fonte
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.

hktang
fonte
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
defender a orca
fonte
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
Rick Wong
fonte
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.

neoswf
fonte
5

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

snorkelzebra
fonte
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.

Boos
fonte
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

ChrisDeDavidMindflowAU
fonte
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.

rdans
fonte
4

Usa isto:

rm -Force ./.git/index.lock
Manoj Tarkar
fonte
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
Roy Segall
fonte
3

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

Comando:

sudo rm -rf .git / index.lock

Pramod Kharade
fonte
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"
ferrugem
fonte
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.

Kharda
fonte
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.

G unitzo
fonte
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.

kaspartus
fonte
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. .

Dmase05
fonte
2

Para mim foi

rm -r .git-credentials.lock 
N Jay
fonte
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

Hammad Khan
fonte
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.

Aaron Rabinowitz
fonte
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.

juliangonzalez
fonte
2

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

avez raj
fonte
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
cauchy
fonte
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.

Ronnie Oosting
fonte
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
Javi
fonte
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

SN
fonte