Ainda sou bastante novo em git
usá-lo para gerenciar nosso código em um ambiente de equipe. Tive alguns problemas de rebase e os corrigi usando
git checkout --ours filename.txt
git add filename.txt
git rebase --continue
Agora eu desejo empurrar minhas alterações e executar o seguinte comando
$ git push origin feature/my_feature_branch
me dá o seguinte erro:
To ssh://[email protected]:7999/repo/myproject.git
! [rejected] feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward)
error: failed to push some refs to 'ssh://[email protected]:7999/repo/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
O que posso fazer para me livrar do erro?
PS: Estou evitando usar a --force
opção tanto quanto possível.
Respostas:
Parece que alguém empurrou novos commits entre o seu último
git fetch
egit push
. Neste caso, você precisa repetir seus passos e rebasemy_feature_branch
mais uma vez.Depois de
git fetch
eu recomendo examinar a situação comgitk --all
.fonte
Provavelmente você não buscou as alterações remotas antes do rebase ou alguém empurrou novas alterações (enquanto você estava rebase e tentava empurrar). Experimente estes passos:
fonte
Eu tive esse problema! Eu tentei: git fetch + git merge, mas não resolvi! Eu tentei: git pull e também não resolvi
Então tentei isso e resolvi meu problema (é semelhante à resposta do Engenheiro):
fonte
Tive um problema semelhante e resolvi-o com:
git pull origin
fonte
Estou atrasado para a festa, mas encontrei algumas instruções úteis na página de ajuda do github e gostaria de compartilhá-las aqui.
Às vezes, Git não pode fazer sua mudança para um repositório remoto sem perder commits. Quando isso acontece, seu push é recusado.
Se outra pessoa empurrou para o mesmo branch que você, Git não será capaz de enviar suas alterações:
Você pode corrigir isso buscando e mesclando as alterações feitas no branch remoto com as alterações feitas localmente:
Ou você pode simplesmente usar
git pull
para executar os dois comandos ao mesmo tempo:fonte
tente este comando
$ git push -f -u origin <name of branch>
ie
$ git push -f -u origin master
fonte
Bloqueio de gravação no repositório local compartilhado
Eu tive esse problema e nenhum dos conselhos acima me ajudou. Consegui buscar tudo corretamente. Mas o push sempre falhou. Era um repositório local localizado no diretório do Windows com vários clientes trabalhando com ele através do driver de pasta compartilhada VMWare. Parece que um dos sistemas bloqueou o repositório Git para escrita. Depois de parar o sistema VMWare relevante, que causou o bloqueio, tudo foi reparado imediatamente. Era quase impossível descobrir qual sistema causava o erro, então tive que interrompê-los um por um até conseguir.
fonte
Bem, eu usei o conselho aqui e me ferrou, pois mesclou meu código local diretamente ao master. .... então pegue tudo com um grão de sal. Meu colega de trabalho disse que o seguinte ajudou a resolver o problema, a necessidade de reposicionar meu ramo.
fonte
No Eclipse, faça o seguinte:
Repositórios GIT> Remotos> Origem> Clique com o botão direito e diga buscar
Repositórios GIT> Rastreamento remoto> Selecione seu branch e diga mesclar
Vá para o projeto, clique com o botão direito em seu arquivo e diga Buscar do upstream.
fonte
fonte
Aqui está outra solução para resolver este problema
fonte
fonte