2010-10-28 3 views
3

Problèmeune branche fusion sur une mise à jour non maître

J'ai fusionné une branche dans un maître non mis à jour à la fin commettre.

Ce que je fais

J'ai fusionné une branche dans le maître

git merged BRANCHNAME 

conflits

Automatic merge failed; fix conflicts and then commit the result. 

git commit -a -m "Resolved conflicts while merging email-fix branch" 

Alors j'ai essayé de pousser tous à l'origine maître, mais il dit:

! [rejected]  master -> master (non-fast-forward) 

Comment puis-je résoudre ce problème?

Répondre

1

Vous pouvez faire:

  • un git pull --rebase, afin de rejouer votre fusion au-dessus d'une branche principale mise à jour
  • alors un git push (qui devrait aller en douceur)

L'autre alternative serait de forcer la poussée, ce qui signifierait perdre l'historique récent sur le maître distant: ce n'est pas une très bonne idée.

Les deux alternatives sont présentées dans le Git FAQ, bien que seulement un simple git pull soit préconisé.
Le git push man page mentionne le git pull --rebase:

Par exemple, supposons que vous et quelqu'un d'autre a commencé en même commettras X, et vous avez construit une histoire qui conduit à commettre B tandis que l'autre personne a construit une histoire qui conduit à commettre A. L'histoire ressemble à ceci:

 B 
    /
---X---A 

Vous pouvez rebasage votre changement entre X et B au-dessus de A, avec « git pull --rebase », et repousser le résultat. La rebase va créer un nouveau commit D qui construit le changement entre X et B au-dessus de A.

 B D 
    //
---X---A 

Encore une fois, la mise à jour A avec ce engagement sera rapide vers l'avant et votre pression seront acceptés.

+0

Nous vous remercions de votre réponse. J'ai résolu le problème;) – zetareticoli

Questions connexes