Eu tenho um servidor de gitosis remoto e um repositório git local, e cada vez que faço uma grande alteração no meu código, enviarei as alterações para esse servidor também.
Hoje, porém, acho que mesmo tendo algumas alterações locais e me comprometendo com o repositório local, ao executá- git push origin master
lo, diz 'Tudo atualizado', mas quando uso git clone
para fazer check-out de arquivos no servidor remoto, ele não contém as alterações mais recentes . E eu tenho apenas um ramo chamado "mestre" e um servidor remoto chamado "origem".
PS: É isso que o git exibe durante a execução ls-remote
. Não sei se isso ajuda
$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c refs/tags/stage3
commit
não percebi e tentei enviar códigoRespostas:
Você está trabalhando com uma cabeça separada por acaso?
Como em:
indicando que seu último commit não é um cabeçalho de ramificação.
Aviso : o seguinte faz a
git reset --hard
: certifique-se de usargit stash
primeiro se desejar salvar os arquivos modificados no momento.Conforme mencionado na
git checkout
página do manual (ênfase minha):fonte
Step 1: git fetch origin git checkout -b "nodeAPI" "origin/nodeAPI" Step 2. Review the changes locally Step 3. Merge and fix conflicts git fetch origin git checkout "origin/master" git merge --no-ff "nodeAPI" Step 4. Push the result of the merge to GitLab git push origin "master"
Estou bem até o último passo. Mas agora estou confuso sobre como seguir em frente.git branch -f myBranch HEAD
:, então faça check-out do referido ramo e empurre-o. No seu caso,myBranch
pode sermaster
se você estivesse no processo de fusãonodeAPI
.Err .. Se você é um git noob, tem certeza que tem
git commit
antesgit push
? Eu cometi esse erro pela primeira vez!fonte
git commit -a -m "your message goes here"
no meu casogit add -A
,git diff --staged
, percorre mudanças hmm olhando muito bom,git commit -m 'bam!'
,git push
Talvez você esteja promovendo uma nova filial local?
Um novo ramo local deve ser enviado explicitamente:
Apenas uma dessas coisas sobre o git ... Você clona um repo, faz um branch, realiza algumas alterações, pressiona ... "Tudo está atualizado". Entendo por que isso acontece, mas esse fluxo de trabalho é extremamente hostil para os novatos.
fonte
Meu problema foi que minha filial local tinha um nome diferente da filial remota. Eu fui capaz de fazer o seguinte:
$ git push origin local-branch-name:remote-branch-name
(Crédito para https://penandpants.com/2013/02/07/git-pushing-to-a-remote-branch-with-a-different-name/ )
fonte
Outra situação que é importante estar ciente: O tipo de estado padrão para o git é que você está trabalhando no ramo "mestre". E, em muitas situações, você se destaca como o principal ramo de trabalho (embora algumas pessoas gostem e façam outras coisas).
Enfim, isso é apenas um ramo. Portanto, uma situação em que posso entrar é:
Meu ramo ativo não é realmente o ramo mestre. ... Mas eu costumo fazer o comando:
git push
(e eu tinha feito anteriormentegit push origin master
, por isso é um atalho para isso).Normalmente, eu estou empurrando o ramo principal para o repositório compartilhado ... o que provavelmente é uma coisa boa e limpa, no meu caso ...
Mas eu esqueci que as mudanças nas quais eu estou trabalhando ainda não estão no ramo mestre !!!
Portanto, toda vez que tento
git push
, e vejo "Tudo atualizado", quero gritar, mas é claro que não é culpa do git! É meu.Então, em vez disso, mesclo meu ramo no mestre e empurro, e tudo fica feliz novamente.
fonte
git push
.Explicação
Eu tive o mesmo erro e passei horas tentando descobrir. Finalmente encontrei. O que eu não sabia é que pressionar dessa maneira
git push origin branch-x
tentará procurar o branch-x localmente e depois o push para o branch-x remoto.No meu caso, eu tinha dois URLs remotos. Fiz um checkout do ramo x para o ramo y ao tentar enviar de y local para x remoto. Recebi a mensagem de que tudo está atualizado, o que é normal, porque estava pressionando x do segundo controle remoto.
Para encurtar a história, para não cair nesse tipo de armadilha, você precisa especificar a referência de origem e a referência de destino:
Atualizar:
Se você precisar executar esse comando toda vez que enviar sua ramificação, talvez seja necessário configurar o upstream entre sua ramificação local e remota com o seguinte:
Ou
fonte
Veja a resposta do VonC acima - eu precisava de uma etapa extra:
Fiz isso, mas quando tentei
git push remoterepo master
, ele disse "erro: falha ao enviar algumas referências. Para impedir que você perca o histórico, as atualizações não avançadas foram rejeitadas, mescle as alterações remotas (por exemplo, 'git pull') antes empurrando novamente. "Então eu 'git pull remoterepo master', e isso encontrou um conflito. Fiz
git reset --hard <commit-id>
novamente, copiei os arquivos em conflito para uma pasta de backup, fizgit pull remoterepo master
novamente, copiei os arquivos em conflito de volta para o meu projeto, fizgit commit
, entãogit push remoterepo master
, e desta vez funcionou.Git parou de dizer 'tudo está atualizado' - e parou de reclamar de 'encaminhamento rápido'.
fonte
Eu enfrentei uma situação semelhante; quando eu fiz as alterações e tentei
git push origin master
, estava dizendo que tudo estava atualizado.Eu tive que
git add
o arquivo alterado e depoisgit push origin master
. Começou a trabalhar a partir de então.fonte
git commit
desse arquivo adicionado antes de enviar?Do seu status git, você provavelmente tem uma situação diferente da minha.
Mas de qualquer maneira, aqui está o que aconteceu comigo .. Encontrei o seguinte erro:
A mensagem mais informativa aqui é que o controle remoto desligou. Acontece que é devido a exceder o tamanho do buffer de postagem http. A solução é aumentá-lo com
git config http.postBuffer 524288000
fonte
Eu tive esse problema hoje e não teve nada a ver com nenhuma das outras respostas. Aqui está o que fiz e como corrigi-lo:
Um repositório meu foi movido recentemente, mas eu tinha uma cópia local. Eu ramifiquei do meu ramo "mestre" local e fiz algumas alterações - e então lembrei que o repositório havia sido movido. Eu costumava
git remote set-url origin https://<my_new_repository_url>
definir o novo URL, mas quando o empurrava, dizia "Tudo atualizado" em vez de empurrar minha nova ramificação para o mestre.Acabei resolvendo o problema, alterando
origin/master
novamente e pressionando com nomes de ramo explícitos, como este:Espero que isso ajude quem teve o mesmo problema!
fonte
Super raro - mas ainda assim: no Windows, pode ser que o compact-refs tenha um ramo com uma letra maiúscula (por exemplo, dev / mybranch), enquanto a pasta refs tenha outro caso (por exemplo, dev / mybranch) quando core.ignorecase estiver definido como true .
A solução é excluir manualmente a linha relevante dos pacotes-refs . Não encontrou uma solução mais limpa.
fonte
Eu me deparei com isso quando fundi uma filial no Github e continuei a desenvolvê-lo localmente. Minha correção foi um pouco diferente das outras sugeridas.
Primeiro, ramifiquei uma nova ramificação local da minha antiga ramificação local (que não consegui forçar). Em seguida, enviei a nova ramificação local para o servidor de origem (Github). Ou seja,
Isso fez com que as mudanças aparecessem no Github, embora na nova filial local em vez da antiga filial local.
fonte
No meu caso, tive 2 repositórios remotos.
Ambos os contratos foram iguais. Apenas um era
https
outro erassh
. Portanto, remover o indesejável (no meu casossh
. Desde que eu useihttps
porquessh
não estava funcionando!) Corrigiu o problema para mim.fonte
Meu erro foi diferente de tudo o que foi mencionado até agora. Se você não tem idéia do porquê de ter uma cabeça desapegada, provavelmente não tem. Eu estava trabalhando no piloto automático com
git commit
egit push
, e não tinha lido a saídagit commit
. Acontece que foi uma mensagem de erro porque eu esqueci -am.Corrigido colocando
-am
onde eu costumo fazer:fonte
Eu enfrentei o mesmo problema. Como não adicionei alterações na área de preparação. E eu tentei diretamente enviar o código para o repositório remoto usando o comando:
git push origin master
E mostra a mensagem
Everything up-to-date
.Para corrigir esse problema, tente estas etapas
git add .
git commit -m "Bug Fixed"
git push -u origin master
fonte
Verifique se você não violou seu URL remoto.
Eu só queria mencionar que me deparei com isso depois de ativar o Git como um CVS em uma configuração de compilação local do Jenkins. Parece que Jenkins fez check-out do commit mais recente da ramificação que eu dei e também redefiniu meu controle remoto para corresponder aos caminhos que dei ao repositório. Tive que fazer checkout do meu recurso novamente e corrigir meu URL remoto de origem com 'git remote set-url'. Não aponte uma ferramenta de construção para o seu diretório de trabalho ou você terá um mau momento. Meu controle remoto foi definido como um caminho de arquivo para o meu diretório de trabalho; portanto, ele naturalmente relatou tudo atualizado quando tentei enviar alterações com a mesma origem e destino.
fonte
Outra possibilidade é que você nomeou um diretório em seu arquivo .gitignore que foi excluído. Portanto, os novos commits não seriam enviados. Aconteceu-me que nomeei um diretório para ignorar a "pesquisa", mas também era um diretório na minha árvore de origem.
fonte
Existe uma maneira rápida que eu encontrei. Vá para a pasta .git, abra o
HEAD
arquivo e altere o ramo em que estava novamente para dominar. Por exemplo, ref:refs/heads/master
fonte
refs/heads/master
quebrar meu repositório. Mas defini-lo como o que eu pensava ser o commit HEAD deu a seguinte mensagem:Warning: you are leaving 1 commit behind, not connected to any of your branches
. Consegui assumir o commit em um novo ramo e mesclá-lo de volta ao mestre.Eu tive o mesmo problema. No meu caso, foi causado por nomes de um mesmo controle remoto. Ele criou a 'origem' padrão, mas eu tenho usado o 'github' como meu controle remoto por um longo tempo, então também estava lá. Assim que removi o controle remoto 'origin', o erro desapareceu.
fonte
Isso aconteceu (as confirmações no meu log do git não estavam no GitHub, embora o git disse que tudo estava atualizado) e estou confiante de que o problema era o Github. Não recebi nenhuma mensagem de erro no git, mas o GitHub tinha erros de status e meus commits estavam lá várias horas depois.
https://status.github.com/messages
As mensagens de status do GitHub eram:
fonte
Outro erro muito simples, mas noobish meu: simplesmente esqueci de adicionar um
-m
modificador de mensagem no meu commit. Então eu escrevi:Em vez de correto:
NOTA: NÃO gera erros! Mas você não vai ser capaz de empurrar seus commits e sempre obter
Everything up to date
vezfonte
aqui, minha solução é diferente da acima. Eu ainda não descobri como esse problema acontece, mas eu o corrigi. um pouco inesperadamente.
agora vem o caminho:
o comando que funciona para mim é
$git push origin HEAD:use_local_cache
(Espero que vocês resolvam esse problema o mais rápido possível)
fonte
Eu sei que é super antigo, mas no meu caso eu o consertei bastante rápido.
Eu estava recebendo esse mesmo erro ao ser um commit à frente
master
. Então eu encontrei a publicação atual Stack Overflow. No entanto, antes de prosseguir com as idéias sugeridas, decidi fazer um novo commit e tentar novamente com o push to origin e ele funcionou sem problemas.Não sei por que, mas talvez seja útil para outra pessoa.
fonte
Outra possibilidade é que você tenha confirmações que não afetam o diretório que você está enviando. Então, no meu caso, eu tinha uma estrutura como
E fiz um commit para modificar mestre
README.md
, então corrigit subtree push --prefix client heroku-client master
e recebi a mensagemEverything up-to-date
fonte
Eu estava trabalhando com o Jupyter-Notebook quando encontrei esse erro enganoso.
Não consegui resolver com as soluções fornecidas acima, pois não tinha uma cabeça desanexada nem tinha nomes diferentes para meu repo local e remoto .
Mas o que eu tinha eram os tamanhos dos meus arquivos um pouco maiores que 1 MB e o maior quase ~ 2 MB . Reduzi o tamanho do arquivo usando Como posso reduzir o tamanho do arquivo do meu notebook iPython?técnica. Ajudou a reduzir o tamanho do meu arquivo limpando as saídas. Eu era capaz de enviar o código a partir de agora, pois ele trazia o tamanho do meu arquivo em KBs.
fonte