99 votes

Contribuer à un projet sur github, comment "rebase mon pull request sur le dessus du maître"

Ok, donc j'ai un à contribuer à un projet sur github. Le projet sur github est - upstream, ma fourche repo github est - origin, et mon local repo sur mon ordinateur.

git checkout -b feature
# Working on feature
git commit -a -m 'only commit on feature'

puis-je soumettre une demande d'extraction

git push origin master

La pull request est examinée et sans rapport avec le changement doit être fait. Quelqu'un d'autre fait un commit et les fusionner en upstream/master

Maintenant, je suis invité par l' upstream responsable de "rebase mon pull request sur le dessus du maître"

C'est mon histoire (insérez la Loi et l'Ordre d'effets sonores).....

Je n'ai pas apporter de modifications à la demande de pull et c'est toujours la même commit sur la branche de fonctionnalité.

git checkout master
git fetch upstream
git checkout feature
git rebase master
=> "Current branch feature is up to date."
git push origin feature
=> "Everything up-to-date"

Je ne comprends pas. Comment est-ce possible quand je sais que quelqu'un a commis et fusionné pour upstream/master après j'ai poussé mon pull request à origin/feature?

Quelqu'un peut-il me dire quelle est la procédure correcte devrait être dans cette situation?

113voto

Ryan Stewart Points 46960

Vous montrez seulement une extraction sur l'amont des pensions. Qui n'a pas fait de mise à jour de l'un de vos branches locales. Il ne met à jour vos connaissances en upstream. Vous aurez besoin afin de garantir upstream/master est totalement intégré dans votre master, comme avec un git pull, avant le changement d'année de base sur master, ou plus simplement de rebase sur upstream/master.

I. e:

git checkout master
git pull upstream master
git checkout feature
git rebase master

ou

git checkout feature
git rebase upstream/master

Mise à jour:

Après la fixation de votre local feature direction générale, vous aurez besoin de le pousser à revenir à l' origin pour terminer la mise à jour de la demande d'extraction. Depuis que vous avez poussé feature une fois déjà, vous ne pouvez pas simplement push nouveau parce que d'une rebase changements de l'histoire, et il n'est pas long une avance rapide. Normalement, quand une poussée échoue avec un "non-fast forward", vous auriez à le résoudre en faisant un pull, mais un pull il vous suffit de combiner les deux histoires divergentes, qui n'est certainement pas ce que vous voulez. Que signifie votre ancien (pré rebase) feature de la branche serait combiné avec le nouveau post (rebase). Vous voulez écraser origin/feature de l'état de la nouvelle - feature de la branche, le dumping, toute trace de l'ancien. Cela signifie que vous aurez envie à force de le pousser à se produire, même si c'est pas un fast-forward, à l'aide de git push -f origin feature. Remarque: la force de poussée est dangereux, et vous pouvez perdre s'engage avec elle. À n'utiliser que si vous êtes absolument sûr que vous savez ce que vous faites, comme ici, où vous souhaitez volontairement à abandonner la vieille, inutile, s'engage dans la pré-rebase feature de la branche.

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