fez o trabalho dado resposta para você, se visualizador de processo não está funcionando, em seguida, reiniciar e você pode então remover arquivos, também pode aceitar a resposta se ele trabalhou para você
dhaval
1
Verifique também se o processo git tem permissões de gravação nesse arquivo.
Isso pode significar que outro programa está usando o arquivo, o que impede o git de "mover" o arquivo para dentro ou fora do diretório de trabalho quando você está tentando alterar ramificações.
Eu tive isso acontecer no Windows Vista, onde eclipse é o programa "usando" o arquivo. O arquivo pode não estar realmente aberto no eclipse, mas pode ter sido aberto por um processo executado pelo eclipse.
Nesse caso, tente fechar o arquivo em qualquer aplicativo que possa ter usado. Se isso não funcionar, saia completamente de todos os aplicativos que possam ter aberto o arquivo.
No Windows, use ProcessExplorer para descobrir qual processo tem o arquivo aberto.
Dave C
2
Existe uma maneira de escrever um script como "se este arquivo não puder ser excluído (por exemplo, o arquivo simplesmente não existe), basta pular o arquivo".
2xMax
14
No meu caso, foi o Visual Studio e seu plug-in Git.
Michał Powaga
8
No Windows, se você não tiver o ProcessExplorer disponível ou não quiser baixá-lo, poderá executar (Windows + R) "ressonar", ir para a guia CPU e pesquisar o nome do arquivo na caixa de texto "Identificadores Associados".
Raphael
6
Se você usar, GitKrakenpoderá obtê-lo se executar comandos como um rebase.
mtpultz
285
Eu tive esse problema e resolvi-o pelo comando: git gc
O comando acima remove temp e arquivos desnecessários. (Coletor de lixo.)
git pulliniciado git gcautomaticamente e o gc tentou acessar alguns arquivos .pack e .inx. Eles foram mantidos pelo processo "windows git", que possuía o git pullcomando. Executando git gcmanualmente e depois - git pullrealmente resolve o problema.
Nikita
4
Durante a execução git gceu tenho o mesmo erro novamente quando gcestava em andamento
Prakash K
4
"A execução manual do git gc e do than - git pull realmente resolve o problema." Isso ajudou. Obrigado Nikita.
Sangam
Isso me ajudou também. Executei isso no Windows com Git Bash
Ascalonian
Depois de iniciar o git pull, recebi este erro. Pressionei CTRL + C para interromper o pull, execute o git gc e git pull novamente, o problema desapareceu e nada foi interrompido pela interrupção do pull.
Esta é uma resposta específica do Windows, por isso estou ciente de que não é relevante para você ... Estou apenas incluindo-a para o benefício de futuros pesquisadores.
No meu caso, foi porque eu estava executando o Git a partir de uma linha de comando não elevada. "Executar como administrador" corrigiu para mim.
Trabalhou para mim. Ran VS como administrador e, em seguida, lançou o prompt de comando do VS
Sentinel
3
I: digitado Ctrl+Cpara finalizar a longa lista de arquivos não vinculáveis; saiu do gitbash, do meu IDE e do aplicativo GitHub para Windows; gitbash reiniciado no modo "Executar como Administrador" elevado; e correu git gc --aggressive. Demorou um pouco para concluir, mas conseguiu passar sem erros.
Mark McClelland
Se você acredita que esta é uma duplicata você deve marcá-lo como tal, não adicionar uma resposta que aponta para outra resposta
Liam
2
@ Liam Esta pergunta é mais antiga, mas esta resposta foi apenas para a outra pergunta, e não há apenas uma resposta para essa pergunta, o que torna mais difícil definir apenas uma como duplicada.
sepehr
Isso funcionou muito bem para mim. Nenhuma das respostas anteriores o fez. Muito obrigado.
Eu me deparei com esse problema na máquina Windows e esta solução não funcionou inicialmente. No entanto, uma vez que executei esse comando em um prompt de comando do administrador, ele resolveu meu problema.
William W
23
No meu caso, não há processos tocando o arquivo ou diretório. Talvez isso aconteça se o caminho for muito longo, devido a uma restrição do sistema operacional (windows). Tente ativar o sinalizador de suporte de caminho longo na configuração global do git, conforme indicado abaixo:
git config --global core.longpaths true
ou tente definir o sinalizador de resposta sim / não, se não for conflitante para você
set GIT_ASK_YESNO=false
Se o caminho for muito longo, não encontrei uma solução bem-sucedida.
core.longpathscom adicional: redefinição --hard ameixa gc funcionou para mim - mas teve que fechar AndroidStudio para não mexer com a sua construção em ferramentas
Isso pode ser útil para alguém; se todas as opções acima não funcionarem para você, siga estas etapas:
Feche seu IDE (o meu era o Eclipse, não tenho certeza se ele se aplica ao Intellij e outros) ou a qualquer outro aplicativo que possa estar usando o git.
Abra o git na linha de comando (no meu caso, eu tinha o git bash) e execute git gccomo mencionado por outros.
Esta é a única resposta que ajudou no meu caso, usando o Android Studio
0101100101
10
Como eu estou usando gitkraken e prompt de comando, eu corri para o mesmo problema. E então eu corro git gccomando que resolveu o meu problema. Então, eu estou feliz e quero compartilhar alguns dos pontos que podem ser úteis.
O que git gcvai fazer?
git gc removendo objetos inacessíveis que podem ter sido criados a partir de invocações anteriores do git add.
Quando correr git gc?
No documento , os usuários são incentivados a executar esta tarefa regularmente em cada repositório para manter uma boa utilização do espaço em disco e um bom desempenho operacional.
Como torná-lo auto-configurável?
Alguns comandos git podem executar automaticamente o git gc; veja a bandeira --auto abaixo para obter detalhes. Se você sabe o que está fazendo e tudo o que deseja é desativar esse comportamento permanentemente, sem mais considerações, basta
No meu caso (Win8.1, TortoiseGit em execução), foi o processo chamado "cache de status TortoiseSVN" que estava bloqueando o arquivo.
Matá-lo me permitiu executar o "git gc" sem mais problemas. O processo acima é iniciado pelo TortoiseGit, portanto, não há necessidade de reiniciá-lo manualmente.
Eu tive esse tipo de problema no Windows 7 e acabou por ser devido a algum git.exeprocesso órfão .
Para resolvê-lo, abra o Gerenciador de tarefas e mate todos os git.exeprocessos.
Como os gitcomandos têm vida curta, normalmente você nunca deve ver nenhum git.exeno Gerenciador de Tarefas. Quando eles estão lá, geralmente significa que algo está errado, e você deve matar esses processos.
Eu tive esse problema com .tmparquivos na /.git/objects/packpasta Acho que algo falhou durante um push ou pull, então removi esses arquivos temporários e redefinii o HEAD para minha última confirmação. Não tenho certeza se isso é recomendado, mas funcionou para mim. Também git count-objects -vme deu uma lista dos .tmparquivos que não pertencem à pasta do pacote.
Ou para suprimir as mensagens y / n nas janelas git open cmd.exee executar:
Obrigado @ bar-horing. Isso me ajudou a identificá-lo como um problema de permissão. Depois que eu corrigi a permissão do Windows para essa pasta, ela funcionou.
Kumar
3
Eu enfrentei o mesmo problema ao fazer 'git pull'. Tentei o comando git 'git gc' de limpeza manual e resolveu o meu problema.
Embora seja uma tentativa de resposta, ela não adiciona nada que ainda não esteja coberto por outras respostas (como esta ). Se você está tentando confirmar que esta solução funciona ou deseja agradecer ao autor dessa resposta, não poste uma resposta para isso. Depois de ganhar mais reputação , você obterá privilégios suficientes para votar de forma positiva as respostas que você gosta, que é a maneira do Stack Overflow de dizer obrigado.
Como mencionado acima, outra coisa está mantendo os arquivos. O problema é que o programa não parece suspeito para nós. Eu estava tentando fazer um git pull do console, enquanto o GitKraken era aberto. Fechar o GitKraken resolveu o problema.
Unlink of file 'foo.bar' failed. Should I try again? (y/n)
Porque outro programa está usando esse arquivo . Por exemplo, quando executo o aplicativo Web Java no modelo de depuração ou o aplicativo Web no servidor, não consigo excluir o arquivo de log. Desative o servidor de aplicativos (ou desative o processo de depuração), tente novamente
Corri para esse problema executando o git Bash e o Eclipse EGit ao mesmo tempo. Solução: feche o Eclipse. Também não faria mal correr git gccomo o @khilo mencionou.
Eu me deparei com esse problema no Windows; talvez você queira executar o git bash como administrador e, em seguida, executar os comandos de desejo, que resolveram o problema para mim.
Se você estiver desenvolvendo um aplicativo Web, um motivo comum é esquecer de desligar o servidor. Por exemplo, esse poderia ser um processo simples do Node.js. ou, no Windows, seu processo do IIS é executado de maneira mais discreta como processo em segundo plano.
Eu tentei todas as dicas nesta página e nada ajudou. Eu estava fazendo um git fetche umgit reset --hard origin/development me deu o erro desconectado. Não foi possível redefinir para a confirmação mais recente.
O que ajudou foi verificar outra ramificação e depois verificar a ramificação anterior. Muito estranho, mas resolveu o problema.
Se o fechamento do IDE e a execução de vários comandos git listados aqui não ajudarem, tente matar manualmente todos os processos Java em execução. Eu tive um processo Java provavelmente sobrando do eclipse que de alguma forma manteve um arquivo de configuração aberto.
Se você estiver usando o Docker e executando o Windows 10, poderá interromper o (s) contêiner (s) em que o arquivo pode estar em execução. Para mostrar os status dos seus contêineres, execute
docker ps -a
Para detê-los, basta executar
docker stop <container name or container id>
Isso funcionou para mim, pois estou executando meus arquivos locais usando um arquivo .sh
No Windows, vi esse erro em um git clonerepositório (bastante grande). Fechado SmartGit e parou o meu software de backup (crashplan), e depois que ele trabalhou. Não tenho certeza qual dos 2 fez o truque, mas se estiver executando um ou outro, isso também poderá ser útil para você.
Eu tive o mesmo problema ao executar um git pull e, como mencionado acima, foi por causa de um programa que estava mantendo esses arquivos e não estava permitindo um git pull. Fechar o programa ajudou. Normalmente, o IDE (como o Eclipse) de onde os arquivos estão sendo registrados o manterá em segundo plano. Fechar o mesmo e executar novamente o git pull resolveu o problema para mim.
Respostas:
Isso pode significar que outro programa está usando o arquivo, o que impede o git de "mover" o arquivo para dentro ou fora do diretório de trabalho quando você está tentando alterar ramificações.
Eu tive isso acontecer no Windows Vista, onde eclipse é o programa "usando" o arquivo. O arquivo pode não estar realmente aberto no eclipse, mas pode ter sido aberto por um processo executado pelo eclipse.
Nesse caso, tente fechar o arquivo em qualquer aplicativo que possa ter usado. Se isso não funcionar, saia completamente de todos os aplicativos que possam ter aberto o arquivo.
fonte
GitKraken
poderá obtê-lo se executar comandos como um rebase.Eu tive esse problema e resolvi-o pelo comando:
git gc
O comando acima remove temp e arquivos desnecessários. (Coletor de lixo.)fonte
git pull
iniciadogit gc
automaticamente e o gc tentou acessar alguns arquivos .pack e .inx. Eles foram mantidos pelo processo "windows git", que possuía ogit pull
comando. Executandogit gc
manualmente e depois -git pull
realmente resolve o problema.git gc
eu tenho o mesmo erro novamente quandogc
estava em andamentoesta solução daqui funcionou para mim:
fonte
Ctrl+C
para finalizar a longa lista de arquivos não vinculáveis; saiu do gitbash, do meu IDE e do aplicativo GitHub para Windows; gitbash reiniciado no modo "Executar como Administrador" elevado; e correugit gc --aggressive
. Demorou um pouco para concluir, mas conseguiu passar sem erros.Encontrei esse problema ao fazer um
git pull
.Eu tentei
git gc
e resolveu o meu problema.fonte
No meu caso, não há processos tocando o arquivo ou diretório. Talvez isso aconteça se o caminho for muito longo, devido a uma restrição do sistema operacional (windows). Tente ativar o sinalizador de suporte de caminho longo na configuração global do git, conforme indicado abaixo:
ou tente definir o sinalizador de resposta sim / não, se não for conflitante para você
Se o caminho for muito longo, não encontrei uma solução bem-sucedida.
fonte
GIT_ASK_YESNO
, não consegue encontrar informações sobre este. De onde isso vem ?core.longpaths
com adicional: redefinição --hard ameixa gc funcionou para mim - mas teve que fechar AndroidStudio para não mexer com a sua construção em ferramentasEu tentei
git gc
e resolveu o meu problema.fonte
Isso pode ser útil para alguém; se todas as opções acima não funcionarem para você, siga estas etapas:
Feche seu IDE (o meu era o Eclipse, não tenho certeza se ele se aplica ao Intellij e outros) ou a qualquer outro aplicativo que possa estar usando o git.
Abra o git na linha de comando (no meu caso, eu tinha o git bash) e execute
git gc
como mencionado por outros.Isso fez a mágica para mim.
fonte
Como eu estou usando gitkraken e prompt de comando, eu corri para o mesmo problema. E então eu corro
git gc
comando que resolveu o meu problema. Então, eu estou feliz e quero compartilhar alguns dos pontos que podem ser úteis.O que
git gc
vai fazer?git gc
removendo objetos inacessíveis que podem ter sido criados a partir de invocações anteriores do git add.Quando correr
git gc
?No documento , os usuários são incentivados a executar esta tarefa regularmente em cada repositório para manter uma boa utilização do espaço em disco e um bom desempenho operacional.
Como torná-lo auto-configurável?
Alguns comandos git podem executar automaticamente o git gc; veja a bandeira --auto abaixo para obter detalhes. Se você sabe o que está fazendo e tudo o que deseja é desativar esse comportamento permanentemente, sem mais considerações, basta
fonte
No meu caso (Win8.1, TortoiseGit em execução), foi o processo chamado "cache de status TortoiseSVN" que estava bloqueando o arquivo.
Matá-lo me permitiu executar o "git gc" sem mais problemas. O processo acima é iniciado pelo TortoiseGit, portanto, não há necessidade de reiniciá-lo manualmente.
fonte
Eu tive esse tipo de problema no Windows 7 e acabou por ser devido a algum
git.exe
processo órfão .Para resolvê-lo, abra o Gerenciador de tarefas e mate todos os
git.exe
processos.Como os
git
comandos têm vida curta, normalmente você nunca deve ver nenhumgit.exe
no Gerenciador de Tarefas. Quando eles estão lá, geralmente significa que algo está errado, e você deve matar esses processos.fonte
Eu tenho esse problema no Windows. Fechei meu IDE (Android Studio) e selecionei YES no shell do git. Funcionou.
fonte
No Windows 8: executei o git gc e ele dizia que o git gc já estava em execução, executei o git gc --force e o coletor de lixo foi executado.
Eu poderia então alternar entre ramificações e mesclar sem problemas, tente o git gc --force.
Talvez o processo de GC não tenha parado por um motivo ou outro.
fonte
Eu tive esse problema com
.tmp
arquivos na/.git/objects/pack
pasta Acho que algo falhou durante um push ou pull, então removi esses arquivos temporários e redefinii o HEAD para minha última confirmação. Não tenho certeza se isso é recomendado, mas funcionou para mim. Tambémgit count-objects -v
me deu uma lista dos.tmp
arquivos que não pertencem à pasta do pacote.Ou para suprimir as mensagens y / n nas janelas
git open cmd.exe
e executar:visto aqui: https://twitter.com/petercamfield/status/494805475733807104
fonte
git gc
,git count-objects -v
ajuda a identificar os objetos temporários restantes napack
pasta.Consegui resolver isso abrindo o Powershell como administrador e a partir daí
git checkout <branch_name>
fonte
Eu enfrentei o mesmo problema ao fazer 'git pull'. Tentei o comando git 'git gc' de limpeza manual e resolveu o meu problema.
fonte
Depois de tentar várias soluções, finalmente
git clean -f
me ajudou.EDIT: Eu acertei o problema novamente algumas vezes - fechar todos os processos dependentes do git parece ajudar (como gitbash, Eclipse IDE, etc.)
fonte
Como mencionado acima, outra coisa está mantendo os arquivos. O problema é que o programa não parece suspeito para nós. Eu estava tentando fazer um git pull do console, enquanto o GitKraken era aberto. Fechar o GitKraken resolveu o problema.
fonte
Após executar o comando
Vejo erro
Porque outro programa está usando esse arquivo . Por exemplo, quando executo o aplicativo Web Java no modelo de depuração ou o aplicativo Web no servidor, não consigo excluir o arquivo de log. Desative o servidor de aplicativos (ou desative o processo de depuração), tente novamente
Vejo que o arquivo foi excluído.
fonte
Pode ser uma janela separada do gitk em execução para ver algum histórico do git.
Apenas feche essa janela para corrigir esse problema.
fonte
Corri para esse problema executando o git Bash e o Eclipse EGit ao mesmo tempo. Solução: feche o Eclipse. Também não faria mal correr
git gc
como o @khilo mencionou.fonte
Depois que nenhuma das respostas acima parecia funcionar, a execução
git fetch -p
funcionou para mim.https://git-scm.com/docs/git-fetch
fonte
Eu me deparei com esse problema no Windows; talvez você queira executar o git bash como administrador e, em seguida, executar os comandos de desejo, que resolveram o problema para mim.
fonte
Se você estiver desenvolvendo um aplicativo Web, um motivo comum é esquecer de desligar o servidor. Por exemplo, esse poderia ser um processo simples do Node.js. ou, no Windows, seu processo do IIS é executado de maneira mais discreta como processo em segundo plano.
fonte
Eu tentei todas as dicas nesta página e nada ajudou. Eu estava fazendo um
git fetch
e umgit reset --hard origin/development
me deu o erro desconectado. Não foi possível redefinir para a confirmação mais recente.O que ajudou foi verificar outra ramificação e depois verificar a ramificação anterior. Muito estranho, mas resolveu o problema.
fonte
Se o fechamento do IDE e a execução de vários comandos git listados aqui não ajudarem, tente matar manualmente todos os processos Java em execução. Eu tive um processo Java provavelmente sobrando do eclipse que de alguma forma manteve um arquivo de configuração aberto.
fonte
Se você estiver usando o Docker e executando o Windows 10, poderá interromper o (s) contêiner (s) em que o arquivo pode estar em execução. Para mostrar os status dos seus contêineres, execute
docker ps -a
Para detê-los, basta executar
docker stop <container name or container id>
Isso funcionou para mim, pois estou executando meus arquivos locais usando um arquivo .sh
fonte
Trabalhou para mim, tentei no windows:
Pare seu servidor execução no IDE ou feche o IDE
Intellij / Ecllipse ou qualquer outro, ele funcionará.
fonte
No Windows, vi esse erro em um
git clone
repositório (bastante grande). Fechado SmartGit e parou o meu software de backup (crashplan), e depois que ele trabalhou. Não tenho certeza qual dos 2 fez o truque, mas se estiver executando um ou outro, isso também poderá ser útil para você.fonte
Eu tive o mesmo problema ao executar um git pull e, como mencionado acima, foi por causa de um programa que estava mantendo esses arquivos e não estava permitindo um git pull. Fechar o programa ajudou. Normalmente, o IDE (como o Eclipse) de onde os arquivos estão sendo registrados o manterá em segundo plano. Fechar o mesmo e executar novamente o git pull resolveu o problema para mim.
fonte
Eu tive esse mesmo erro e o fechamento do aplicativo que tinha o arquivo aberto o resolveu. Consegui voltar e pressionar "Y"
fonte