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

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.


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.


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'

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^!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.