web-dev-qa-db-fra.com

git Push rejeté

J'abandonne! Chaque fois que j'essaie de pousser, je me fais stupide: 

! [rejected]        master -> master (non-fast forward)
error: failed to Push some refs to '[email protected]:companyX/projectX.git'

Notre équipe a une nouvelle configuration git. Au lieu de créer des branches privées, j’ai maintenant installé notre dépôt principal (sur github) pour créer ma propre copie.

À un moment donné, ce que j'ai fait était:

$ git fetch upstream master:upstreammaster

Alors voici ma configuration actuelle ::

$ git branch
master
* upstreammaster

$ git remote -v
Origin  [email protected]:userX/projectX.git
upstream    [email protected]:companyX/projectX.git

où userX est mon référentiel privé.

Je vais donc apporter quelques modifications à ma branche upstreammaster et au code PULL de "upstream master" . Tout se fond et tout ça:

$ 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 [email protected]: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 alors quand j'essaie de faire:

$ git Push upstream master
To [email protected]:companyX/projectX.git
 ! [rejected]        master -> master (non-fast forward)
error: failed to Push some refs to '[email protected]:companyX/projectX.git'

Toute forme d'aide serait grandement appréciée! Si vous avez besoin d'éclaircissements s'il vous plaît demander, je vais répondre!

50
drozzy

Lorsque vous effectuez un Push, essayez de spécifier le refspec pour le maître en amont:

git Push upstream upstreammaster:master
19
Jarret Hardie

Jarret Hardie a raison. Ou bien, commencez par fusionner vos modifications dans le masque, puis essayez le Push. Par défaut, git Push pousse toutes les branches dont les noms correspondent sur la télécommande - et aucune autre. Ce sont donc vos deux choix - spécifiez-le explicitement comme le dit Jarret ou fusionnez-le dans une branche commune, puis appuyez sur Push.

Il a été question de cela dans la liste de diffusion Git et il est clair que ce comportement n’est pas sur le point de changer à court terme - de nombreux développeurs s’appuient sur ce comportement dans leurs flux de travail.

Edit/Clarification

En supposant que votre branche upstreammaster soit prête à Push, procédez comme suit:

  1. Tirer dans tous les changements de l'amont.

    $ git pull en amont maître

  2. Basculer vers ma branche principale locale

    $ git checkout master

  3. Fusionner les modifications de upstreammaster

    $ git merge upstreammaster

  4. Pousser mes changements vers le haut

    $ git Push en amont

Une autre chose que vous pouvez voulez faire avant de pousser est de rebase vos modifications par rapport à l'amont/maître afin que vos commits soient tous ensemble. Vous pouvez le faire en séparant les étapes 1 à 2 ci-dessus (git rebase upstream/master) ou dans le cadre de votre pull (git pull --rebase upstream master).

17
Pat Notz

Tout d’abord, essayez d’extraire du même refspec que vous essayez d’appuyer sur.

Si cela ne fonctionne pas, vous pouvez forcer un git Push à l'aide de git Push -f <repo> <refspec>, mais soyez prudent: cette méthode peut entraîner la suppression de références sur le référentiel distant.

13
Rob Watson

Première utilisation

git pull https://github.com/username/repository master

et ensuite essayer

git Push -u Origin master
7
user2368055

Votre dépôt en "amont" est-il un dépôt nu? J'ai la même erreur, mais quand je change à nu, cela n'arrive plus.

3
alekwisnia

Si la demande Push indique Rejeté, essayez d’abord d’extraire de votre compte github puis d’essayer Push.

Ex:

Dans mon cas, c'était donner une erreur-

 ! [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.

**** Donc ce que j'ai fait était - ****

$ git pull
$ git Push

Et le code a été inséré avec succès dans mon compte Github.

0
Ashif