Comment puis-je afficher un journal git des commits d'un seul utilisateur?
en utilisant git log
, Comment puis-je filtrer par utilisateur pour ne voir que les propagations de cet utilisateur?
13 réponses
cela fonctionne à la fois pour git log
et gitk
- les 2 façons les plus courantes de voir l'histoire. Vous n'avez pas besoin d'utiliser le nom complet.
git log --author="Jon"
correspond à une livraison effectuée par un "Jonathan Smith,"
git log --author=Jon
et
git log --author=Smith
marcherait aussi. Les guillemets sont optionnels si vous n'avez pas besoin d'espaces.
ajouter --all
si vous avez l'intention de rechercher tous branches et pas seulement les ancêtres de l'actuel commit dans votre repo.
vous pouvez également facilement correspondre sur plusieurs auteurs que regex est le mécanisme sous-jacent pour ce filtre. Ainsi, pour lister les commits par Jonathan ou Adam, vous pouvez faire ceci:
git log --author="\(Adam\)\|\(Jon\)"
afin d'exclure les commits par un auteur particulier ou un ensemble d'auteurs en utilisant des expressions régulières comme noté dans cette question , vous pouvez utiliser un négatif lookahead en combinaison avec le commutateur --perl-regexp
:
git log --author='^(?!Adam|Jon).*$' --perl-regexp
alternativement, vous pouvez exclure commits authored by Adam en utilisant bash
et la tuyauterie:
git log --format='%H %an' |
grep -v Adam |
cut -d ' ' -f1 |
xargs -n1 git log -1
Si vous voulez exclure s'engage engage (mais pas nécessairement l'auteur) par Adam, remplacer %an
avec %cn
. Plus de détails à ce sujet sont dans mon blog post ici: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name /
Sur github, il est aussi un secret ...
vous pouvez filtrer les propagations par l'auteur dans la vue commit en ajoutant le param ?author=github_handle
. Par exemple, le lien https://github.com/dynjs/dynjs/commits/master?author=jingweno affiche une liste d'engagements au projet Dynjs
git help log
vous donne la page de manuel de git log. Rechercher " auteur "en appuyant sur / puis en tapant" auteur", puis entrer. Tapez " n "plusieurs fois pour obtenir la section pertinente, qui révèle:
git log --author="username"
comme déjà suggéré.
notez que cela vous donnera l'auteur des propagations, mais en Git, l'auteur peut être quelqu'un de différent du propagateur (par exemple dans le noyau Linux, si vous soumettez un correctif comme un utilisateur, il peut être engagé par un autre utilisateur administratif.) Voir la Différence entre l'auteur et le commiter dans Git? pour plus de détails)
la Plupart du temps, ce que l'on désigne comme l'utilisateur est à la fois le livreur et l'auteur.
pour tirer plus de détails - (ici %an
se réfère à l'auteur)
utilisez ceci: -
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
cat | git log --author="authorName" > author_commits_details.txt
donne vos propagations en format texte.
vous pouvez même l'abréger un peu en utilisant simplement une partie du nom d'utilisateur:
git log --author=mr #if you're looking for mrfoobar's commits
si vous voulez filtrer votre propre commits:
git log --author="<$(git config user.email)>"
essayez cet outil https://github.com/kamranahmedse/git-standup
Utilisation
```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 est la description pour 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
puisque l'autre question était (peut-être à tort? fermée à clef, je viens de mettre cela ici:
montrent les auteurs avec leurs engagements:
git shortlog -nse
trouver toutes les propagations pour un nom D'utilisateur spécifique:
git log --author=USERNAME --oneline | awk '{print }' | xargs git show
si vous utilisez GitHub:
- passer à la succursale "151940920 cliquez sur" s'engage
il va afficher la liste ci-dessous format
branch_x: < comment>
author_name committed 2 days ago
- pour voir le commit de chaque auteur; cliquez sur nom d'auteur et là vous pouvez voir tous les commits de cet auteur sur cette branche
afficher n nombre de logs pour l'utilisateur x en couleur en ajoutant ce petit extrait dans votre .dossier bashrc.
gitlog() {
if [ "" ] && [ "" ]; then
git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order -n "" --author=""
elif [ "" ]; then
git log --pretty=format:"%h%x09 %C(cyan)%an%x09 %Creset%ad%x09 %Cgreen%s" --date-order -n ""
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 s'engage par Frank:
l 10 frank
pour montrer les 20 derniers commits par n'importe qui:
l 20
Vous pouvez utiliser soit = ou "espace". Par exemple, si vous suivez deux commandes, retournez le même
git log --author="Developer1"
git log --author "Developer1"