【问题标题】:git branch flag for --no-merged and not --contains?--no-merged 而不是 --contains 的 git 分支标志?
【发布时间】:2016-03-16 10:16:15
【问题描述】:

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

git branch --merged master 返回可以从master 访问其提示的分支的名称。

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

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

换句话说,如何显示既不能快进合并到master,又不能从master快进合并到它们的分支?

【问题讨论】:

  • @TimBiegeleisen,完全没有必要。尝试git checkout -b divergent_branch master~3,然后提交,然后git log --online --graph master divergent_branchmaster 本身只是一个指向提交的可移动指针;仅仅因为一个分支与 master 共享历史并不意味着该分支完全包含 包含在 master 的历史中。
  • @TimBiegeleisen 也参见What exactly do we mean by "branch"? 当我说一个分支“包含另一个”时,我的意思是从分支指针可到达的历史 DAG 包括从另一个分支指针可到达的完整历史 DAG。跨度>

标签: git git-branch


【解决方案1】:

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

【讨论】:

  • 谢谢,我不认为--no-contains 是一个真正的选择;我认为它会以简单的方式传达我的意思。我不确定我是否完全理解ref-filter 的意义。这是 2.7 中的新 git 命令吗?例如。 git ref-filter (something)?
  • @Wildcard no, ref-filter 指的是github.com/git/git/blob/…: "用于过滤一组 refs 的 API。根据用户请求的 refs 类型,我们遍历这些 refs 并将过滤器应用为根据给定的 ref_filter 结构,最后将过滤后的 ref 存储在 ref_array 结构中”。
  • 啊,好吧。我还没有掌握 C 代码(还没有进入我的领域),所以我只知道大致的想法。如果我的理解正确,这似乎只是一个已更改的实现细节,git branch (--merged | --no-merged | --contains) 在 2.7 中仍然可以正常工作?
  • @Wildcard 是的,如果对 git 分支可用,那组选项仅适用于 git 2.7+
  • 现在我很困惑。 Git 1.7.12.4 在我上一条评论中指定的所有三个选项都能正常工作。您指的是哪些选项仅在 2.7+ 中可用?
猜你喜欢
  • 2013-10-18
  • 1970-01-01
  • 2019-12-25
  • 2014-09-19
  • 2020-05-22
  • 2016-06-12
  • 2012-10-16
  • 2019-12-01
  • 2017-06-17
相关资源
最近更新 更多