我想知道是谁创建了一个分支。
我可以用以下方式部分地完成:
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`"' _
然而,这将返回每个分支的最后一名提交者,而不一定是创建该分支的人。
按提交者日期排序列出作者的远程 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 }'
(灵感来自于 https://dev59.com/y3A65IYBdhLWcg3wyh17#3631819 - 可能需要根据最大日期时间/作者名长度调整awk printf中的数字) - Gary S. Weavergit merge-base $BRANCH $BRANCHED
作为父提交的提交。其中 $BRANCH
是该分支,$BRANCHED
是从哪个分支派生的分支。 - CervEd我使用--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
在DarVar的回答中补充:
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | awk '{print $7 $8}'
附注:我们使用 AWK 来美化作者和远程分支的显示。
%(committerdate)
,你就不需要其他的东西了。作为奖励,你不必处理多个单词的作者名称: git for-each-ref --format='%(authorname) %09 %(refname)'
- TerDalegit for-each-ref --format='%(authorname) %09 -%(refname)' | sort
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
我们可以根据作者名进行查找
git for-each-ref --format='%(authorname) %09 %(if)%(HEAD)%(then)*%(else)%(refname:short)%(end) %09 %(creatordate)' refs/remotes/ --sort=authorname DESC
git for-each-ref --format='%(authorname),%(creatordate:short),%(if)%(HEAD)%(then)*%(else)%(refname:short)%(end)' refs/remotes/ --sort=creatordate DESC > ../<filename>.csv
这对我很有帮助... - Parag Bangad假设:
master
分支创建的master
分支 git log --format="%ae %an" master..<HERE_COMES_THE_BRANCH_NAME> | tail -1
警告!
请注意这些命令显示分支指向的提交数据,因此提交作者可能与分支作者不同。 Git 不存储分支创建者,只存储提交者。
# 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'
愉快编程! :)