ÉDITER:
Ma réponse ci - dessous les documents un moyen de fusion master
dans aq
, où si vous affichez les détails de la fusion , il répertorie les modifications apportées aq
avant la fusion, pas les modifications apportées à master
. J'ai réalisé que ce n'est probablement pas ce que vous voulez, même si vous pensez que c'est le cas!
Juste:
git checkout aq
git merge master
c'est bien.
Oui, cette simple fusion montrera que les modifications de master
ont été apportées aq
à ce point, et non l'inverse; mais ça va - puisque c'est ce qui s'est passé! Plus tard, lorsque vous fusionnerez enfin votre branche dans master
, c'est quand une fusion affichera enfin toutes vos modifications telles qu'elles ont été apportées à master
(ce qui est exactement ce que vous voulez, et c'est le commit où les gens s'attendent à trouver ces informations de toute façon).
J'ai vérifié et l'approche ci-dessous montre également exactement les mêmes changements (tous les changements effectués aq
depuis la séparation d' origine entre aq
et master
) que l'approche normale ci-dessus, lorsque vous fusionnez enfin tout master
. Je pense donc que son seul véritable inconvénient (en plus d'être trop complexe et non standard ...: - /) est que si vous modifiez n modifications récentes avec git reset --hard HEAD~<n>
et cela passe au-delà de la fusion, la version ci-dessous annule la «mauvaise» branche, que vous devez réparer à la main (par exemple avec git reflog
& git reset --hard [sha]
).
[Donc, ce que je pensais auparavant était que:]
Il y a un problème avec:
git checkout aq
git merge master
car les modifications affichées dans la validation de fusion (par exemple, si vous regardez maintenant ou plus tard dans Github, Bitbucket ou votre visualiseur d'historique git local préféré) sont les modifications apportées sur master, ce qui peut ne pas être ce que vous voulez.
D'autre part
git checkout master
git merge aq
affiche les modifications apportées à aq, ce qui est probablement ce que vous voulez. (Ou, du moins, c'est souvent ce que je veux!) Mais la fusion montrant les bons changements est sur la mauvaise branche!
Comment faire face?!
Le processus complet, se terminant par un commit de fusion montrant les modifications apportées sur aq (comme pour la deuxième fusion ci-dessus), mais avec la fusion affectant la branche aq, est:
git checkout master
git merge aq
git checkout aq
git merge master
git checkout master
git reset --hard HEAD~1
git checkout aq
Ceci: fusionne aq sur master, avance rapidement cette même fusion sur aq, l'annule sur master et vous remet sur aq!
J'ai l'impression de manquer quelque chose - cela semble être quelque chose que vous voudriez évidemment, et quelque chose qui est difficile à faire.
De plus, le rebase n'est PAS équivalent. Il perd les horodatages et l'identité des commits effectués sur aq, ce qui n'est pas non plus ce que je veux.