Pergunta
Eu desisto! Sempre que eu tento empurrar eu recebo um estúpido:
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'
Nossa equipe tem uma nova configuração git. Em vez de fazer ramos particulares agora eu bifurcado nosso repositório principal (no github) para criar a minha própria cópia.
Em algum momento o que eu fiz foi:
$ git fetch upstream master:upstreammaster
Então aqui está a minha configuração atual ::
$ git branch
master
* upstreammaster
$ git remote -v
origin git@github.com:userX/projectX.git
upstream git@github.com:companyX/projectX.git
onde userX é meu repositório privado.
Então eu ir e fazer algumas alterações no meu upstreammaster ramo, ea atração de "mestre upstream". funde tudo e coisas:
$ git pull upstream master
remote: Counting objects: 95, done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 60 (delta 54), reused 0 (delta 0)
Unpacking objects: 100% (60/60), done.
From git@github.com:companyX/projectX
* branch master -> FETCH_HEAD
Merge made by recursive.
stuff | 165 ++++++++++++--------
stuff | 35 ++--
stuff | 107 ++++++++++---
stuff | 105 ++++++++++---
stuff | 24 ++--
stuff | 9 +-
stuff | 53 +++----
stuff | 44 +++---
stuff | 52 +++----
stuff | 32 +----
stuff | 4 +-
stuff | 138 ++++++++---------
stuff | 58 ++++----
stuff | 115 ++++++++------
stuff | 5 +-
stuff | 39 ++---
stuff | 28 ++--
17 files changed, 560 insertions(+), 453 deletions(-)
mas quando eu tento fazer:
$ git push upstream master
To git@github.com:companyX/projectX.git
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'
Qualquer ajuda seria greately apreciada! Se você precisar de esclarecimentos por favor, pergunte, vou responder!
Solução
Ao fazer um empurrão, tente especificar o refspec para o mestre a montante:
git push upstream upstreammaster:master
Outras dicas
Jarret Hardie está correto. Ou, primeiro fundir suas modificações novamente em mestre e tente o impulso. Por padrão, git push
empurra todos os ramos que têm nomes que correspondem no controle remoto - e não outros. Portanto, estas são as duas opções - ou especificá-lo explicitamente como Jarret disse ou merge de volta a um tronco comum e empurre
Houve conversa sobre isso na lista de correio Git e é claro que este comportamento não está prestes a mudar tão cedo -. Muitos desenvolvedores contam com esse comportamento em seus fluxos de trabalho
Editar / Esclarecimento
Assumindo que o seu ramo upstreammaster
está pronto para empurrar então você poderia fazer isso:
-
Pull em quaisquer alterações do montante.
$ git pull mestre a montante
-
Alternar para o meu ramo mestre local
$ mestre git checkout
-
mudanças de mesclagem no de
upstreammaster
$ merge git upstreammaster
-
Empurre as minhas alterações up
$ git push montante
Outra coisa que você pode quer fazer antes de empurrar é rebase
as alterações contra mestre montante / de modo que seus commits estão todos juntos. Você pode fazer isso como um passo separado entre # 1 e # 2 acima (git rebase upstream/master
) ou você pode fazê-lo como parte de sua tração (git pull --rebase upstream master
)
Em primeiro lugar, tentar puxar a partir do mesmo refspec que você está tentando empurrar a.
Se isto não funcionar, você pode forçar uma git push
usando git push -f <repo> <refspec>
, mas tenha cuidado:. Este método pode causar referências a ser eliminado no repositório remoto
Primeiro uso
git pull https://github.com/username/repository master
e tente
git push -u origin master
é seu repositório em um repositório nua "upstream"? Eu tenho o mesmo erro, mas quando eu mudar para descobrir que já não aconteceria.
Se solicitação de envio é mostra Rejeitado, tente primeira puxada de sua conta github e tente empurrar.
Ex:
No meu caso, estava dando um erro -
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/ashif8984/git-github.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.
**** Então o que eu fiz foi - ****
$ git pull
$ git push
E o código foi empurrado com sucesso na minha Conta Github.