Як користуватися git log
, як я можу фільтрувати за користувачем, щоб я бачив лише коміти від цього користувача?
Як користуватися git log
, як я можу фільтрувати за користувачем, щоб я бачив лише коміти від цього користувача?
Відповіді:
Це працює і для, git log
і gitk
- двох найпоширеніших способів перегляду історії.
Вам не потрібно використовувати все ім’я:
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 також є секретний спосіб ...
Ви можете відфільтрувати документи за автором у вікні фіксації, додавши парам ?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
Показуйте n кількість журналів для користувача 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
?