git branch flag for --no-merged而不是--contains?

时间:2016-03-16 10:16:15

标签: git git-branch

git branch --contains master会返回可以提供master提示的分支的名称。

git branch --merged master返回其提示可从master到达的分支的名称。

git branch --no-merged master返回无法从master访问提示的分支的名称。

标志是什么(可能是git的较新版本?),以显示其提示无法从master到达的分支的名称,也无法在自己的master中显示祖先?换句话说,什么标志产生--no-merged --no-contains的效果?

换句话说,如何显示无法快速合并到主服务器的分支机构以及从主服务器快速合并到其中的分支机构?

1 个答案:

答案 0 :(得分:3)

2017年4月更新,正如我在“How to list all git branches containing a commit”中提到的,选项--no-containnow 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的后代的引用)已添加到它们中。