找出git分支的创build者
我想找出谁创build了一个分支。
我可以这样做:
git branch -a | xargs -L 1 bash -c 'echo "$1 `git log --pretty=format:"%H %an" $1^..$1`"' _
但是,这将返回每个分支的最后一个提交者,而不一定是创build分支的人员。
一个分支只不过是一个提交指针。 因此,它不会跟踪“谁创造了我”这样的元数据。 你自己看。 试试你的仓库中的cat .git/refs/heads/<branch>
。
这写,如果你真的在你的仓库中跟踪这些信息,请查看分支描述。 它们允许您至less在本地附加任意元数据到分支。
DarVar的回答下面是一个非常聪明的方式来获取这些信息。
列出远程Git分支按作者sortingcommitterdate:
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n
添加到https://stackoverflow.com/a/19135644/2917986
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | awk '{print $7 $8}'
PS我们用awk来打印作者和远程分支
git for-each-ref --format='%(authorname) %09 -%(refname)' | sort
我通过使用–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
你可以通过find谁在你的本地仓库中创build了一个分支
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> (...)
但是,这通常是无用的,通常只在您的本地存储库上创build分支。
信息存储在./.git/logs/refs/heads/ 分支 。 示例内容:
0000000000000000000000000000000000000000 e1dd9409c4ba60c28ad9e7e8a4b4c5ed783ba69b a <a@none> 1438788420 +0200 branch: Created from HEAD
这个例子中的最后一个提交来自用户“b”,而分支“b2”来自用户“a”。 如果您更改您的用户名,您可以validationgit reflog从日志中获取信息,并且不使用本地用户。
我不知道是否有可能将本地日志信息传输到中央存储库。
据我所知,你可能会看到你是否只是一个分支的创造者。 这是由.git / ref / heads / <branch>中的第一行指示的。 如果以“创build自HEAD”结尾,则是创build者。
假设:
- 分支是由
master
- 还没有合并到
master
呢
git log --format="%ae %an" master..<HERE_COMES_BRANCH_NAME> | tail -1
注意:这可能是您的部分答案
对我们来说,这是一个完整的答案。
我们需要删除所有分支机构及其所有者,因为我们只有10人,但现在有200多个分支机构。 这些可以从以下方面看出:
https://my-github-domain-name.com/my-git-organization-name/my-git-repo-name/ branches / active
我用下面的命令,在git local repo目录下:
git branch --list -a > branch-list.txt
然后,所有分支都列在branch-list.txt文件中。
由于我们在git分支名称前加上了我们的名字,所以我们已经完成了。