it-roy-ru.com

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

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

1096
markdorison

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

git log --author="Jon"

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

git log --author=Jon

а также

git log --author=Smith

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

Добавьте --all, если вы собираетесь искать все ветви, а не только предков текущего коммита в вашем репо.

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

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

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

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

Кроме того, вы можете исключить коммиты, созданные Адамом, используя 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/

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

На github есть также секретный способ ...

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

40
slott
git help log

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

git log --author="username"

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

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

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

28
ustun

Чтобы получить более подробную информацию - (здесь %an относится к автору)

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

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

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

15
Johnsa Philip

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

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

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

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

попробуйте этот инструмент 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
7
InsaneBot

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

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

l 10 frank

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

l 20

4
Frank Forte

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

показать авторов с их количеством коммитов:

git shortlog -nse

найти все коммиты для конкретного ИМЯ ПОЛЬЗОВАТЕЛЯ:

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

Если вы используете GitHub:

  • перейти в филиал
  • нажмите на коммиты

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

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

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

git log --author="Developer1"

git log --author "Developer1"
1
harshainfo