Comment exécuter git log pour voir les modifications uniquement pour une branche spécifique?

396

J'ai une branche locale qui suit la branche distante / principale. Après avoir exécuté git-pullet git-log, le journal affichera toutes les validations dans la branche de suivi à distance ainsi que la branche actuelle. Cependant, comme il y a eu tellement de modifications apportées à la branche distante, j'ai besoin de voir uniquement les validations apportées à la branche locale actuelle.

Quelle serait la commande Git à utiliser pour afficher uniquement les validations pour une branche spécifique?

Remarques:

Informations de configuration:

[branch "my-branch"]
  remote = origin
  merge = refs/heads/master
Autoroute de la vie
la source

Réponses:

527

En supposant que votre branche a été créée à partir de master, puis dans la branche (c'est-à-dire que vous avez extrait la branche):

git cherry -v master

ou

git log master..

Si vous n'êtes pas dans la branche, vous pouvez ajouter le nom de la branche à la commande "git log", comme ceci:

git log master..branchname

Si votre succursale a été créée à partir de origin/master, dites origin/masterplutôt à la place de master.

Wayne Conrad
la source
100
Parfait! git log --no-merges master..était exactement ce dont j'avais besoin.
Highway of Life
3
@HighwayofLife: il --no-mergespeut apparaître qu'il ne montre que les validations d'une branche spécifique, mais il ne montre vraiment que les
validations
5
Que diriez-vous d'un moyen de faire cela qui ne nécessite pas que je tape / connaisse la branche parent? :)
ELLIOTTCABLE
1
Pour avoir une idée du taux de changement, j'ai utilisé l'incantation suivante :) qui produit un format de journal d'une ligne avec le nom de l'auteur affiché en premier, suivi de l'âge relatif du commit:git log --no-merges --pretty='%C(yellow)%h%d %Creset%an %Cgreen%ar:%Creset %s' --graph master..
Noah Sussman
2
ne devrait pas lire? git log master .. <votre branche> --oneline --no-merges
Alex Nolasco
104

Utilisation:

git log --graph --abbrev-commit --decorate  --first-parent <branch_name>

C'est seulement pour la branche cible (bien sûr --graph, --abbrev-commit --decorate sont plus polis).

L'option clé est --first-parent: "Suivre uniquement le premier commit parent en voyant un commit de fusion" ( https://git-scm.com/docs/git-log )

Il empêche l'affichage des fourches de validation.

yerlilbilgin
la source
25
--first-parent <branch_name>est l'option. travaux !
parasrish
3
Où est le nom de la branche, la branche dont je veux seulement voir l'histoire? Sur une branche avec seulement 3 changements, cela m'en montre des centaines.
Ed Randall
1
--first-parent <branch_name>aussi travaillé pour moi! Je me suis retrouvé avec un alias pour git log --first-parent $current_branch_name --no-merges. En réponse à @EdRandall, il affichera les commits sur la branche + ceux d'où il a été ramifié. Par exemple:
rachel
2
Oups, je l'ai soumis à bientôt, voici l'exemple: vous avez validé A et B sur master. Vous vous branchez new_featuredu maître. Vous y ajoutez les commits C et D. Ensuite, vous ajoutez E et F au maître. Vous fusionnez ensuite le maître avec new_feature. En utilisant git logsur new_feature, vous verrez "fusionner le maître", F, E, D, C, A, B. En utilisant git log --first-parent new_feature --no-merges, vous verrez D, C, A, B.
rachel
24

Si vous souhaitez uniquement les validations effectuées par vous dans une branche particulière, utilisez la commande ci-dessous.

git log branch_name --author='Dyaniyal'
Dyaniyal Wilson
la source
13

Le problème que j'avais, qui je pense est similaire à cela, est que le maître était trop en avance sur mon point de branchement pour que l'histoire soit utile. (La navigation vers le point de branchement prendrait trop de temps.)

Après quelques essais et erreurs, cela m'a donné à peu près ce que je voulais:

git log --graph --decorate --oneline --all ^master^!
GPHemsley
la source
0

il suffit de courir git log origin/$BRANCH_NAME

Mahdi Pedram
la source