Как просмотреть журнал git только для одного пользователя?

при использовании git log, Как я могу фильтровать по пользователю, чтобы я видел только коммиты от этого пользователя?

13 ответов


это работает для обоих git log и gitk - 2 наиболее распространенных способа просмотра истории. Вам не нужно использовать полное имя.

git log --author="Jon"

будет соответствовать фиксации, сделанной "Джонатан Смит"

git log --author=Jon

и

git log --author=Smith

также будет работать. Кавычки необязательны, если вам не нужны пробелы.

добавить --all если вы намерены искать все ветви, а не только предков текущего фиксации в вашем РЕПО.

вы также можете легко соответствовать нескольким авторам, поскольку регулярное выражение является базовым механизмом для этого фильтра. Итак, чтобы перечислить коммиты Джонатана или Адама, вы можете сделать следующее:

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

чтобы исключить коммиты конкретного автора или набора авторов, использующих регулярные выражения, как отмечено в этом вопросе, вы можете использовать отрицательный lookahead в сочетании с --perl-regexp переключатель:

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

в качестве альтернативы, вы можете исключить коммиты, созданные Adam, используя bash и трубопроводов:

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

если вы хотите исключить коммиты, совершенные (но не обязательно созданные) Адамом, замените %an С %cn. Более подробно об этом в моем блоге здесь: http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/


git log --author="that user"

на github также есть секрет путь...

вы можете фильтровать коммиты по автору в представлении фиксации, добавляя param ?author=github_handle. Например, ссылка https://github.com/dynjs/dynjs/commits/master?author=jingweno показывает список коммитов к проекту Dynjs


git help log

дает вам manpage журнала git. Поиск "автор" там, нажав/, а затем введя "автор", а затем введите. Введите " n " несколько раз, чтобы добраться до соответствующего раздела, который показывает:

git log --author="username"

Как уже предлагалось.

обратите внимание, что это даст вам автора коммитов, но в Git автором может быть кто-то другой, чем коммиттер (например, в ядре Linux, если вы отправляете патч как обычный пользователь, он может быть зафиксирован другой административный пользователь.) См.разница между автором и коммиттером в Git? для более подробной информации)

большую часть времени то, что называют пользователем, является как коммиттером, так и автором.


чтобы вытащить больше деталей - (здесь %an относится к автору)

использовать это :-

git log --author="username" --pretty=format:"%h - %an, %ar : %s"

cat | git log --author="authorName" > author_commits_details.txt

это дает ваши коммиты в текстовом формате.


вы даже можете сократить это немного, просто используя часть имени пользователя:

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

Если вы хотите отфильтровать свои собственные коммиты:

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

попробовать этот инструмент 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]
```

Ниже приведено описание для каждого из флагов

- `-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

поскольку другой вопрос был (возможно, ошибочно?) locked, я просто поставлю это здесь:

показать авторов с их фиксацией графы:

git shortlog -nse

найти все коммиты для конкретного имени пользователя:

git log --author=USERNAME --oneline | awk '{print }' | xargs git show

при использовании GitHub:

  • перейти к ветви
  • нажмите на commits

он покажет список в формате ниже

branch_x: < comment> 
author_name committed 2 days ago
  • чтобы увидеть фиксацию отдельного автора; нажмите на имя_автора и там вы можете увидеть все фиксации этого автора на этой ветке

показать n количество журналов для пользователя x в цвете, добавив этот маленький фрагмент в свой .файл 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

чтобы показать последние 10 коммитов Фрэнка:

l 10 frank

чтобы показать последние 20 коммитов кем-либо:

l 20


вы можете использовать либо=, либо"пробел". Например, следующие две команды возвращают одно и то же

git log --author="Developer1"

git log --author "Developer1"