한 사용자의 커밋에 대한 자식 로그를 어떻게 볼 수 있습니까?


답변:


1713

이것은 역사를 보는 가장 일반적인 두 가지 방법 git log과 두 가지 모두 gitk에 적용됩니다.
전체 이름을 사용할 필요는 없습니다.

git log --author="Jon"

"Jonathan Smith"의 커밋과 일치합니다.

git log --author=Jon

git log --author=Smith

작동합니다. 공백이 필요없는 경우 따옴표는 선택 사항입니다.

--all리포지토리에서 현재 커밋의 조상뿐만 아니라 모든 브랜치를 검색하려는 경우 추가하십시오 .

정규식이이 필터의 기본 메커니즘이므로 여러 작성자에서 쉽게 일치시킬 수도 있습니다. 따라서 Jonathan 또는 Adam의 커밋을 나열하려면 다음을 수행하십시오.

git log --author="\(Adam\)\|\(Jon\)"

이 질문에 언급 대로 정규 표현식을 사용하여 특정 작성자 또는 작성자 세트의 커밋을 제외 하려면 스위치 와 함께 부정적인 예측 을 사용할 수 있습니다 --perl-regexp.

git log --author='^(?!Adam|Jon).*$' --perl-regexp

또는 다음을 사용 bash하여 파이핑 하여 Adam이 작성한 커밋을 제외 할 수 있습니다 .

git log --format='%H %an' | 
  grep -v Adam | 
  cut -d ' ' -f1 | 
  xargs -n1 git log -1

Adam이 커밋 한 커밋을 제외하고 싶을 때는 반드시 작성하지 않아도 %an됩니다 %cn. 이에 대한 자세한 내용은 내 블로그 게시물 ( http://dymitruk.com/blog/2012/07/18/filtering-by-author-name/)에 있습니다.


9
반대의 방법이 있습니까? 말-나는 Jon의 것을 제외한 모든 커밋을보고 싶습니다.
Ian Robinson

4
@Ian git help log "Jon"은 정규 표현식이므로 매우 쉬워야합니다
sumek

2
자식 로그 --format = % an | egrep -v 'Jon *'| xargs -n 1 git log -1
Adam Dymitruk 2018 년

4
gitk다른 저자의 부모 커밋을 제거 할 수있는 방법이 있습니까? (그들은 흰색 원으로 표시됩니다.) 대조적으로, git log --graph부모 커밋을 보여주지 않습니다. 주어진 저자의 커밋 만 보여줍니다. 에서 동일한 출력을보고 싶습니다 gitk. (이미 기본 설정 및보기 편집을 확인
했지만

2
조심이 대소 문자를 구분
Chiel 열 Brinke


44

github에는 비밀 방법이 있습니다 ...

param을 추가하여 커밋보기에서 작성자별로 커밋을 필터링 할 수 있습니다 ?author=github_handle. 예를 들어 링크 https://github.com/dynjs/dynjs/commits/master?author=jingweno 는 Dynjs 프로젝트에 대한 커밋 목록을 보여줍니다.


1
여러 지점을 볼 수있는 방법이 있습니까? 커밋 / 모두 같은 것?
19:54에

이것을 어떻게 찾았습니까? 어떤 다른 플래그가 지원됩니까?
Woodrow Barlow

1
pro.mean의 답변은 인터페이스를 통해이 작업을 수행하는 방법 : stackoverflow.com/a/39123694/1225617
Adam Millerchip

질문은 소프트웨어와 관련이 있고 특정 서비스와 관련이 없기 때문에이 답변을 선호하지 않습니다.
Valerio Bozz

질문이었다 단지 에 관계없이 기술 - 망할 놈의 로그를 확인하는 방법에 대해 설명합니다. 따라서이 답변은 청구서에 적합합니다.
슬로

31
git help log

git log의 맨 페이지를 제공합니다. /를 누르고 "author"를 입력 한 다음 Enter 키를 눌러 "author"를 검색하십시오. 관련 섹션으로 이동하려면 "n"을 몇 번 입력하십시오.

git log --author="username"

이미 제안한대로.

이것은 커밋의 저자를 제공하지만 Git에서 저자는 커미터와 다른 사람이 될 수 있습니다 (예 : Linux 커널의 경우 일반 사용자로 패치를 제출하면 다른 관리 사용자가 커밋 할 수 있음) .) Git의 저자와 커미터의 차이점을 참조하십시오. 자세한 사항은)

대부분의 경우, 사용자라고하는 것은 커미터와 저자입니다.


