Estou usando o git e fiz um pequeno commit seguido de um grande. Eu decidi usar git rebase
para esmagar os dois commits juntos antes de empurrá-los. (Eu nunca fiz isso antes.)
Então eu fiz:
git rebase -i HEAD~2
Isso me deu meu editor, onde eu escolhi escolher o commit anterior e esmagar o posterior. Quando salvei, o git disse:
erro: não é possível stat ' filename ': permissão negada
Não foi possível aplicar sha1 para confirmação posterior ... linha de texto inicial para essa confirmação
Agora:
- Nenhum commit aparece quando eu faço
git log
. git status
me diz que "atualmente não estou em nenhum ramo".- Um arquivo é listado como modificado e no índice, e dois arquivos são listados como não rastreados. Meu primeiro commit tinha apenas um arquivo (eu acho) e meu segundo commit tinha uma boa dúzia.
O que aconteceu!? Como faço para corrigir isso?
git
git-rebase
Ryan Lundy
fonte
fonte
Respostas:
Eu só vi esse erro no Windows e o que parece significar é que algo impediu o git de modificar um arquivo no momento em que tentou aplicar um patch.
O Windows tende a conceder aos processos acesso exclusivo aos arquivos quando isso não deveria ser realmente necessário. No passado, os antivírus eram uma fonte de suspeita, mas nunca provei isso conclusivamente.
Provavelmente, a coisa mais fácil a fazer é abortar e tentar novamente, esperando que isso não aconteça na próxima vez.
Você pode tentar usar
git apply
e conhecer o que o commit git estava realmente tentando fazer antes de fazer um,git rebase --continue
mas com toda a honestidade, eu não recomendaria isso. Na maioria das vezes que eu vi isso tentar, houve uma chance melhor do que até mesmo de que algo fosse acidentalmente perdido ou estragado.fonte
git checkout -- previously-locked-file
e poderá voltar a funcionar.git checkout
-lo para recuperar o arquivo (git status
ele foi excluído) e agora tudo está como antes de tentar rebascar / squash. Talvez eu deva tentar novamente, embora me sinta um pouco enjoado neste momento.Tente fechar todos os programas que tenham a pasta aberta, como editores, janelas do Explorer, prompts de comando e programas de FTP. Isso sempre corrige o problema para mim no Windows.
fonte
Basta fechar o seu IDE (VISUAL STUDIO / ATOM etc). Pode funcionar
fonte
Quando vejo isso na minha máquina, é pior do que apenas um "processo está com o arquivo aberto". A propriedade real do arquivo é aumentada até o ponto em que eu (executando como administrador) só posso acessá-lo após a reinicialização.
O mais próximo que posso dizer, o IIS faz parte do problema. Se eu alternar entre dois ramos principais que exigem muitos arquivos para serem modificados, o git excluirá um arquivo ou diretório (geralmente DLLs) enquanto o IIS estiver tentando fazer algo ou outro com ele. Nesse momento, o processo do IIS substitui automaticamente o arquivo no disco por uma versão bloqueada e que pertence a ninguém.
Parar o IIS neste momento não faz isso. O melhor que descobri foi reiniciar e lembre-se de interromper o IIS antes de alterar os principais ramos no futuro.
Eu sei que isso realmente não responde à pergunta, mas pode ser útil para outras pessoas.
fonte
iisreset
parece liberar os bloqueios de arquivo.iisreset
solução.No Windows, pode ser um processo do TortoiseGIT que bloqueia esses arquivos. Abra o gerenciador de tarefas e finalize o processo TGitCache.exe .
fonte
Eu apenas me deparei com este tópico de respostas - este erro é um erro grave. # Erro: não é possível stat 'reddit / app / views / links': permissão negada
É tudo o que tenho - ao tentar mesclar. Li algumas das respostas e cheguei à conclusão - tudo o que eu precisava fazer era fechar meu editor de código, que é o Atom.
Depois de fechar o editor - executei o "git merge" novamente e o boom funcionou.
Que erro sem sentido :(
fonte
se estiver usando vscode, mate o terminal e abra um novo. senão talvez fechar o terminal também
fonte
Isso acontece comigo no Windows ocasionalmente
Na maioria das vezes, tenho várias instâncias do bit bash open e uma das instâncias do git bash está em um diretório que não existe no ramo remoto do qual estou extraindo.
Fechar tudo, exceto uma instância do git bash, resolve o problema para mim.
fonte
Se o IDE que você usa (no caso de você usar um) também pode estar atrapalhando. Foi o que aconteceu comigo ao usar o QtCreator.
fonte
Usando o SourceTree no Win 10, foi corrigido o problema fechando o editor Atom.
Erro ao reproduzir:
fonte
Isso também pode acontecer quando você estiver usando o SublimeText e a janela pop-up solicitando a compra do programa não está fechada.
fonte
Isso geralmente acontece quando você tem pré-processamento de software / aplicativos assistindo ao projeto, como Prepros ou Codekit. Além disso, Atom e Sublime (e até o Notepad ++) podem fazer com que isso ocorra se um arquivo no projeto estiver sendo editado no momento.
A maneira mais fácil de contornar o problema é fechar o que tiver os arquivos do projeto aberto, mesclar suas ramificações e reabri-las para atualizá-lo. Isso também evitará problemas nos quais o programa não esteja mais ciente de quaisquer mudanças que ocorreram, forçando você a atualizar o (s) projeto (s) manualmente.
fonte
Se você estiver executando o webpack, desligue-o. Desligue seu IDE também. Deve funcionar bem depois de fazer essas coisas.
fonte
Eu tive um problema parecido. Mas era muito simples de resolver. Em uma máquina Windows, meu explorador de arquivos tinha uma pasta aberta que existia em uma ramificação, mas não na outra que fiz o check-out. Fechar o File Explorer resolveu o problema.
fonte
Acabei de ter isso no Win 7.
$ git stash pop error: não é possível stat 'parentFolder / subfolder': erro de permissão negada: não é possível stat 'parentFolder / subfolder': permissão negada
Diagnóstico:
1> Eu fui para a subpasta e ela está lá e não consegui excluí-la!
2> Use "process explorer" -> Localizar -> Encontre alças e DLLs -> coloque o nome da "subpasta" lá e pesquise.
Resultado: o XMLSpy abriu um dos xml ali, feche o XML Spy e tente o stash pop novamente, está funcionando agora.
fonte
Aconteceu comigo no Windows enquanto fazia o rebase dentro do terminal integrado do IntelliJ . Percebi que eu tinha a instância do cliente Git bash sendo executada em paralelo.
Fechar o Git bash resolveu o problema.
fonte
Meu encontro com esse problema foi causado pelo meu editor, Intellij. Como parte de seus controles internos de versão, ele havia bloqueado todos os arquivos git ocultos. (Por várias razões, eu não estava usando o plugin git que acompanha o Intellij ...)
Então, eu abri uma janela normal do DOS como Administrador, mudei para o diretório e executei
Isso removeu o bloqueio dos arquivos e tudo funcionou depois disso, e eu pude sincronizar minhas alterações usando o cliente Windows do GitHub.
fonte
Concordo com as respostas "Fechar Visual Studio" acima.
No entanto, uma etapa adicional que tive que executar, mesmo depois de fechar o Visual Studio, foi matar manualmente o processo do Visual Studio "devenv.exe" no Gerenciador de Tarefas. Depois de fazer isso, fui capaz de executar novamente no gitbash:
e o erro " não é possível nome do arquivo estatístico " desapareceu. Talvez seja devido a uma extensão do Visual Studio que mantém o processo aberto por mais tempo, mesmo após o fechamento.
fonte
Acabei de ter esse problema. O problema é que, se você abriu o arquivo, ele foi removido \ substituído após o rebase (você tinha um ramo que não possui mais esse arquivo), o sistema git corrompe. Então fechei todos os arquivos abertos e tentei fazer o checkout em algum outro ramo
fonte
Uma solução alternativa, em vez de fechar todos os aplicativos que possam estar bloqueando o diretório, como quase todas as outras respostas recomendam, seria usar um utilitário que desbloqueie os arquivos / diretório sem fechar tudo. (Eu odeio precisar reiniciar o Visual Studio)
LockHunter é o que eu uso: https://lockhunter.com/ Provavelmente existem outros por aí também, mas este funcionou muito bem para mim.
fonte
Mesmo problema no Windows 10 de 64 bits, executando o Git Bash versão 2.9.0.windows1 usando o Atom como meu editor.
Isso funcionou para mim: adicionei a pasta do software Git (para mim, era C: \ Arquivos de Programas \ Git) às exclusões do Windows Defender.
Após a exclusão foi adicionada,
git checkout 'file'
funcionou bem.fonte
Este erro também pode ser causado pelo fato de os arquivos ainda estarem "bloqueados" devido a ações anteriores do git. Tem a ver com o funcionamento da camada do sistema de arquivos do Windows. Certa vez, li uma boa explicação sobre isso, mas não me lembro onde.
Nesse caso, no entanto, como é basicamente uma condição de corrida, tudo o que você precisa fazer é continuar seu processo de rebase interrompido . Infelizmente, isso acontece comigo o tempo todo, então escrevi esse pequeno ajudante perigoso para manter minhas repercussões em andamento:
Se você quiser ter certeza, pode
git rebase --edit-todo
verificar se o próximo commit a ser aplicado é realmente aquele que falhou antes. Usegit clean -dn
para garantir que você não exclua nenhum arquivo importante.fonte
Aconteceu comigo no Windows, ao usar o photoshop: Quando salvei uma imagem e depois mudei para um ramo (deixando o photoshop com a imagem aberta), recebi o erro git. Feche a imagem no photoshop e tente novamente
fonte
Se você tiver a ferramenta Mesclar de fusão aberta, feche-a. Ele bloqueia a substituição do arquivo.
fonte
Matar o processo w3wp.exe relacionado ao repositório corrigiu isso para mim.
fonte
No meu caso, eu tinha um servidor de desenvolvimento webpack rodando atrás.
fonte
Eu recebi esse erro quando meu VS1013 estava em uma ramificação segmentada para 8.1 e estava tentando fazer check-out de uma ramificação 8.0. Eu precisava voltar ao VS e permitir que UpdateAll. Então eu poderia fazer o checkout da ramificação 8.0 sem erros.
fonte
Eu também estava em uma máquina Windows usando o Git Shell quando encontrei o mesmo erro.
No entanto, na época eu tinha vários terminais Git abertos.
O primeiro terminal recebeu o erro que você postou acima e o outro terminal executou anteriormente o
grunt serve
comando terminal da yeoman (link abaixo). O segundo terminal precisava permanecer aberto para hospedar uma instância do servidor local.Desligar todas as janelas do terminal que executam processos em andamento pode causar a falha do erro.
Pelo menos foi o que funcionou para mim. Depois de fechar a segunda janela do terminal, eu poderia facilmente fazer check-out de diferentes ramos e manipular arquivos.
Comando Grunt Serve - Yeoman.I / O
http://yeoman.io/learning/
fonte
Acabei de encontrar este problema. Nenhuma das respostas aqui aconteceu para resolver isso para mim.
Acabei sendo pacotes de nuget que adicionei em um ramo que, uma vez retornado ao ramo mestre, parecia não existir. Uma vez que eu fiz uma mesclagem, diria newtonsoft ... xml não poderia stat. Eu iria para o arquivo em questão e o abriria, mas o Windows retornou um erro dizendo que não consegue encontrar o arquivo (mesmo que eu estivesse olhando direto para ele)
Como resolvi isso, clique com o botão direito do mouse e exclua o arquivo (que funcionou, mas não consegui abri-lo porque o Windows não conseguiu encontrá-lo ???) e tente mesclar novamente e resolvi o problema.
Muito estranho.
Espero que isso ajude alguém mais tarde.
fonte
Saí do meu editor de texto que estava acessando os diretórios do projeto, tentei mesclar para o ramo principal e funcionou.
fonte