137 votes

Comment fusionner les modifications à distance sur GitHub?

J'obtiens l'erreur suivante, en essayant la première poussée de Github:

 [rejected] master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com: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?

108voto

Thilo Points 108673

Voir le "non-avance rapide" de la section de 'git push --helppour plus de détails.

Vous pouvez effectuer des "git pull", de résoudre les éventuels conflits, et "git push" le résultat. Un "git pull" va créer une fusion de commettre C s'engage entre A et B.

Alternativement, vous pouvez rebase votre changement entre X et B sur le dessus de l'Un, avec "git pull --rebase", et poussez à nouveau le résultat. Cela va créer un nouveau commit D qui crée le changement entre X et B sur le dessus de A.

88voto

SammyK Points 388

Vous pouvez également forcer une poussée en ajoutant le symbole + avant le nom de votre branche.

 git push origin +some_branch
 

20voto

Jorge Israel Peña Points 12602

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 pouvoir pousser. Désolé si j'ai mal compris votre question.

13voto

David Calhoun Points 693

Si vous "git pull" et qu'il dit "Déjà à jour", et que vous obtenez toujours cette erreur, cela peut être dû au fait que l'une de vos autres branches n'est pas à jour. Essayez de basculer vers une autre branche et assurez-vous qu’elle est également à jour avant d’essayer à nouveau de "git push":

Passer à la branche "foo" et le mettre à jour:

 $ git checkout foo
$ git pull
 

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

 $ git branch
 

7voto

JuLy Points 121

Vous pouvez le forcer à pousser, mais faites-le UNIQUEMENT lorsque vous êtes tout à fait sûr de ce que vous faites.

La commande est la suivante:

 git push -f 
 

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