Mensagem completa:
error: Ref refs/remotes/origin/user is at 3636498c2ea7735fdcedc9af5ab3c8689e6abe77 but expected a21359c6cc2097c85775cde6a40105f4bd7100ec
From github.com:{github project url}
! a21359c..6273ffc user -> origin/user (unable to update local ref)
git push --force
. Tente corrergit pull --force
.Respostas:
Se você estiver executando o git em um sistema de arquivos que não diferencia maiúsculas de minúsculas (Windows ou OS X), isso ocorrerá se houver duas ramificações com o mesmo nome, mas com letras maiúsculas diferentes, por exemplo,
user_model_changes
eUser_model_changes
como ambas as ramificações remotas corresponderem ao mesmo rastreamento ref .Exclua a ramificação remota errada (você não deve ter ramificações que diferem apenas por caso) e, em seguida,
git remote prune origin
tudo deve funcionarfonte
.git\refs\remotes\origin
pasta egit pull
novamente.Correção permanente
git update-ref -d
resolvi minha instância desse erro, por exemploObserve que isso não afeta o controle remoto.
No meu caso, um subseqüente
git fetch
buscou esse ramo novamente e o seguinte git busca / puxa não deu mais o erro "ref remoto está, mas é esperado".Se isso não funcionar, uma correção temporária:
Observe também que, se você não se importa com o ramo em questão (por exemplo, apenas deseja atualizar o mestre, não a origem / usuário), uma
git pull
solução alternativa é buscar e mesclar o ramo específico com o qual você se preocupa, por exemplofonte
Basta excluir as pastas e arquivos em
\.git\refs\remotes\origin
. Funciona quando você não possui alterações não enviadas.fonte
Eu executei isso para resolver o problema:
fonte
Use os dois comandos abaixo, um por um.
Isso resolverá seu problema.
fonte
Eu tive que remover minha ramificação da minha linha de comando em:
e depois fazendo manualmente:
Eu fui capaz de puxar as mudanças.
Nota: Eu estava usando o SourceTree e não consegui fazer o pull.
fonte
.git\packed-refs
antes que ele fosse corrigido para mim.Uma reinicialização completa também resolverá o problema
fonte
Etapas mais claras
no terminal
não
ls
, você vai ver alguns ramos e CABEÇARemova o ramo que você acha que tem o problema
Se não funcionou, exclua todos os ramos / HEAD
Espero que funcione agora.
fonte
git update-ref -d <branchname>
?Tente isso, funcionou para mim. Em seu terminal:
git remote prune origin
.fonte
Infelizmente, os comandos do GIT, como remover e redefinir ou empurrar, não funcionaram para mim. A remoção funcionou uma vez e o problema retornou.
A solução permanente que funcionou para mim é editar um arquivo git manualmente. Vá para a pasta .git do projeto e abra o arquivo embal-refs em um editor de texto como o Notepad ++. Em seguida, navegue até a linha com o ramo com falha e atualize seu guia para o esperado.
Se você tiver uma mensagem como:
"erro: não é possível bloquear ref 'refs / remotes / origin / feature / branch_xxx': está em 425ea23facf96f51f412441f41ad488fc098cf23, mas espera 383de86fed394ff1a1aeefc4a522d886adcecd79"
em seguida, no arquivo, encontre a linha com 'refs / remotes / origin / feature / branch_xxx'. O guia será o (2) esperado - 383de86fed394ff1a1aeefc4a522d886adcecd79. É necessário alterá-lo para o real (1º) primeiro - 425ea23facf96f51f412441f41ad488fc098cf23.
Repita o procedimento para os outros ramos com falha e será bom prosseguir. Às vezes, depois de buscar novamente, eu tinha que repetir para os mesmos ramos que eu já 'consertei' anteriormente. Ao buscar novamente as atualizações do GIT, você fornece os mais recentes.
De qualquer forma, o problema não é um obstáculo ao show. A lista de ramificações é atualizada. Este é um aviso.
fonte
git for-each-ref --format = 'excluir% (refname)' refs / original | git update-ref --stdin git reflog expire --expire = now --todos git gc --prune = now
fonte
Mesmo caso aqui, mas nada sobre comentários postados está certo no meu caso, eu tenho apenas uma ramificação (mestre) e uso apenas o sistema de arquivos Unix, esse erro ocorre aleatoriamente quando executo a origem e ramificação git fetch --progress --prune ou 'origem / mestre'. Ninguém pode confirmar, apenas 1 usuário pode fazer push.
NOTA: Eu tenho um submódulo no repositório acme, e o acme possui novas alterações no submódulo (novas confirmações). Preciso primeiro fazer uma atualização do submódulo com a atualização do submódulo git.
Para resolver esse problema (no meu caso), basta executar o primeiro git push se o seu ramo estiver à frente da origem.
fonte
Eu sei que isso é antigo, mas tenho minha própria correção. Como estou usando a árvore de origem, esse erro ocorre porque alguém cria um novo ramo. A árvore de origem está confusa sobre isso. Depois de pressionar o botão "Atualizar" ao lado da caixa de seleção "ramificação remota para puxar", parece que o sourcetree atualizou a lista de ramificações e agora posso puxar com êxito.
fonte
Eu tive o mesmo problema que foi causado porque redefinii para um commit mais antigo, apesar de já ter enviado para o ramo remoto.
Eu o resolvi excluindo minha ramificação local, verificando a ramificação de origem
git checkout origin/my_branch
e executandogit checkout my_branch
fonte
Depois de pesquisar constantemente, esta é a solução que funcionou para mim, o que implica desarmar / remover o Upstream
fonte