Question Ne peut pas pousser à GitHub - ne cesse de dire besoin de fusion


Je suis nouvelle GitHub. Aujourd'hui j'ai rencontré un problème quand j'essayais de pousser mon code sur GitHub.

Pushing to git@github.com:519ebayproject/519ebayproject.git
To git@github.com:519ebayproject/519ebayproject.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:519ebayproject/519ebayproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Je n'ai encore rien poussé dans le référentiel, alors pourquoi ai-je besoin de tirer quelque chose?


598
2018-04-24 12:56


origine


Réponses:


Cela peut entraîner la perte de validations du référentiel distant; utilisez-le avec soin.

Si vous ne souhaitez pas fusionner la branche distante dans votre branche locale (voir les différences avec git diff), et que vous voulez faire une poussée de force, utilisez le commande push avec -f

git push -f origin <branch>

origin est le nom de votre éloigné repo.

Habituellement, la commande refuse de mettre à jour une référence distante qui n'est pas un ancêtre de la référence locale utilisée pour l'écraser. Ce drapeau désactive le contrôle. Cela peut entraîner la perte de validations du référentiel distant; utilisez-le avec soin.


608
2017-08-08 20:08



Comme le message vous le dit,

Fusionner les modifications à distance (par exemple, 'git pull')

Utilisation git pull tirer les dernières modifications du référentiel distant vers votre référentiel local. Dans ce cas, l'extraction de modifications nécessitera une fusion, car vous avez apporté des modifications à votre référentiel local.

Je vais donner un exemple et une photo à expliquer. Supposons que votre dernier tirage d'origine / branche ait été effectué à la validation B. Vous avez terminé et effectué un certain travail (Commit C). En même temps, quelqu'un d'autre a terminé son travail et l'a poussé vers l'origine / la branche (Commit D). Il faudra fusionner ces deux branches.

local branch:                         --- Commit C 
                                    /
                                   /
                                  /
origin/branch: Commit A ------ Commit B ---- Commit D

Parce que vous êtes celui qui veut pousser, Git vous oblige à effectuer la fusion. Pour ce faire, vous devez d'abord tirer les modifications de l'origine / branche.

local branch:                         --- Commit C -- Commit E
                                    /               /           
                                   /               /             
                                  /               /               
origin/branch: Commit A ------ Commit B ---- Commit D 

Une fois la fusion terminée, vous pouvez désormais rediriger l'origine / la branche vers Commit E en appuyant sur vos modifications.

Git requiert que vous manipuliez les fusions vous-même, car une fusion peut entraîner des conflits.


214
2018-04-24 13:01



Avez-vous mis à jour votre code avant de pousser?

Utilisation git pull origin master avant de pousser quoi que ce soit.

Je suppose que vous utilisez origin comme nom pour votre télécommande.

Vous devez tirer avant de pousser, pour mettre votre référentiel local à jour avant de pousser quelque chose (juste au cas où quelqu'un d'autre a déjà mis à jour le code sur github.com). Cela aide à résoudre les conflits localement.


185
2018-04-24 13:01



Cela se produit normalement lorsque vous git commit et essayer de git push changements avant git pulling sur cette branche x où quelqu'un d'autre a déjà fait des changements.

Le flux normal serait comme ci-dessous, 

ÉTAPE 1: git stash vos modifications locales non validées sur cette branche.

ÉTAPE 2: git pull origin branch_name -v à pull and merge aux modifications engagées localement sur cette branche (donner un message à cette fusion et corriger les conflits le cas échéant.)

ÉTAPE 3: git stash pop la stashchangements (Ensuite, vous pouvez faire des validations sur les fichiers sautés si vous voulez ou pousser les changements déjà validés (STEP4) en premier et faire de nouveaux commit aux fichiers plus tard.)

ÉTAPE 4: git push origin branch_name -v les changements fusionnés.

Remplacer branch_name avec master (pour master branche).


116
2018-06-03 18:09



Parfois, nous avons oublié le tirage et fait beaucoup de travaux dans l'environnement local.

Si quelqu'un veut pousser sans tirer,

git push --force

travaille. Ce n'est pas recommandé lorsque vous travaillez avec d'autres personnes, mais lorsque votre travail est une chose simple ou un projet de jouet personnel, ce sera une solution rapide.


44
2017-07-29 16:17



Certains d'entre vous peuvent avoir cette erreur parce que Git ne sait pas quelle branche vous essayez de pousser.

Si votre message d'erreur comprend également

error: failed to push some refs to 'git@github.com:jkubicek/my_proj.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you did not intend to push that branch, you may want to
hint: specify branches to push or set the 'push.default' configuration
hint: variable to 'current' or 'upstream' to push only the current branch.

alors vous pouvez suivre les conseils pratiques de Jim Kubicek, Configurer Git pour ne pousser que la branche actuelle, pour définir la branche par défaut sur actuelle.

git config --global push.default current

31
2017-11-19 06:14



En plus des réponses ci-dessus, ce qui suit a fonctionné pour moi: -

Scénario -

  1. J'ai poussé my_branch à l'origine avec succès.
  2. J'ai fait quelques changements supplémentaires.
  3. Quand j'ai essayé de pousser à nouveau, (après avoir fait ajouter, commettre bien sûr), j'ai eu l'erreur mentionnée ci-dessus.

Solution -

 1. git checkout **my_branch**
 2. git add, commit your changes.
 3. git pull origin **my_branch** (not origin, master, or develop)
 4. git push origin **my_branch**

Proof


16
2018-01-20 09:17



git pull origin branch_name --rebase

Cela a fonctionné pour moi - la commande git pull origin branch_name --rebase tirera d'abord les changements de remote branch_name, puis rebase branche actuelle sur le dessus de celui-ci.


14
2017-11-24 07:16



J'ai eu le même problème, ce que j'ai fait c'est que je l'ai d'abord poussé de force en utilisant cette

git push --force

Je l'ai fait après avoir commis les fichiers et obtenait une erreur que vous avez obtenu. Il a commis tous les fichiers et il les a poussés. Puis la prochaine fois que je poussais vers le github. J'ai fait ce qu'il me demandait et tout allait bien alors. J'espère que cela fonctionne pour vous aussi :)


14
2018-02-11 14:57



Je l'ai mentionné dans mon tutoriel, Comment utiliser GitHub: un tutoriel pour les débutants.

Lorsque vous créez un nouveau référentiel sur GitHub, GitHub peut vous demander de créer un fichier readme. Si vous créez un fichier lisez-moi directement sur GitHub, vous devrez d'abord faire une demande 'pull' avant que la requête 'push' soit réussie. Ces commandes vont "tirer" le dépôt distant, le fusionner avec vos fichiers actuels, puis "repousser" tous les fichiers vers GitHub:

git pull https://github.com/thomas07vt/MyFirstRepo.git master

git push https://github.com/thomas07vt/MyFirstRepo.git master

11
2018-01-25 06:02



git push -f origine Nom de la filiale

Utilisez la commande ci-dessus uniquement si vous êtes sûr que vous n'avez pas besoin de code de branche distante, sinon fusionnez d'abord, puis appuyez sur le code


6
2017-08-22 12:15