197 votes

Différentes s’engage entre les deux branches

J'ai deux branches devel et next. Dans devel j'ai plus ou moins énorme quantité de commits. Certains s'engage sont la cerise cueillies next. Aussi, j'ai ajouté quelques engage pour la suivante, ce qui sont regroupées à l' devel.

Maintenant, je voudrais voir ce qui est manquant dans next, afin que je puisse tester les modifications en détail avant de l'amener next. Ma question est maintenant, comment puis-je voir les commits sont en devel mais pas dans le prochain?

227voto

Mark Longair Points 93104

Peu utilisé la commande git cherry vous montre les changements qui n'ont pas encore été cerise cueillies. La documentation pour l' git cherry est ici, mais, en bref, vous devez juste être capable de faire:

git checkout devel
git cherry next

... et voir le résultat un peu comme ceci:

+ 492508acab7b454eee8b805f8ba906056eede0ff
- 5ceb5a9077ddb9e78b1e8f24bfc70e674c627949
+ b4459544c000f4d51d1ec23f279d9cdb19c1d32b
+ b6ce3b78e938644a293b2dd2a15b2fecb1b54cd9

Les commits qu'avec des + seront ceux que vous n'avez pas encore de cerises cueillies en next. Dans ce cas, je n'avais cerise cueillies à un commit jusqu'à présent. Vous pouvez ajouter l' -v paramètre à l' git cherry de commande, de sorte qu'il génère également la ligne d'objet de chaque commit.

Mise à jour: j'ai reçu les branches à l'envers dans ma première version de l'exemple - j'ai résolu maintenant.

118voto

sehe Points 123151

Aussi, vous pouvez utiliser

git log --left-right --graph --cherry-pick --oneline devel...next

pour obtenir une belle liste de réels différents s'engage à ne pas partagée entre les branches.

Le mot est - --cherry-pick

--cherry-pick

Omettre tout s'engager à ce que présente le changement comme une autre de s'engager sur l ' "autre côté" lorsque l'ensemble de commits sont limitées symétrique différence. Par exemple, si vous avez deux branches A et B, d'une manière habituelle à la liste de tous les commits sur un seul côté d'eux est-à gauche-à droite, comme dans l'exemple ci-dessus dans la description de cette option. Il montre, cependant, les commits qui ont été la cerise cueillies de l'autre branche (par exemple, "de la 3ème b" peut être la cerise cueillies à partir de la direction générale). Avec cette option, de telles paires de commits sont exclues de la sortie.

Mise à jour Comme indiqué dans un commentaire, les dernières versions de git ajouté --cherry-mark:

--cherry-mark

--Cherry-pick (voir ci-dessous), mais la marque équivalent s'engage avec = plutôt que d'omettre, et inequivalent avec +.

55voto

Bryan Buckley Points 383

Vous pourriez pourrait essayer de faire des sous-ensembles de journal git :

32voto

justingordon Points 1646

Qu’en est-il

Résultat est similaire à la réponse de Byran (ordre différent de validations) mais tous les deux nos réponses produira des commits qui sont différentes entre les branches, plutôt simplement montrer ce qui est dans une branche et non dans l’autre.

1voto

Mihai Points 46

Pour obtenir la liste des commits qui n’étaient pas intégrées dans la branche de sortie (prochain), vous pouvez utiliser :

Vérifiez git rev-liste pour plus d’informations.

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