를 사용할 때 git log
해당 사용자의 커밋 만 볼 수 있도록 사용자별로 필터링하려면 어떻게해야합니까?
를 사용할 때 git log
해당 사용자의 커밋 만 볼 수 있도록 사용자별로 필터링하려면 어떻게해야합니까?
답변:
이것은 역사를 보는 가장 일반적인 두 가지 방법 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/)에 있습니다.
gitk
다른 저자의 부모 커밋을 제거 할 수있는 방법이 있습니까? (그들은 흰색 원으로 표시됩니다.) 대조적으로, git log --graph
부모 커밋을 보여주지 않습니다. 주어진 저자의 커밋 만 보여줍니다. 에서 동일한 출력을보고 싶습니다 gitk
. (이미 기본 설정 및보기 편집을 확인
github에는 비밀 방법이 있습니다 ...
param을 추가하여 커밋보기에서 작성자별로 커밋을 필터링 할 수 있습니다 ?author=github_handle
. 예를 들어 링크 https://github.com/dynjs/dynjs/commits/master?author=jingweno 는 Dynjs 프로젝트에 대한 커밋 목록을 보여줍니다.
git help log
git log의 맨 페이지를 제공합니다. /를 누르고 "author"를 입력 한 다음 Enter 키를 눌러 "author"를 검색하십시오. 관련 섹션으로 이동하려면 "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
.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
GitHub를 사용하는 경우 :
아래 형식으로 목록을 표시합니다
branch_x: < comment>
author_name committed 2 days ago
= 또는 "space"를 사용할 수 있습니다. 예를 들어 다음 두 명령은 동일하게 반환됩니다.
git log --author="Developer1"
git log --author "Developer1"
그러나 유용한 답변이 많이 있습니다. 반면에 다른 방법을 추가하십시오. 당신은 또한 사용할 수 있습니다
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 데이터베이스에있는 작성자의 이름 및 이메일과 일치 시키려고 합니다. 그것은는 대소 문자를 구분합니다 .
github
있습니까?