如何列出包含给定提交的分支?

我怎样才能查询混帐找出哪些分支包含一个给定的提交? gitk通常会列出分支,除非有太多,在这种情况下,它只是说“很多(38)”或类似的东西。 我需要知道完整的列表,或至less是否某些分支包含提交。

从git-branch手册页面 :

git branch --contains <commit> 

只列出包含指定提交的分支(如果未指定,则为HEAD)。 意味着 – 列表。


  git branch -r --contains <commit> 

列出远程跟踪分支 (如下面的user3941992的答案中所述),即“与远程分支有直接关系的本地分支”。


另请参阅此git准备文章。

--contains标签会判断某个提交是否已经被引入分支。 也许你已经从你认为已经应用的补丁中获得了一个提交SHA,或者你只是想检查你最喜欢的开源项目的提交是否能够减less75%的内存使用率。

 $ git log -1 tests commit d590f2ac0635ec0053c4a7377bd929943d475297 Author: Nick Quaranto <nick@quaran.to> Date: Wed Apr 1 20:38:59 2009 -0400 Green all around, finally. $ git branch --contains d590f2 tests * master 

注意: 如果提交在远程跟踪分支上 ,请添加-a选项
(如下面的 MichielB评论)

 git branch -a --contains <commit> 

MatrixFrog注释它只显示哪个分支包含那个确切的提交。
如果你想知道哪个分支包含一个“等效”的提交(即哪个分支有挑选的提交),那就是git cherry

因为git cherry 比较了变更集而不是提交id(sha1) ,所以你可以使用git cherry来确定你在本地提交的提交是否已经在不同的提交ID下应用<upstream>
例如,如果您通过电子邮件向<upstream>提供补丁,而不是直接提交或提交提交,则会发生这种情况。

  __*__*__*__*__> <upstream> / fork-point \__+__+__-__+__+__-__+__> <head> 

(在这里,标记' - '的提交不会显示出来,这意味着它们已经存在于<upstream>

你可以运行:

 git log <SHA1>..HEAD --ancestry-path --merges 

从输出中最后一次提交的注释中,您可以find原始分支名称

例:

  c---e---g--- feature / \ -a---b---d---f---h---j--- master git log e..master --ancestry-path --merges commit h Merge: gf Author: Eugen Konkov <> Date: Sat Oct 1 00:54:18 2016 +0300 Merge branch 'feature' into master