Estou trabalhando em uma equipe com alguns desenvolvedores usando git no BitBucket. Estamos todos trabalhando em um dev
branch, não empurrando master
até o lançamento.
Um dos desenvolvedores cometeu um código incorreto que sobrescreveu o meu por acidente, e agora estou tentando enviar o código correto de volta para o repositório. Tenho lido sobre este erro há alguns dias, não consigo mais enviar para o repo porque estou recebendo o seguinte erro:
! [rejected] master -> dev (fetch first)
error: failed to push some refs to 'https://[email protected]/repo_user/repo_name.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Eu sigo as instruções e pull
, mas recebo um conflito de mesclagem. Depois de inserir uma mensagem para o conflito de mesclagem, meu código local agora é o código incorreto que o outro desenvolvedor carregou acidentalmente (como esperado do pull
). Portanto, substituo o código incorreto pelo backup que copiei antes de confirmar e, quando tento enviar novamente, recebo o mesmo erro.
É muito frustrante, quero muito ajudar minha equipe e contribuir, mas não posso por causa desse erro. Alguém sabe como resolver esse problema? Eu apreciaria muito qualquer ajuda.
Estes são os comandos que executo para confirmar, se isso ajudar alguém:
git pull remotename master:dev
git add --all
git commit -m "some message"
git pull remotename master:dev
git push remotename master:dev
Eu teria pensado que, se mantivesse essa ordem, não receberia conflitos de mesclagem. Eu acho que estava errado. obrigado novamente
Atualização: devo acrescentar que procurei por algumas horas no Google e stackoverflow, e segui instruções diferentes, mas ainda não consigo push
para o dev
branch.
git pull --rebase
.Use este comando no terminal
fonte
Acontece quando estamos tentando enviar para o repositório remoto, mas criamos um novo arquivo remoto que ainda não foi retirado, digamos
Readme
. Nesse caso, como diz o errocomo não temos atualizado remotamente em nosso ambiente local. Então, pegue primeiro do controle remoto
Isso atualizará seu repositório local e adicionará um novo
Readme
arquivo. Em seguida, envie as alterações atualizadas para o remotofonte
git pull origin develop
em meu ramo de desenvolvimento local, mas agora, apenasgit pull
funciona bem para mim, não sei por quê.git pull
é o suficienteIsso geralmente acontece quando o repo contém alguns itens que não existem localmente. Portanto, para enviar nossas alterações, neste caso precisamos integrar as alterações remotas e, em seguida, enviar.
Portanto, crie uma atração remota
Em seguida, envie as alterações para esse controle remoto
fonte
Força para empurrar
git push -f origin master
fonte
Eu consertei, não tenho certeza do que fiz. Tentei simplesmente empurrar e puxar usando:
git pull <remote> dev
ao invés degit pull <remote> master:dev
Espero que isso ajude alguém se eles estão tendo o mesmo problema.
fonte
Você precisa inserir:
Se você usar um
git push origin master --force
, terá um grande problema.fonte
git fetch
egit merge
novamente manualmente após a execuçãogit pull
que os contém ?Você pode tentar isto:
git pull origin master --rebase
fonte
Bem, na verdade o github é muito mais simples do que pensamos e absolutamente acontece sempre que tentamos fazer push, mesmo depois de inserirmos explicitamente alguns arquivos em nosso repositório git, então, para corrigir o problema, basta tentar ..
: git pull
e depois..
: git push
Nota: se você acidentalmente travou no editor vim depois de puxar seu repositório, não se preocupe, apenas feche o editor vim e tente push :)
fonte
Eu fiz as etapas abaixo. finalmente está funcionando bem.
Passos
1) git init
2) git status (para verificar o status)
3) git add. (adicione todo o arquivo de mudança (.))
4) git commit -m
"<pass your comment>"
5) git remote add origin
"<pass your project clone url>"
6) git pull --allow-unrelated-histories
"<pass your project clone url>"
master7) git push -u
"<pass your project clone url>"
masterfonte
Eu tive esse erro e foi porque havia uma atualização no servidor, mas o SourceTree não estava mostrando nenhuma atualização disponível (possivelmente porque eu estava offline na última verificação). Então, eu fiz uma atualização na árvore de origem e agora mostra 2 itens para enviar em vez de 1 item.
Portanto, certifique-se de pressionar atualizar ou puxar se você receber este erro e tente novamente.
fonte
Aviso git push -f origin master
fonte
O erro possivelmente vem por causa da estrutura diferente do código que você está enviando e aquele presente no GitHub. Você pode consultar: Como lidar com o erro " recusar-se a mesclar históricos não relacionados ":
fonte
A melhor opção para mim e funciona e simples
git pull --rebase
então
git push
boa sorte
fonte
Foi assim que resolvi esse problema:
git pull origin master
git push origin master
Isso geralmente acontece quando seu branch remoto não é atualizado. E depois disso, se você receber um erro como "Por favor, digite uma mensagem de confirmação" Consulte isto (Para mim, xiaohu Wang, a resposta funcionou :))
fonte
Eu tive um projeto SSDT VS primeiro. Eu queria enviar o projeto como o fiz para o Github. Eu queria que esse push fosse a versão inicial do meu repo iniciando o branch master. A sugestão de Donal de git push -f origin master foi a maneira mais fácil (que eu vi) de fazer isso. Como não precisei me preocupar em reescrever nada, parecia fazer sentido.
fonte
Eu tive o mesmo problema. Acontece que criei o arquivo .Readme no repositório sem puxá-lo primeiro.
Você pode excluir o arquivo .Readme ou puxá-lo antes de empurrar.
fonte
você pode usar
isso ajudará no caso de você ter algumas alterações ainda não registradas em seu repositório local. especialmente
README.md
fonte