Lors de l'utilisation git log
, comment puis-je filtrer par utilisateur afin de ne voir que les validations de cet utilisateur?
Lors de l'utilisation git log
, comment puis-je filtrer par utilisateur afin de ne voir que les validations de cet utilisateur?
Réponses:
Cela fonctionne pour les deux git log
et gitk
- les 2 façons les plus courantes de visualiser l'historique.
Vous n'avez pas besoin d'utiliser le nom complet:
git log --author="Jon"
correspondra à un commit de "Jonathan Smith"
git log --author=Jon
et
git log --author=Smith
fonctionnerait également. Les guillemets sont facultatifs si vous n'avez besoin d'aucun espace.
Ajoutez --all
si vous avez l'intention de rechercher toutes les branches et pas seulement les ancêtres du commit actuel dans votre référentiel.
Vous pouvez également facilement faire correspondre plusieurs auteurs, car l'expression régulière 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\)"
Afin d'exclure les validations d'un auteur ou d'un ensemble d'auteurs particulier à l'aide d'expressions régulières comme indiqué dans cette question , vous pouvez utiliser une anticipation négative en combinaison avec le --perl-regexp
commutateur:
git log --author='^(?!Adam|Jon).*$' --perl-regexp
Vous pouvez également exclure les validations créées par Adam en utilisant bash
et en canalisant:
git log --format='%H %an' |
grep -v Adam |
cut -d ' ' -f1 |
xargs -n1 git log -1
Si vous souhaitez exclure les validations validées (mais pas nécessairement créées) par Adam, remplacez %an
par %cn
. Plus de détails à ce sujet sont dans mon article de blog ici: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/
gitk
abstraction des engagements des parents d'autres auteurs? (Ils sont représentés avec des cercles blancs.) En revanche, git log --graph
ne montre pas les validations des parents; il montre seulement les commits de l'auteur donné. J'aimerais voir la même sortie en gitk
. (Préférences et vue d'édition déjà vérifiées - rien trouvé d'utile.)
git log --author="that user"
Sur github il y a aussi une voie secrète ...
Vous pouvez filtrer les validations par auteur dans la vue de validation en ajoutant param ?author=github_handle
. Par exemple, le lien https://github.com/dynjs/dynjs/commits/master?author=jingweno affiche une liste des validations du 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», puis sur Entrée. Tapez "n" plusieurs fois pour accéder à la section appropriée, qui révèle:
git log --author="username"
comme déjà suggéré.
Notez que cela vous donnera l'auteur des commits, mais dans Git, l'auteur peut être quelqu'un de différent du committer (par exemple dans le noyau Linux, si vous soumettez un patch en tant qu'utilisateur ordinaire, il peut être validé par un autre utilisateur administratif .) Voir Différence entre auteur et committer dans Git? pour plus de détails)
La plupart du temps, ce que l'on appelle l'utilisateur est à la fois l'auteur et l'auteur.
Pour tirer plus de détails - (ici se %an
réfère à l'auteur)
Utilisez ceci :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
%ae
au lieu de %an
(qui a donné le nom.)
--author
recherche en fait par le nom de l'auteur et non par le nom du committer. Je changerais "username"
d'auteur
cat | git log --author="authorName" > author_commits_details.txt
Cela donne vos commits au format texte.
cat |
?
Si vous souhaitez filtrer vos propres validations:
git log --author="<$(git config user.email)>"
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]
```
Voici 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
Étant donné que l'autre question a été (peut-être à tort?) Verrouillée, je vais simplement la mettre ici:
montrer aux auteurs leur nombre de validations:
git shortlog -nse
trouver tous les commits pour USERNAME spécifique:
git log --author=USERNAME --oneline | awk '{print $1}' | xargs git show
Affichez un nombre n de journaux pour x utilisateur en couleur en ajoutant ce petit extrait 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 n'importe qui:
l 20
Si vous utilisez GitHub:
il affichera la liste dans le format ci-dessous
branch_x: < comment>
author_name committed 2 days ago
Vous pouvez utiliser soit = soit "espace". Par exemple, le fait de suivre deux commandes renvoie le même
git log --author="Developer1"
git log --author "Developer1"
Mon cas: j'utilise l'arbre source, j'ai suivi les étapes suivantes:
CRL+3
Cependant, il existe de nombreuses réponses utiles. Alors, juste pour y ajouter une autre façon. 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 commits au total sont effectués par <Author Name>
la branche actuelle. Considérant que, vous pouvez également utiliser --all
pour appliquer la recherche partout (toutes les branches) dans le référentiel git.
Un hic: git essaie en interne de faire correspondre une entrée <author name>
avec le nom et l'e-mail de l'auteur dans la base de données git. Il est sensible à la casse .
github
?