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

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

Ответы

Ответ 1

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

git log --author="Jon"

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

git log --author=Jon

и

git log --author=Smith

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

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

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

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

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

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

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

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/

Ответ 2

git log --author="that user"

Ответ 3

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

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

Ответ 4

git help log

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

git log --author="username"

как уже было предложено.

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

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

Ответ 5

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

Используйте это: -

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

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

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

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

Ответ 11

Покажите количество логов для пользователя 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

Ответ 12

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

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

git shortlog -nse

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

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

Ответ 13

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

git log --author="Developer1"

git log --author "Developer1"

Ответ 14

Мой случай: я использую дерево исходников, я выполнил следующие шаги:

  1. Нажатие CRL+3
  2. Изменены выпадающие авторы
  3. Набрал название "Винод Кумар"

enter image description here

Ответ 15

Хотя есть много полезных ответов. Принимая во внимание, просто чтобы добавить еще один способ. Вы также можете использовать

git shortlog --author="<author name>" --format="%h %s"

Он будет отображать вывод в сгруппированном виде:

<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

Здесь, всего 5 коммитов выполнено <Author Name> под текущей веткой. Принимая во внимание, что вы также можете использовать --all для принудительного поиска везде (во всех ветвях) в хранилище git.

Один улов: git внутренне пытается сопоставить вход <author name> с именем и адресом электронной почты автора в базе данных git. Это с учетом регистра.