Как я могу просмотреть журнал 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
Мой случай: я использую дерево исходников, я выполнил следующие шаги:
- Нажатие
CRL+3
- Изменены выпадающие авторы
- Набрал название "Винод Кумар"
Ответ 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. Это с учетом регистра.