103 votes

Git : Comment lister les commits de cette branche mais pas ceux des branches fusionnées ?

Supposons que votre historique de commit git ressemble à ceci :

A---B---C---D---E---F master
     \         /
      X---Y---Z topic

Est-il possible de faire en sorte que git ne liste que les commits sur master, A-F ? En d'autres termes, si le commit est sur une branche fusionnée, je ne veux pas qu'il soit affiché.

143voto

CharlesB Points 27070

git log a l'option --first-parent donc vous n'aurez pas topic l'histoire.

Lorsqu'il est fusionné avec master le master Les commits sont les premiers parents dans la fusion. Le journal de Git permet d'afficher uniquement les commits avec --first-parent, de sorte que vous obteniez les bons éléments.

22voto

UpAndAdam Points 1573

TLDR : git log origin/master --no-merges vous donnera un journal de master et exclura les commits fusionnés ( dans ce cas x, y, z )

Points originaux

Il y a une autre façon générale de procéder qui ne repose pas sur --first-parent ce qui sera utile dans certaines situations en utilisant les filtres d'exclusion de branches

git log origin/topic ^origin/master Vous obtiendrez ainsi un journal de origin/topic avec tous les origin/master enlevé.

vous pourriez également ajouter --no-merges qui cachera les commits de fusion que vous pouvez ou ne pouvez pas vouloir.

Une autre astuce pratique consiste à utiliser shortlog au lieu de log qui vous donnera plus un résumé abrégé qui peut être pratique pour les notes de version, 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 posté ; 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 (cacher toutes les modifications qui font partie des fusions) en utilisant la méthode suivante git log origin/master --no-merges

0voto

KushalSeth Points 828

La réponse de Charles fonctionne pour moi.

git log has option --first-parent --no-merges, so you won't get topic history.

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 choisir toutes les commandes de cette branche particulière à partir de l'outil, si nécessaire.

J'ai joint l'exemple de deux outils, il serait similaire pour d'autres outils aussi : [J'ai effacé le nom d'utilisateur, le nom du dépôt git car il s'agit d'un dépôt privé, mais vous pouvez quand même avoir une idée de la façon d'utiliser le premier parent des outils].

  1. Extension Git
    • Ouvrez l'extension Git -> Vérifiez la branche de fonctionnalité dont vous voulez voir les commits, il y a une option pour sélectionner les premiers commits comme indiqué dans l'image :

enter image description here

  1. Tortue Git
    • Ouvrez le dossier du référentiel -> Cliquez sur Show logs from Tortoise Git -> Vérifiez la branche et sélectionnez les premiers commits comme indiqué dans l'image.

enter image description here

-4voto

Stefan Kendall Points 28274

Est-ce que ça ne marche pas ?

git log master
git log --stat master

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