Supposons que votre historique de validation git ressemble à ceci:
A---B---C---D---E---F master
\ /
X---Y---Z topic
Est-il possible d'avoir git list uniquement les commits sur master, A-F? En d'autres termes, si le commit était sur une branche fusionnée, je ne veux pas qu'il s'affiche.
git log
a l'option --first-parent
, vous n'aurez donc pas d'historique topic
.
Lorsqu'ils sont fusionnés à partir de master
, les commits master
sont les premiers parents à fusionner. Le journal Git permet d'afficher uniquement les validations avec --first-parent, afin que vous obteniez les bons éléments.
Il existe une autre manière générale de procéder, qui ne repose pas sur --first-parent
, Qui sera utile dans certaines situations .. en utilisant les filtres d'exclusion de branche
git log Origin/topic ^Origin/master
Cela vous donnera un journal de Origin/topic
Avec tous les commits de Origin/master
Supprimés.
vous pouvez également ajouter --no-merges
qui masquera les validations de fusion que vous souhaiterez ou non.
Une autre astuce est d'utiliser shortlog
au lieu de log
qui vous donnera plus d'un résumé abrégé qui peut être pratique pour les notes de publication ou la communication de ce qui est dans une branche.
Mise à jour
Après avoir relu ceci, vous voudriez en fait presque l'inverse de ce que j'ai publié; mais cela finirait par exclure tout ce qui est sur master et foo (git log Origin/master ^Origin/foo
). Cependant, vous pouvez également obtenir ce que vous demandez (masquer tous les commits faisant partie des fusions) avec git log Origin/master --no-merges