누가 지점을 만들 었는지 알고 싶습니다.
나는 그렇게 할 수있다 :
git branch -a | xargs -L 1 bash -c 'echo "$1 `git log --pretty=format:"%H %an" $1^..$1`"' _
그러나 이것은 분기를 만든 사람 일 필요는 없으며 분기당 마지막 커미터를 반환합니다.
누가 지점을 만들 었는지 알고 싶습니다.
나는 그렇게 할 수있다 :
git branch -a | xargs -L 1 bash -c 'echo "$1 `git log --pretty=format:"%H %an" $1^..$1`"' _
그러나 이것은 분기를 만든 사람 일 필요는 없으며 분기당 마지막 커미터를 반환합니다.
답변:
브랜치는 커밋 포인터 일뿐입니다. 따라서 "나를 만든 사람"과 같은 메타 데이터는 추적하지 않습니다. 직접 참조하십시오. cat .git/refs/heads/<branch>
리포지토리에서 사용해보십시오 .
실제로 저장소에서이 정보를 추적하려면 지사 설명을 확인하십시오 . 최소한 로컬로 분기에 임의의 메타 데이터를 첨부 할 수 있습니다.
또한 아래 DarVar의 답변 은이 정보를 얻는 매우 영리한 방법입니다.
커미터 날짜별로 정렬 된 원격 Git 브랜치를 작성자별로 나열하십시오.
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' --sort=committerdate
git for-each-ref --format='%(committerdate)%09%(authorname)%09%(refname)' | sort -k5n -k2M -k3n -k4n | grep remotes | awk -F "\t" '{ printf "%-32s %-27s %s\n", $1, $2, $3 }'
( stackoverflow.com/a/3631819 에서 아이디어를 얻었습니다 -최대 날짜 시간 / 작성자 이름 길이에 따라 awk printf에서 숫자를 조정해야 할 수도 있습니다)
--sort
플래그 를 사용하여 이전 답변을 조정하고 색상 / 서식을 추가했습니다.
git for-each-ref --format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p) %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:strip=3)' --sort=authordate refs/remotes
git for-each-ref --format='%(authorname) %09 -%(refname)' | sort
DarVar의 답변에 추가 :
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | awk '{print $7 $8}'
추신 : 우리는 저자와 원격 지점을 인쇄하기 위해 AWK를 사용했습니다.
로컬 리포지토리 에서 분기를 만든 사람을 찾을 수 있습니다.
git reflog --format=full
출력 예 :
commit e1dd940
Reflog: HEAD@{0} (a <a@none>)
Reflog message: checkout: moving from master to b2
Author: b <b.none>
Commit: b <b.none>
(...)
그러나 이것은 일반적으로 로컬 저장소에서만 분기를 작성하는 것처럼 쓸모가 없습니다.
정보는 ./.git/logs/refs/heads/ branch에 저장됩니다 . 내용 예 :
0000000000000000000000000000000000000000 e1dd9409c4ba60c28ad9e7e8a4b4c5ed783ba69b a <a@none> 1438788420 +0200 branch: Created from HEAD
이 예에서 마지막 커밋은 "b"사용자의 것이었고 "b2"분기는 "a"사용자가 만들었습니다. 사용자 이름을 변경하면 git reflog가 로그에서 정보를 가져오고 로컬 사용자를 사용하지 않는지 확인할 수 있습니다.
로컬 로그 정보를 중앙 저장소로 전송할 가능성에 대해 모르겠습니다.
가정 :
master
master
아직 병합 되지 않았습니다 git log --format="%ae %an" master..<HERE_COMES_THE_BRANCH_NAME> | tail -1
나는 이것이 전적으로 질문의 범위가 아니라는 것을 알고 있지만 특정 작성자 만 커밋을 필터링 해야하는 경우 언제든지 grep으로 파이프 할 수 있습니다 :)
# lists all commits in chronological order that
# belong to the github account with
# username `MY_GITHUB_USERNAME` (obviously you
# would want to replace that with your github username,
# or the username you are trying to filter by)
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -committerdate | grep 'MY_GITHUB_USERNAME'
행복한 코딩! :)
DESC를 찾는 사람들을 위해 ...이 작동하는 것 같습니다 --sort=-
형식화를 위해 타이, 이것에 새로운 ... 내 눈은 그것의 일부를 잃어 버렸다
git for-each-ref --format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p) %(align:25,left)%(color:yellow)%(authorname)%(end) %(color:reset)%(refname:strip=3)' --sort=-authordate refs/remotes