从 git 2.7 版本开始(2015年第四季度),git for-each-ref
命令将支持 --no-merged
选项。
git for-each-ref --no-merged master refs/heads/
使用文档:
--no-merged [<object>]:
仅列出参考文献,其提示不可从指定提交(如果未指定,则为HEAD)到达。
请参阅 提交 4a71109, 提交 ee2bd06, 提交 f266c91, 提交 9d306b5, 提交 7c32834, 提交 35257aa, 提交 5afcb90, ..., 提交 b2172fd (2015年7月7日),以及由Karthik Nayak (KarthikNayak
)于2015年7月9日提交的提交 af83baf。
(由Junio C Hamano -- gitster
--在提交 9958dd8中合并,2015年10月5日)
一些"
git tag -l
"和"
git branch -l
"的功能已经被添加到"
git for-each-ref
"中,以便最终可以在后续的一系列或两个过程中在所有三个功能中共享统一的实现。
* 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
在Git 2.29(2020年第四季度),列出引用的 "git for-each-ref
"(man) 和相关工具过去只允许使用一个--merged
或--no-merged
来筛选它们;现在它们学会了同时使用这两种类型的筛选。
请参见 commit b59cdff,commit a1b19aa(2020年9月18日),以及由Aaron Lipman (alipman88
)提交的commit 21bf933,commit 415af72,commit b775d81。
(由Junio C Hamano -- gitster
--在commit 26a3728中合并,2020年9月22日)
ref-filter
:允许使用 merged
和 no-merged
过滤器
签署者:Aaron Lipman
Enable ref-filter to process multiple merged
and no-merged
filters, and extend functionality to git branch
(man) , git tag git
(man) and for-each-ref
.
This provides an easy way to check for branches that are "graduation candidates:
$ git branch --no-merged master --merged next
If passed more than one merged (or more than one no-merged
) filter, refs must be reachable from any one of the merged commits, and reachable from none of the no-merged
commits.
filters
现在在其手册页面中包括:
当组合多个--merged
和--no-merged
过滤器时,只显示可从至少一个--merged
提交和没有任何--no-merged
提交到达的引用。
注意:同样的Git 2.29(2020年第四季度)添加了一个热修复。
查看 提交 5336d50(2020年9月26日),由René Scharfe(rscharfe
)进行。
(已合并Junio C Hamano -- gitster
--在提交03b0198中,2020年10月4日)
ref-filter
:修复reach_filter()
中的内存泄漏
签名作者:René Scharfe
21bf933928("ref-filter
: 允许合并和未合并的过滤器",2020年9月15日,Git v2.29.0 -- merge 在批次#16中列出)在reach_filter()
中添加了一个早期返回。
通过推迟数组的分配,避免泄漏未使用的数组的内存,直到我们知道我们需要它。
git for-each-ref --no-merged master refs/heads/
将成为可能!请参见我下面的答案。 - VonC