Algo errado está acontecendo com um dos arquivos no meu repositório git local. Quando estou tentando alterar o ramo, ele diz:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
O que isso poderia significar?
Algo errado está acontecendo com um dos arquivos no meu repositório git local. Quando estou tentando alterar o ramo, ele diz:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
O que isso poderia significar?
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.
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.)
git pull
iniciado git gc
automaticamente e o gc tentou acessar alguns arquivos .pack e .inx. Eles foram mantidos pelo processo "windows git", que possuía o git pull
comando. Executando git gc
manualmente e depois - git pull
realmente resolve o problema.
git gc
eu tenho o mesmo erro novamente quando gc
estava em andamento
esta solução daqui funcionou para mim:
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.
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 correu git 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.
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.
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 ferramentas
Eu tentei git gc
e resolveu o meu problema.
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.
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
git config --global gc.auto 0
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.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 nenhum git.exe
no Gerenciador de Tarefas. Quando eles estão lá, geralmente significa que algo está errado, e você deve matar esses processos.
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.
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ém git 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:
SETX GIT_ASK_YESNO false
visto aqui: https://twitter.com/petercamfield/status/494805475733807104
git gc
, git count-objects -v
ajuda a identificar os objetos temporários restantes na pack
pasta.
Consegui resolver isso abrindo o Powershell como administrador e a partir daí
git checkout <branch_name>
Eu enfrentei o mesmo problema ao fazer 'git pull'. Tentei o comando git 'git gc' de limpeza manual e resolveu o meu problema.
Após executar o comando
git rm -rf foo.bar
Vejo erro
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
git rm -rf foo.bar
Vejo que o arquivo foi excluído.
Depois que nenhuma das respostas acima parecia funcionar, a execução git fetch -p
funcionou para mim.
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.
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.
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 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ê.
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.
Eu tive esse mesmo erro e o fechamento do aplicativo que tinha o arquivo aberto o resolveu. Consegui voltar e pressionar "Y"