Afficher le journal git sans commits de fusion

88

J'essaie de voir les commits effectués par un utilisateur spécifique et je souhaite supprimer toutes les fusions effectuées par l'utilisateur de la sortie. Comment puis-je faire cela?

Je peux vérifier les commits d'un utilisateur utilisant git log --author=<name>, mais je ne peux pas supprimer les commits de fusion dans la sortie.

PS: les conflits de fusion ne se produisent pas dans le flux de travail du repo en question, toutes les branches sont rebasées avant de fusionner dans master, il est donc sûr de supprimer les validations de fusion de la sortie, et de même, deux branches de fonctionnalités ne sont pas fusionnées l'une avec l'autre. la possibilité.

mu 無
la source
2
Et si la fusion avait un conflit et qu'il devait le résoudre?
Joe Phillips
2
@JoePhilllips Cela ne se produit pas dans le workflow du dépôt en question, toutes les branches sont rebasées avant de fusionner dans master.
mu 無
6
utilisationgit log --no-merges
0xAX
1
@ 0xAX Pouvez-vous poster cela comme réponse, je l'accepterai.
mu 無

Réponses:

133

utilisation

git log --author=<name> --no-merges

De plus, l' --first-parentoption peut donner un résultat utile pour vous:

--first-parent Ne suit que le premier commit parent en voyant un commit de fusion. Cette option peut donner une meilleure vue d'ensemble lors de la visualisation de l'évolution d'une branche de sujet particulière, car les fusions dans une branche de sujet ont tendance à ne concerner que l'ajustement à la mise à jour en amont de temps en temps, et cette option vous permet d'ignorer les commits individuels apportés à votre histoire par une telle fusion. Ne peut pas être combiné avec --bisect.

0xAX
la source
encore mieux avec --pretty=format:"%h%x09%an%x09%ad%x09%s"
k1eran
1
@ k1eran, cela tronque le corps du commit (en supposant qu'il y en ait un)
Erythros
1
@Erythros a compris, et je trouve utile d'obtenir un résumé concis et lisible des commits.
k1eran
Ou y compris les couleurs et le graphiquelog --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --first-parent
Highmastdon
18

Vous pouvez omettre les fusions avec --no-merges:

git log --no-merges --author=<name>

Consultez la page de manuel de git log pour plus de détails.

morxa
la source
2
Cela exclut uniquement les validations de fusion. Mais les commits normaux à l'intérieur de cette branche amont sont toujours visibles.
Shiplu Mokaddim le