68 votes

git push rejeté

J'abandonne! Chaque fois que j'essaie de faire, je reçois un stupide:

! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'

Notre équipe a une nouvelle installation de git. Au lieu de faire privé branches j'ai maintenant Fourche notre dépôt principal (sur github) pour créer mon propre exemplaire.

À un certain point ce que j'ai fait:

$ git fetch upstream master:upstreammaster

Donc, voici ma configuration actuelle::

$ git branch
master
* upstreammaster

$ git remote -v
origin  git@github.com:userX/projectX.git
upstream    git@github.com:companyX/projectX.git

où userX est mon repository privé.

Donc, je vais, et de faire quelques changements à mon upstreammaster de la branche, et la force d'attraction de "en amont de maître". Tout se fond et trucs:

$ 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(-)

mais quand j'ai essayer de faire:

$ 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'

Toute aide serait greately apprécié! Si vous avez besoin de précisions, veuillez vous poser, j'y répondrai!

28voto

Jarret Hardie Points 36266

Lorsque vous faites un push, essayez de spécifier le refspec pour l'amont maître:

git push upstream upstreammaster:master

20voto

Pat Notz Points 46841

Jarret Hardie est correct. Ou, d'abord fusionner vos modifications en master et ensuite essayer de le pousser. Par défaut, git push pousse toutes les branches qui ont des noms qui correspondent à la distance -- et pas d'autres. Donc, ce sont vos deux choix, soit le spécifier explicitement comme Jarret dit ou fusionner dans un tronc commun, et puis le pousser.

Il y a eu des discussions à ce sujet sur le Git de la liste de courrier et il est clair que ce comportement n'est pas sur le point de changer de sitôt, de nombreux développeurs s'appuient sur ce comportement dans leur flux de travail.

Modifier/Précisions

En supposant que votre upstreammaster de la branche est prêt à pousser alors que vous pourriez faire ceci:

  1. Pull en toute modification de l'amont.

    $ git pull en amont maître

  2. Interrupteur à mon local de la branche master

    $ git checkout master

  3. Fusionner les modifications dans d' upstreammaster

    $ git merge upstreammaster

  4. Pousser mes modifications

    $ git push en amont

Une autre chose que vous pourriez voulez faire avant de pousser est-à - rebase vos modifications à l'encontre de l'amont et de la maîtrise de sorte que vos commits sont tous ensemble. Vous pouvez soit le faire que comme une étape distincte entre #1 et #2 ci-dessus (git rebase upstream/master) ou vous pouvez le faire dans le cadre de votre pull (git pull --rebase upstream master)

14voto

user2368055 Points 83

la première utilisation

git pull https://github.com/username/repository maître

et puis, essayez de

git push -u origin master

13voto

robw Points 1562

Tout d'abord, tenter de tirer à partir de la même refspec que vous essayez de le pousser à.

Si cela ne fonctionne pas, vous pouvez forcer l' git push par l'aide d' git push -f <repo> <refspec>, mais faites attention: cette méthode peut provoquer des références seront supprimés sur le dépôt distant.

3voto

alekwisnia Points 765

Est votre référentiel "en amont" un dépôt nu? J'ai eu le même message d'erreur, mais lorsque je change de nus, ils n'arrivera plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X