21
@ 제임스 나는 당신의 부정이 부당한 것이라고 생각합니다. 나는 단순히 잊어 버릴 경우를 대비하여 명령 행에서 찾아 보는 방법을 가르치려고했다. RTFM을 말하는 사람에게 당신이 나를 착각하고 있다고 생각하지만 답변에 답변을 포함 시켰습니다.
ustun

11
부정적이지 않습니다. 사람들이 조언을 구하기 위해 여기에 와서 많은 사람들이 RTFM의 변형으로 응답하기를 원한다는 사실입니다. 지역 사회에 좋지 않은 몸매.
제임스

11
@ 제임스 여기에 ustun에 동의해야합니다. 그는 질문에 대답, 그리고 그는 다른 자식 관련 질문에 대한 답변을 찾는 데 도움이 답을 찾기위한 전략을 제안했다.
Peter

4
나는 이것만큼 흑백이라고 생각하지 않습니다. 이제 저는 사람들이 스스로 일을하는 방법을 교육해야한다는 불행에 동의합니다. 좋은 생각입니다. 불운이 약간 잘못 된 곳은 가정 a) OP가 매뉴얼 페이지를 검색하는 방법을 알고 있고, 더 중요한 것은 b) OP가 '저자'를 검색하는 것으로 알고 있다는 가정입니다. '커미터'또는 '이름'또는 무언가를 검색했을 수 있습니다.
존 헌트

6
@ JohnHunt 당신 말이 맞아, 검색이 의미하는 것과 그 시간에 어떻게 수행되는지 설명하는 것이 결코 나에게 없었습니다. 가정의 종류. 텍스트를 약간 수정했습니다.
ustun

23

자세한 내용을 보려면-(여기 %an 에서 저자를 나타냅니다)

이것을 사용하십시오 :-

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

그리고 당신이 그들의 이메일 주소를 원한다면 (이름을 부여한) %ae대신에 형식을 사용하십시오%an
MarkHu

--author실제로는 커미터 이름이 아닌 작성자 이름으로 검색합니다. "username"저자로 변경
Algorithmatic

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

이것은 커밋을 텍스트 형식으로 제공합니다.


20
의 목적은 무엇입니까 cat |?
Keith Thompson

1
@KeithThompson 마우스를 쫓습니다.
nvd

14

자신의 커밋을 필터링하려면 다음을 수행하십시오.

git log --author="<$(git config user.email)>"

1
따옴표와 괄호 없이도 작동합니다 (적어도 git bash 및 ubuntu bash에서).
Lavamantis

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

.bashrc 파일에이 작은 스 니펫을 추가하여 x 사용자에 대한 n 개의 로그 수를 컬러로 표시하십시오.

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

Frank의 마지막 10 개의 커밋을 표시하려면 :

l 10 frank

모든 사람이 지난 20 개의 커밋을 표시하려면 :

l 20


4

GitHub를 사용하는 경우 :

  • 지점으로 이동
  • 커밋을 클릭하십시오

아래 형식으로 목록을 표시합니다

branch_x: < comment> 
author_name committed 2 days ago
  • 개별 저자의 커밋을 보는 것; author_name을 클릭 하면 해당 브랜치에서 해당 저자의 커밋을 모두 볼 수 있습니다

2
그것은 많은 클릭이며 호스팅 된 git repo를 가정합니다. 위와 같이 CLI에 응답하지 않습니다.
lacostenycoder

1
@lacostenycoder이지만 유용한 정보입니다. 특히 많은 git 프로젝트가 GitHub에 있습니다!
Adam Millerchip

2

= 또는 "space"를 사용할 수 있습니다. 예를 들어 다음 두 명령은 동일하게 반환됩니다.

git log --author="Developer1"

git log --author "Developer1"

1

내 경우 : 소스 트리를 사용하고 있으며 다음 단계를 수행했습니다.

  1. 눌림 CRL+3
  2. 드롭 다운 작성자 변경
  3. "Vinod Kumar"라는 이름을 입력했습니다

여기에 이미지 설명을 입력하십시오


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

여기서 <Author Name>현재 분기 에서 총 5 개의 커밋이 수행됩니다 . 반면, git 저장소의 모든--all 곳에서 모든 분기를 검색 하는 데 사용할 수도 있습니다 .

한 가지 캐치 : git은 내부적으로 입력 <author name>을 git 데이터베이스에있는 작성자의 이름 및 이메일과 일치 시키려고 합니다. 그것은는 대소 문자를 구분합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.