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, AF? En d'autres termes, si le commit était sur une branche fusionnée, je ne veux pas qu'il s'affiche.
D
etZ
faisait partie de la branche fusionnée?git log
permet d'afficher uniquement ces commits avec--first-parent
, donc vous obtenez le bon trucRéponses:
git log
a l'option--first-parent
, donc vous n'obtiendrez pas d'topic
histoire.Lorsqu'ils sont fusionnés
master
, lesmaster
commits sont les premiers parents de la fusion. Git log permet d'afficher uniquement ces commits avec --first-parent, donc vous obtenez les bons éléments.la source
--first-parent
does it :) combiné avec--no-merges
vous pouvez masquer les commits de fusionTLDR :
git log origin/master --no-merges
vous donnera un journal de master et exclura tous les commits fusionnés (dans ce cas x, y, z)Points d'origine
Il existe une autre façon générale de procéder qui ne dépend pas et
--first-parent
qui sera utile dans certaines situations. En utilisant les filtres d'exclusion de branchegit log origin/topic ^origin/master
Cela vous donnera un journal deorigin/topic
tousorigin/master
les commits supprimés.vous pouvez également ajouter
--no-merges
qui cachera les commits de fusion que vous voudrez ou non.Un autre conseil pratique est d'utiliser à la
shortlog
place delog
ce 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 se trouve dans une branche.Mise à jour
Après avoir relu ceci, vous voudriez en fait presque l'inverse de ce que j'ai publié; cependant, 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 qui font partie des fusions) avecgit log origin/master --no-merges
la source
Answer by Charles travaille pour moi.
Mais si vous utilisez une interface utilisateur graphique pour vos activités Git comme, Git Extension, SourceTree, Tortoise Git,
Ensuite, il existe des options directes pour vérifier le premier parent dans vos outils. J'ai pensé ajouter cette réponse à la liste car la plupart des gens trouvent l'interface graphique facile. et Vous pouvez directement sélectionner tous les commits de cette branche particulière de l'outil, si nécessaire.
J'ai joint l'exemple de deux outils, ce serait similaire pour d'autres outils également: [J'ai estompé le nom d'utilisateur, le nom du repo git car il s'agit d'un dépôt privé, mais vous pouvez toujours avoir une idée de la façon d'utiliser le premier parent à partir des outils ]
la source
Cela ne marche pas?
la source