Як я можу переглянути журнал 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.