Estou tentando atualizar meu repo de um branch remoto e continuo recebendo este erro quando faço um "git pull". Não fiz nenhuma alteração local e, mesmo que tenha, não preciso mantê-las.
Eu tentei:
git reset --hard
e eu tenho o mesmo problema
A única coisa que parece funcionar é deletar o arquivo problemático e tentar um git pull novamente.
Eu também tentei git stash
seguido por um git pull
. Não vá.
editar: usando PortableGit-1.6.4-preview20090729, portanto, quaisquer bugs anteriores com erros espúrios devem ser corrigidos.
git rm --cached learned/tests/temp_funcs.py
- Como queria que o arquivo permanecesse na lista Arquivos não rastreados ,git rm --cached
me desbloqueei neste caso.--abort
. Nenhuma das soluções propostas me permitiu abortar, exceto para excluir os arquivos ofensivos.Respostas:
Há algumas maneiras de corrigir isso, mas descobri que git stash funciona bem para mim. Ele temporariamente coloca suas mudanças locais em outro lugar. Em seguida, você pode puxar para obter as alterações mais recentes. E então você pode obter suas alterações locais de volta.
Bem assim:
fonte
git rm --cached
, comentário completo: stackoverflow.com/questions/1248029/…Isso pode acontecer se você atualizar o índice para ignorar certos arquivos:
e então, por exemplo, verifique algum outro branch:
Forçar a atualização do índice corrige o problema:
Seguido por:
E então tudo deve voltar ao normal.
fonte
git rm --cached learned/tests/temp_funcs.py
- Como queria que o arquivo permanecesse na lista Arquivos não rastreados ,git rm --cached
me desbloqueei neste caso.git update-index --really-refresh
era a peça que faltava! Muito bem, isto foi difícil de encontrarEsse tipo de problema é freqüentemente causado ao tentar extrair de um repositório que possui dois nomes de arquivo que diferem apenas no caso. Se você estiver em FAT, NTFS no modo sem distinção entre maiúsculas e minúsculas (essencialmente, a qualquer momento em que estiver sendo usado no Windows) ou HFS + no modo sem distinção entre maiúsculas e minúsculas e tiver dois arquivos "foobar" e "FOOBAR", o Git verá dois arquivos distintos arquivos, mas o sistema de arquivos verá apenas um, o que causará todos os tipos de problemas. O Git fará checkout, digamos, "FOOBAR" e, em seguida, "foobar", que o sistema de arquivos vê como uma simples substituição do conteúdo de "FOOBAR", mas deixando-o no lugar. Agora, para o Git, parece que "FOOBAR" foi substituído pelo conteúdo de "foobar" e "foobar" desapareceu.
Existem duas manifestações diferentes desse problema básico. Um é quando o seu repositório contém dois arquivos que diferem apenas na caixa. Nesse caso, você precisa trabalhar em um sistema de arquivos com distinção entre maiúsculas e minúsculas ou editar o repositório para garantir que não ocorram colisões desse tipo; um sistema de arquivos que não faz distinção entre maiúsculas e minúsculas simplesmente não pode armazenar o conteúdo deste repositório.
Um caso diferente que você pode contornar é quando ocorre uma renomeação que altera o caso do arquivo. Digamos, por exemplo, que o repositório Git contém uma renomeação de "EXEMPLO" para "exemplo". Antes de Git verificar a nova versão, ele tentará e verificará se não está sobrescrevendo algum arquivo existente que você tem em seu disco. Uma vez que ele pensa que "exemplo" é um novo nome de arquivo, ele perguntará ao sistema de arquivos se ele existe, e o sistema de arquivos verá "EXEMPLO" e dirá sim, então o Git se recusará a verificar a nova versão, pois acha que será sobrescrito arquivos não rastreados. Nesse caso, se você não tiver mudanças locais de seu interesse, um simples
git reset --hard <revision-to-checkout>
geralmente será suficiente para você superar o problema e ir para a nova revisão. Apenas tente e lembre-se de não renomear arquivos com outros nomes que diferem apenas no caso de você estar em um sistema de arquivos que não diferencia maiúsculas de minúsculas, pois isso causará problemas como este.fonte
Para mais detalhes sobre a postagem de @Brian Campbell (porque o reset hard também não funcionou), quero apontar um caso extremo que estava me impedindo.
Mudei um arquivo
OldFile
para uma pasta diferente e o renomeeiNewFile
. Em seguida, sinalizei o arquivo comoassume-unchanged
.Isso estava me impedindo de trocar de branches e não havia stash para salvar ou commitar para push. O problema é que não confirmei essa alteração de arquivo com um novo nome antes de definir o
assume-unchanged
sinalizador. Então eu configurei de volta parano-assume-unchanged
, confirmei e, em seguida, configurei de volta paraassume-unchanged
e eu poderia alternar de novofonte
checkout -f
, ele falhará.De um modo geral, isso significa que você tem alterações em seus arquivos locais que não foram enviadas para seu repositório local. Você também pode ver esta questão stackoverflow para um pouco mais de detalhes.
fonte
Eu estava vendo um problema semelhante (Windows 10): eu estava ligado
branchA
e queria acessarmaster
. Tive algumas mudanças não confirmadas, então primeiro eugit stash
,git checkout -f master
mas ainda conseguiEntry 'fileName' not uptodate. Cannot merge
.git status
não estava mostrando nada para cometer.Acabei removendo o arquivo manualmente e fui capaz de ir para o outro branch (o que obviamente fez meu arquivo voltar), então acho que houve um bug em algum lugar do git.
fonte
.gitignore
arquivo! Mesmo que eu não tenha feito nenhuma mudança nele, e o git não me permitiria "esconder" (porque não há mudanças locais, dã!) Então, movi o.gitignore
arquivo para fora do repositório (como uma espécie de "backup") e, em seguida, fiz umgit reset --hard
, que "consertou" o repositório em um estado são.git status
me mostrou qual arquivo foi alterado e sugeriu que eu poderia usar emgit restore myFile
vez de excluí-lo, o que funcionou.Pode ser um problema também com as permissões de arquivo. O Git também está versionando-os, a menos que o config diga o contrário. Apenas adicionando esta resposta para pessoas que têm quase, mas não o problema semelhante.
fonte
Vale a pena tentar:
Você poderia definir, apenas para esta atualização, definir o parâmetro de configuração
core.trustctime
como falso?fonte
Adicionando minha resposta porque nenhum dos outros mencionou isso. No meu caso, isso aconteceu depois que adicionei novos arquivos ao índice com o
-N
sinalizador, apenas adicionando-os ao índice sem adicionar seu conteúdo. Nesse estado, fazergit stash
produz esse erro.fonte
Eu tive o mesmo erro, após uma situação em que
git status
dissenew file: foo.cpp
para um arquivo não adicionado à área de teste. ou seja, sob o título "Alterações não preparadas para confirmação". Muito estranho, isso geralmente não acontece.Solução:,
git add foo.cpp
e depoisgit stash
funcionou novamente.fonte