git分支标志--no merged and not--contains?
git分支标志--no merged and not--contains?,git,git-branch,Git,Git Branch,git branch--contains master返回可从其tipsmaster访问的分支的名称 git branch--merged master返回其提示可从master访问的分支的名称 git-branch——无合并主节点返回其提示无法从master访问的分支的名称 显示分支名称的标志是什么(可能在较新版本的git?),这些分支的尖端既不能从master访问,也不能在其祖先中访问master?换句话说,哪个标志给出了--不合并--不包含的效果 换句话说,如何显示不能快进合并到主节点或不
git branch--contains master
返回可从其tipsmaster
访问的分支的名称
git branch--merged master
返回其提示可从master
访问的分支的名称
git-branch——无合并主节点
返回其提示无法从master
访问的分支的名称
显示分支名称的标志是什么(可能在较新版本的git
?),这些分支的尖端既不能从master
访问,也不能在其祖先中访问master
?换句话说,哪个标志给出了--不合并--不包含的效果
换句话说,如何显示不能快进合并到主节点或不能从主节点快进合并到主节点的分支?更新2017年4月,如我在“”中所述,选项--no contains
不可用
原始答案
标志是什么(可能在较新版本的git中?)
首先,您提到的--(no-)合并
标志已被概括为ref filter
--不包含任何内容
快速搜索显示此选项不存在(在git回购的任何分支中:
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
”长期允许使用的命令系列
通过以下方式过滤参照:
- “
--包含X
”(仅显示
X
)的后代
- “
--合并的X
”(仅显示
X
)的祖先
- “
--无合并X
”(仅显示未合并的参考
X
)的祖先
其中添加了一个奇怪的遗漏,“--no contains X
”(仅显示不是X
后代的引用)
@TimBiegeleisen,不一定。尝试git checkout-b divergent_branch master~3
,然后进行提交,然后git log--online--graph master divergent_branch
master
本身只是一个指向提交的可移动指针;仅仅因为一个分支与master共享历史并不意味着该分支完全进入包含或包含在主机的历史记录中。@TimBiegeleisen也可以看到我说的一个分支“包含另一个分支”我的意思是可以从分支指针访问的历史DAG包括可以从另一个分支指针访问的完整历史DAG。谢谢,我不认为--no contains
是一个实际选项;我想它会以简单的方式传达我的意思。我不确定我是否完全理解ref filter
的意义。这是一个新的git
命令在2.7中?例如,git ref filter(something)
?@通配符否,ref filter指的是:“用于过滤一组ref的API。根据用户请求的ref类型,我们迭代这些ref,并根据给定的ref\u filter结构应用过滤器,最后将过滤后的ref存储在ref\u数组结构中。”.啊,好吧。我还没有开始学习C代码(还没有进入我的领域),所以我只知道大概的意思。如果我理解正确的话,这似乎只是一个已经更改的实现细节,git分支(--merged |--no merged |--contains)
在2.7中仍然可以正常工作?@Wildcard是的,如果git branch只在git 2.7+中提供这组选项,那么现在我很困惑。git 1.7.12.4在我上一篇评论中指定的三个选项中都可以正常工作。您指的是仅在2.7+中可用的哪些选项?