对于我们的buildbot,我想显示最近更新的活动(未发布)分支。假设我有一个master
分支,以及从最旧到最新提交的以下内容:
branch1
(未合并到master
)branch2
(合并)branch3
(未合并)我可以分别获得这些列表中的每一个......例如让所有分支都没有合并到master
:
$ git branch -r --no-merged origin/master
origin/branch1
origin/branch3
或者获得前十五个分支,按最近提交的顺序排列(通过https://coderwall.com/p/ndinba):
$ git for-each-ref --sort=-committerdate --format='%(committerdate:short) %(refname:short)' --count=15 refs/remotes/origin/
2013-03-22 origin/branch3
2013-03-22 origin/branch2
2013-03-22 origin/master
2013-03-22 origin/branch1
所以我基本上想要第二个列表,减去branch2
(有或没有master
)。希望有道理吗?
答案 0 :(得分:14)
你可以将两者结合起来,如下所示:
git for-each-ref --sort=-committerdate --format="%(committerdate:short) %(refname:short)" --count=15 $(git branch -r --no-merged origin/master | sed -e 's#^ *#refs/remotes/#')
这会将for-each-ref
限制为仅处理branch --no-merged
报告的分支...
编辑:实际测试后修复了git branch
输出的格式...
答案 1 :(得分:1)
难道你不能只看出branch2吗?
基本上是这样的:
for branch in `git branch -r --no-merged origin/master`; do git for-each-ref --sort=-committerdate --format='%(committerdate:short) %(refname:short)' --count=15 refs/remotes/origin/ | grep $branch; done;
鉴于您的样本输出,这对我有用。
答案 2 :(得分:0)
使用git 2.7(2015年第4季度),git for-each-ref
,将支持--no-merged
选项
git for-each-ref --no-merged master refs/heads/
使用doc:
--no-merged [<object>]:
仅列出其指针无法从指定提交到达的引用(如果未指定,则为HEAD)。
请参阅commit 4a71109,commit ee2bd06,commit f266c91,commit 9d306b5,commit 7c32834,commit 35257aa,commit 5afcb90,..., commit b2172fd(2015年7月7日)和commit af83baf(2015年7月9日)Karthik Nayak (KarthikNayak
)。
(Junio C Hamano -- gitster
--合并于commit 9958dd8,2015年10月5日)
来自&#34;
git tag -l
&#34;的一些功能和&#34;git branch -l
&#34;已经成了 可用于&#34;git for-each-ref
&#34;这样最终统一了 在后续工作中,可以在所有三个方面共享实施 一两个系列。
* kn/for-each-tag-branch:
for-each-ref: add '--contains' option
ref-filter: implement '--contains' option
parse-options.h: add macros for '--contains' option
parse-option: rename parse_opt_with_commit()
for-each-ref: add '--merged' and '--no-merged' options
ref-filter: implement '--merged' and '--no-merged' options
ref-filter: add parse_opt_merge_filter()
for-each-ref: add '--points-at' option
ref-filter: implement '--points-at' option