2012-01-23 3 views
0

J'ai cette structure:Comment pourrait-on choisir un autre chemin de fusion?

B - C - D <- feature 
/  \ 
A-----------E <- master 
^ mytag 

B, C et D commits sont chemin de branche de fonction. A est une base commune. Cette fonctionnalité est fusionnée dans le maître en tant que validation E. J'ai marqué (automatiquement) commit A.

Je voudrais automatiquement sans intervention de l'utilisateur (à partir du script), peu importe combien de commits sont là dans la branche de caractéristique pour cerise choisir "mytag" à "maître" comme A, E (dans ce cas) dans une autre branche.

si je fais:

git checkout other  
git cherry-pick mytag..master 

il choisira A, B, C, D et E engage. Je voudrais qu'il prenne seulement des commits de la branche principale, c'est-à-dire A et E. Note: Je ne veux pas fusionner dans E de la manière opposée. Je le veux dans le master. Et A à E n'est pas sûr que cela se ramifie du tout. Il pourrait être A --- E. Juste j'ai besoin de quelque chose comme ".." opérateur, mais pour utiliser d'autres branches.

Merci pour l'aide à l'avance!

En outre: La troisième branche est que je devrais écrémer, devrait ressembler à ça après:

F - G - H - A - E <- other 

à savoir A et E sera choisi cerise dans la branche « autres ».

+0

Pas très clair quel est l'objectif. Pouvez-vous fournir un diagramme de l'apparence du DAG après l'opération? –

+0

Cela devrait ressembler à: F - G - H - A - E <- autre c.-à-d. A et E seront sélectionnés dans une autre branche. –

+0

Si vous mettez à jour votre réponse avec cela, nous pouvons voir votre belle ASCII Art mieux :) –

Répondre

0

Voici la réponse:

call git cherry-pick -m 1 --first-parent mytag..master 
if %errorlevel% == 128 then call git cherry-pick --first-parent mytag..master 

--first-parent est l'option non documentée de écrémer le. Je l'ai vu dans la commande log et il travaille pour l'ancien, aussi. Il fait exactement ce dont j'ai besoin. Pour traverser le premier parent, pas un branch'es comme c'est par défaut.

git log --first-parent mytag..master 

est de retour seulement A et E Validations. -m 1 Cette option est utilisée uniquement pour les validations de fusion et échoue pour les validations non fusionnées et vice versa. Donc j'essaye avec et si ça échoue - sans.

Questions connexes