Як я можу переглянути журнал git лише один користувач?


1256

Як користуватися git log, як я можу фільтрувати за користувачем, щоб я бачив лише коміти від цього користувача?


4
Чи є спосіб побачити одне і те ж саме безпосередньо github?
Vadorequest

1
Для цього на github: stackoverflow.com/a/23515164/26510
Brad Parks

Відповіді:


1713

Це працює і для, 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/


9
Чи є спосіб зробити протилежне? Скажіть - я хочу побачити всі комітети, крім Джона.
Іван Робінсон

4
@Ian щодо журналу довідки про git "Jon" - це регулярний вираз, тому це має бути досить легко
sumek

2
git log --format =% an | egrep -v 'Jon *' | xargs -n 1 git log -1
Адам Дімітрук

4
Будь-який спосіб gitkпозбавити батьківські зобов'язання від інших авторів? (Вони показані білими колами.) На відміну від цього, git log --graphне відображаються батьківські зобов'язання; він лише показує дані авторські зобов'язання. Я хотів би бачити той самий результат у gitk. (Вже зареєстровані Налаштування та Редагування перегляду - не вдалося знайти нічого корисного.)
ADTC

2
Остерігайтеся це відчутно до регістру
Chiel десять Brinke


44

На Github також є секретний спосіб ...

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


1
будь-який спосіб бачити через гілки? щось на кшталт твори / все?
засвистували

Як ви це виявили? Які інші прапори підтримуються?
Вудро Барлоу

1
Відповідь pro.mean, як зробити це з допомогою інтерфейсу: stackoverflow.com/a/39123694/1225617
Адам Millerchip

Я не віддаю перевагу цій відповіді, оскільки питання стосувалося програмного забезпечення та не стосувалося конкретної послуги.
Валеріо Бозз

Питання полягало лише в тому, як переглянути журнал git - незалежно від технології. Тож ця відповідь добре відповідає законопроекту.
слот

31
git help log

надає вам сторінку журналу git. Шукайте там "автора", натискаючи /, а потім набираючи "автора", після чого клавішу Enter. Наберіть "n" кілька разів, щоб перейти до відповідного розділу, де видно:

git log --author="username"

як уже було запропоновано.

Зауважте, що це дасть вам автор зобов’язань, але в Git, автор може бути хтось інший від виконавця (наприклад, в ядрі Linux, якщо ви подаєте патч як звичайний користувач, він може бути скоєний іншим адміністративним користувачем .) Дивіться різницю між автором та виконавцем у Git? для детальної інформації)

Здебільшого те, що називається користувачем, є і виконавцем, і автором.


21
@James Я думаю, що ваш негатив тут не є обґрунтованим. Я просто намагався навчити його шукати це з командного рядка, якщо він забуде. Я думаю, ти мене сприймаєш за людину, яка просто каже RTFM, але я включила відповідь у свою відповідь.
ustun

11
Це не негатив. Справа в тому, що люди приходять сюди з проханням поради, і багато людей хочуть відповісти яким-небудь варіантом RTFM. Кодекси погані для громади.
Джеймс

11
@James Я повинен погодитися з ustun тут. Він зробив відповісти на цей питання, і він запропонував стратегію знайти відповідь , який є корисним для пошуку відповідей на інші питання , пов'язані з GIT.
Петро

4
Я не думаю, що це зовсім так чорно-біле. Тепер я погоджуюся з неприйнятим, що ми повинні навчити людей робити те, що робити для себе - це гарна ідея. Там, де роздягнення пішло трохи не так, робиться припущення a) Про те, що ОП знає, як шукати довідкову сторінку, і що ще важливіше b) що ОП знає шукати "автора". Вони, можливо, шукали "фіксатор" чи "ім'я" чи щось таке.
Джон Хант

6
@JohnHunt Ви праві, мені ніколи не спадало на думку пояснювати, що означає пошук та як це робиться на той час. Різновид припущеного. Злегка зафіксуйте текст.
ustun

23

Щоб отримати більше деталей - (Тут %anйдеться про автора)

Використовуй це :-

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

І якщо ви хочете, щоб їх адреса електронної пошти використовувала формат %aeзамість %an(який дав ім'я.)
MarkHu

--authorнасправді здійснює пошук за іменем автора, а не ім'ям виконавця. Я змінив "username"би автора
Алгоритмічний

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

Це дає ваші зобов’язання у текстовому форматі.


20
Яка мета роботи cat |?
Кіт Томпсон

1
@KeithThompson Для переслідування миші.
nvd


12

Ви можете навіть трохи скоротити це, просто скориставшись частиною імені користувача:

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

11

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

6

Оскільки інше питання було (можливо, помилково?) Заблоковано, я просто викладу це:

показати авторів з їх кількістю:

git shortlog -nse

знайти всі комісії для конкретного USERNAME:

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

5

Показуйте 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


4

Якщо ви використовуєте GitHub:

  • перейти до відділення
  • натисніть на коміти

він відобразить список у форматі нижче

branch_x: < comment> 
author_name committed 2 days ago
  • бачити окремі авторські вчинки; натисніть на ім'я автора і там ви зможете побачити всі фіксації цього автора на цій гілці

2
Це дуже багато кліків і передбачає розміщене git repo. Не відповідає CLI, як було зроблено вище.
лакостенікодер

1
@lacostenycoder, але це корисна інформація, тим більше, що так багато git проектів є на GitHub!
Адам Міллерчіп

2

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

git log --author="Developer1"

git log --author "Developer1"

1

Мій випадок: я використовую вихідне дерево, я дотримувався наступних кроків:

  1. Притиснуті CRL+3
  2. Змінено авторів, що випадають
  3. Набрав назву "Вінод Кумар"

введіть тут опис зображення


1

Хоча, є багато корисних відповідей. Тоді як, щоб додати ще один спосіб. Ви також можете використовувати

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. Це залежно від регістру .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.