При использовании git log
, как я могу фильтровать по пользователю, чтобы я видел только коммиты от этого пользователя?
При использовании git log
, как я могу фильтровать по пользователю, чтобы я видел только коммиты от этого пользователя?
Ответы:
Это работает для обоих 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/
gitk
, чтобы родительские коммиты были пропущены другими авторами? (Они показаны белыми кружками.) Напротив, git log --graph
не показывает родительские коммиты; он показывает только коммиты данного автора. Я хотел бы увидеть тот же результат в gitk
. (Уже проверил Настройки и Изменить вид - не смог найти ничего полезного.)
git log --author="that user"
На github есть и секретный путь ...
Вы можете отфильтровать коммиты по автору в представлении коммитов, добавив param ?author=github_handle
. Например, ссылка https://github.com/dynjs/dynjs/commits/master?author=jingweno показывает список изменений в проекте Dynjs.
git help log
дает вам справочную страницу журнала git. Найдите «автора» там, нажав /, а затем напечатав «автор», а затем Enter. Введите «n» несколько раз, чтобы перейти к соответствующему разделу, который показывает:
git log --author="username"
как уже предлагалось.
Обратите внимание, что это даст вам автора коммитов, но в Git автором может быть кто-то, отличный от коммиттера (например, в ядре Linux, если вы отправляете патч как обычный пользователь, он может быть зафиксирован другим администратором .) Видите разницу между автором и коммиттером в Git? Больше подробностей)
Большую часть времени пользователь и коммиттер, и автор называют пользователя.
Чтобы получить более подробную информацию - (здесь %an
относится к автору)
Использовать этот :-
git log --author="username" --pretty=format:"%h - %an, %ar : %s"
%ae
вместо их адреса электронной почты использовался формат %an
(который дал имя.)
--author
на самом деле поиск по имени автора, а не имени коммиттера. Я бы поменял "username"
на автора
cat | git log --author="authorName" > author_commits_details.txt
Это дает ваши коммиты в текстовом формате.
cat |
?
Если вы хотите отфильтровать свои коммиты:
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
Покажите количество логов для пользователя 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
Если вы используете GitHub:
это покажет список в формате ниже
branch_x: < comment>
author_name committed 2 days ago
Вы можете использовать либо =, либо "пробел". Например, следующие две команды возвращают одинаковые
git log --author="Developer1"
git log --author "Developer1"
Мой случай: я использую дерево исходников, я выполнил следующие шаги:
CRL+3
Хотя есть много полезных ответов. Принимая во внимание, просто чтобы добавить еще один способ. Вы также можете использовать
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. Это чувствительно к регистру .
github
?