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

如何查询git以找出包含给定提交的分支? gitk通常会列出分支,除非有太多分支,在这种情况下,它只会显示“许多(38)”或类似内容。 我需要知道完整列表,或者至少要知道某些分支是否包含提交。


#1楼

git-branch手册页

 git branch --contains <commit>

仅列出包含指定提交的分支(如果未指定,则为HEAD)。 暗示--list


 git branch -r --contains <commit>

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


另请参阅这篇git ready文章。

--contains标记将确定是否已将某个提交引入分支。 也许您已经从自己认为已应用的补丁中获得了提交SHA,或者您只是想检查是否可以将您最喜欢的开源项目提交,从而将内存使用减少了75%。

$ 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>

(在这里,标有' - '的提交不会与git cherry ,这意味着它们已经存在于<upstream> 。)


#2楼

您可以运行:

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

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

例:

       c---e---g--- feature
      /         \
-a---b---d---f---h---j--- master

git log e..master --ancestry-path --merges

commit h
Merge: g f
Author: Eugen Konkov <>
Date:   Sat Oct 1 00:54:18 2016 +0300

    Merge branch 'feature' into master
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值