web-dev-qa-db-fra.com

Comment puis-je afficher un journal git contenant uniquement les commits d'un utilisateur?

Lorsque vous utilisez git log, comment puis-je filtrer par utilisateur afin de ne voir que les validations de cet utilisateur?

1130
markdorison

Cela fonctionne à la fois pour git log et gitk - les 2 méthodes les plus courantes d'affichage de l'historique. Vous n'avez pas besoin d'utiliser le nom complet.

git log --author="Jon"

correspondra à un commit réalisé par "Jonathan Smith"

git log --author=Jon

et

git log --author=Smith

fonctionnerait aussi. Les guillemets sont facultatifs si vous n'avez pas besoin d'espaces.

Ajoutez --all si vous souhaitez effectuer une recherche dans toutes les branches et pas uniquement dans les ancêtres du commit actuel de votre référentiel.

Vous pouvez également facilement faire correspondre des auteurs différents, car regex est le mécanisme sous-jacent de ce filtre. Donc, pour lister les commits de Jonathan ou Adam, vous pouvez faire ceci:

git log --author="\(Adam\)\|\(Jon\)"

Pour exclure les commits d'un auteur particulier ou d'un groupe d'auteurs en utilisant des expressions régulières comme indiqué dans cette question , vous pouvez utiliser un lookahead négatif en combinaison avec le --Perl-regexp interrupteur:

git log --author='^(?!Adam|Jon).*$' --Perl-regexp

Vous pouvez également exclure les commits créés par Adam en utilisant bash et piping:

git log --format='%H %an' | 
  grep -v Adam | 
  cut -d ' ' -f1 | 
  xargs -n1 git log -1

Si vous souhaitez exclure les commits validés (mais pas nécessairement créés) par Adam, remplacez %an par %cn. Plus de détails à ce sujet sont dans mon billet de blog ici: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/

1537
Adam Dymitruk
git log --author="that user"
44
wilhelmtell

Sur github il y a aussi un moyen secret ...

Vous pouvez filtrer les commits par auteur dans la vue de validation en ajoutant le paramètre ?author=github_handle. Par exemple, le lien https://github.com/dynjs/dynjs/commits/master?author=jingweno affiche une liste des commits vers le projet Dynjs.

41
slott
git help log

vous donne la page de manuel de git log. Recherchez "auteur" à cet endroit en appuyant sur/puis en tapant "auteur", suivi de Entrée. Tapez "n" plusieurs fois pour accéder à la section correspondante, qui révèle:

git log --author="username"

comme déjà suggéré.

Notez que ceci vous donnera l'auteur des commits, mais dans Git, l'auteur peut être différent du commetteur (par exemple, dans le noyau Linux, si vous soumettez un correctif en tant qu'utilisateur ordinaire, il peut être commis par un autre utilisateur administratif. .) Voir Différence entre auteur et auteur dans Git? pour plus de détails)

La plupart du temps, ce que l’on appelle l’utilisateur est à la fois le commetteur et l’auteur.

30
ustun

Pour tirer plus de détails - (Ici %an fait référence à l'auteur)

Utilisez ceci :-

git log --author="username" --pretty=format:"%h - %an, %ar : %s"
19
Sireesh Yarlagadda
cat | git log --author="authorName" > author_commits_details.txt

Cela donne à vos commits au format texte.

15
Johnsa Philip

Si vous voulez filtrer vos propres commits:

git log --author="<$(git config user.email)>"
11
Luca Faggianelli

Vous pouvez même abréger un peu cela en utilisant simplement une partie du nom d'utilisateur:

git log --author=mr  #if you're looking for mrfoobar's commits
11
three

essayez cet outil https://github.com/kamranahmedse/git-standup

Usage

```bash
$ git standup [-a <author name>] 
              [-w <weekstart-weekend>] 
              [-m <max-dir-depth>]
              [-f]
              [-L]
              [-d <days-ago>]
              [-D <date-format>] 
              [-g] 
              [-h]
```

Ci-dessous la description de chacun des drapeaux

- `-a`      - Specify author to restrict search to (name or email)
- `-w`      - Specify weekday range to limit search to (e.g. `git standup -w Sun-THU`)
- `-m`      - Specify the depth of recursive directory search
- `-L`      - Toggle inclusion of symbolic links in recursive directory search
- `-d`      - Specify the number of days back to include
- `-D`      - Specify the date format for "git log" (default: relative)
- `-h`      - Display the help screen
- `-g`      - Show if commit is GPG signed or not
- `-f`      - Fetch the latest commits beforehand
7
InsaneBot

Affichez n nombre de journaux pour x utilisateur en couleur en ajoutant ce petit extrait de code dans votre fichier .bashrc.

gitlog() {
    if [ "$1" ] && [ "$2" ]; then
       git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order -n "$1" --author="$2"
    Elif [ "$1" ]; then
       git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order -n "$1"
    else
        git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order
    fi
}

alias l=gitlog

Pour afficher les 10 derniers commits de Frank:

l 10 frank

Pour afficher les 20 derniers commits de quiconque:

l 20

4
Frank Forte

Puisque l'autre question était (peut-être à tort si?) Verrouillée, je vais simplement mettre ceci ici:

affiche les auteurs avec leur nombre de commit:

git shortlog -nse

recherche de tous les commits pour un nom d'utilisateur spécifique:

git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show
4
sjas

Si vous utilisez GitHub:

  • aller à la branche
  • cliquez sur commits

il montrera la liste dans le format ci-dessous

branch_x: < comment> 
author_name committed 2 days ago
  • pour voir les auteurs individuels engagés; cliquez sur author_name et vous pourrez voir tous les commit de cet auteur sur cette branche.
3
diEcho

Vous pouvez utiliser soit = ​​ou "espace". Par exemple, deux commandes suivantes retournent la même chose

git log --author="Developer1"

git log --author "Developer1"
1
harshainfo

Mon cas: J'utilise l'arbre source, j'ai suivi les étapes suivantes:

  1. Appuyez sur CRL+3
  2. Auteurs de liste déroulante modifiés
  3. Taper le nom "Vinod Kumar"

enter image description here

0
Vinod Kumar

Bien qu'il existe de nombreuses réponses utiles. Alors, juste pour ajouter un autre moyen. Vous pouvez aussi utiliser

git shortlog --author="<author name>" --format="%h %s"

Il affichera la sortie de la manière groupée:

<Author Name> (5):
  4da3975f dependencies upgraded
  49172445 runtime dependencies resolved
  bff3e127 user-service, kratos, and guava dependencies upgraded
  414b6f1e dropwizard :- service, rmq and db-sharding depedencies upgraded
  a96af8d3 older dependecies removed

Ici, 5 validations au total sont effectuées par <Author Name> sous la branche actuelle. Tandis que vous pouvez également utiliser --all pour imposer la recherche partout (toutes les branches) dans le référentiel git.

ne capture: git tente en interne de faire correspondre une entrée <author name> avec le nom et l'adresse électronique de l'auteur dans la base de données git. Il est sensible à la casse .

0
psyco