web-dev-qa-db-fra.com

Comment fusionner les modifications à distance chez GitHub?

Je reçois une erreur suivante lorsque j'essaie d'abord Github Push:

[rejected] master -> master (non-fast forward)
error: failed to Push some refs to '[email protected]:me/me.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'non-fast forward'
section of 'git Push --help' for details.

comment puis-je résoudre ce problème et fusionner les modifications à distance?

134
John

Voir la section 'non-fast forward' de ' git Push --help ' pour plus de détails.

Vous pouvez effectuer un "git pull", résoudre des conflits potentiels et "git Push" le résultat. Un "git pull" créera un commit C de fusion entre les commits A et B.

Alternativement, vous pouvez reformer votre changement entre X et B au-dessus de A, avec "git pull --rebase" et Poussez le résultat. La base va créer un nouveau commit D qui construit le changement entre X et B au-dessus de A.

104
Thilo

Vous pouvez également forcer un Push en ajoutant le symbole + devant le nom de votre branche.

git Push Origin +some_branch
84
SammyK

Vous avez probablement des modifications sur github que vous n'avez jamais fusionnées. Essayez git pull pour récupérer et fusionner les modifications, vous devriez alors être en mesure de pousser. Désolé si j'ai mal compris votre question.

20
Jorge Israel Peña

Si vous "git pull" et que le message "Déjà à jour" s'affiche et que vous obtenez toujours cette erreur, il est possible que l'une de vos autres branches ne soit pas à jour. Essayez de changer de branche et de vous assurer que celle-ci est également à jour avant de tenter à nouveau de "git Push":

Passez à la branche "foo" et mettez-la à jour:

$ git checkout foo
$ git pull

Vous pouvez voir les branches que vous avez en émettant une commande:

$ git branch
12
David Calhoun

Vous pouvez le forcer à Push, mais veuillez le faire UNIQUEMENT lorsque vous êtes certain de ce que vous faites.

La commande est:

git Push -f 
7
JuLy

Ce problème peut également se produire lorsque vous avez des balises en conflit. Si votre version locale et votre version distante utilisent le même nom de balise pour différentes commits, vous pouvez vous retrouver ici.

Vous pouvez le résoudre en supprimant la balise locale:

$ git tag --delete foo_tag
3
Zds

Quand j'ai eu cette erreur, j'ai sauvegardé tout mon dossier de projet. Puis j'ai fait quelque chose comme

$ git config branch.master.remote Origin
$ git config branch.master.merge refs/heads/master

... en fonction du nom de votre branche (si ce n'est pas le maître).

Puis j'ai fait git pull --rebase. Après cela, j'ai remplacé les fichiers extraits par les fichiers de mon projet sauvegardé. Maintenant je suis prêt à valider à nouveau mes modifications et à Push.

2
IgorGanapolsky