Question
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 'git@github.com:companyX/projectX.git'
Notre équipe a une nouvelle configuration Git. Au lieu de créer des branches privées, j’ai maintenant installé notre répertoire principal (sur github) pour créer ma propre copie.
À un moment donné, ce que j'ai fait était:
$ git fetch upstream master:upstreammaster
Voici donc 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 référentiel privé.
Je vais donc apporter quelques modifications à ma branche upstreammaster, ainsi que le code PULL de & "maître en amont &"; Tout fusionne 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 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'essaie 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 grandement appréciée! Si vous avez besoin d'éclaircissements, merci de demander, je vous répondrai!
La solution
Lorsque vous effectuez un push, essayez de spécifier le refspec pour le maître en amont:
git push upstream upstreammaster:master
Autres conseils
Jarret Hardie a raison. Ou bien, commencez par fusionner vos modifications dans le masque, puis essayez le push. Par défaut, git push
envoie 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.
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 prochainement - de nombreux développeurs s’appuient sur ce comportement dans leurs flux de travail.
Modifier / Précision
En supposant que votre upstreammaster
branche soit prête à être utilisée, procédez comme suit:
-
Extrayez tous les changements en amont.
$ git pull upstream amont
-
Basculer vers ma branche maître locale
$ git checkout master
-
Fusionner les modifications depuis
rebase
$ git merge upstreammaster
-
Poussez mes modifications vers le haut
$ git push en amont
Une autre chose que vous voudriez faire avant de pousser est de git rebase upstream/master
modifier vos modifications par rapport à l'amont / maître afin que vos commits soient tous ensemble. Vous pouvez le faire séparément (git pull --rebase upstream master
) ou comme étape distincte entre les étapes 1 et 2 ci-dessus (<=>) ou dans le cadre de votre traction (<=>)
Tout d’abord, essayez d’extraire du même refspec que vous essayez d’appliquer.
Si cela ne fonctionne pas, vous pouvez forcer une git push
en utilisant 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.
Première utilisation
git pull https://github.com/username/repository master
puis essayez
git push -u origin master
Votre référentiel se trouve-t-il à " en amont " un référentiel nu? J'ai la même erreur, mais quand je change à nu, cela n'arrive plus.
Si la requête Push indique Rejected (rejeter), essayez d'abord d'extraire de votre compte github, puis essayez de pousser.
Ex:
Dans mon cas, cela donnait 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.