Lorsque vous utilisez git log
, comment puis-je filtrer par utilisateur afin de ne voir que les validations de cet utilisateur?
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/
git log --author="that user"
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.
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.
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"
cat | git log --author="authorName" > author_commits_details.txt
Cela donne à vos commits au format texte.
Si vous voulez filtrer vos propres commits:
git log --author="<$(git config user.email)>"
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
essayez cet outil https://github.com/kamranahmedse/git-standup
```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
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
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
Si vous utilisez GitHub:
il montrera la liste dans le format ci-dessous
branch_x: < comment>
author_name committed 2 days ago
Vous pouvez utiliser soit = ou "espace". Par exemple, deux commandes suivantes retournent la même chose
git log --author="Developer1"
git log --author "Developer1"
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 .