如何列出包含给定提交的分支?
我怎样才能查询混帐找出哪些分支包含一个给定的提交? 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