git branch --contains master
会返回可以提供master
提示的分支的名称。
git branch --merged master
返回其提示可从master
到达的分支的名称。
git branch --no-merged master
返回无法从master
访问提示的分支的名称。
标志是什么(可能是git
的较新版本?),以显示其提示无法从master
到达的分支的名称,也无法在自己的master
中显示祖先?换句话说,什么标志产生--no-merged --no-contains
的效果?
换句话说,如何显示无法快速合并到主服务器的分支机构以及从主服务器快速合并到其中的分支机构?
答案 0 :(得分:3)
2017年4月更新,正如我在“How to list all git branches containing a commit”中提到的,选项--no-contain
为now supported with Git 2.13。
原始答案
标志是什么(可能是在较新版本的git中?)
首先,您提及的--(no-)merged
标记已被概括为ref-filter fairly recently (git 2.7, Sept. 2015)。
--no-contains
快速搜索显示此选项不存在(在git repo的任何分支中:
MINGW64 ~/git/git (master)
$ git branch -a | tr -d \*|grep -v origin|xargs git grep --break --heading --line-number 'no\-contain'
所以你需要编写脚本,列出--contains
未选择的所有分支(但列在--no-merged
中)。
“
git tag/branch/for-each-ref
”系列命令很长时间允许 过滤参考:
- “
--contains X
”(仅显示参考号X
)的后代,- “
--merged X
”(仅显示参考号X
)的祖先,- “
--no-merged X
”(仅显示不是的参考号X
)的祖先。一个奇怪的遗漏,“
--no-contains X
”(仅显示不是X
的后代的引用)已添加到它们中。