Git 如何检查特定的远程存储库分支是否包含特定的合并分支?

Git 如何检查特定的远程存储库分支是否包含特定的合并分支?,git,branching-and-merging,Git,Branching And Merging,我想检查远程Git存储库上的分支是否包含具有特定名称的合并分支。例如: git ls-remote origin | egrep 'some_branch_name|merge' 在www.example.com:/repo.git上有一个远程存储库 在该存储库中,有一个名为myBranch的分支 我想检查像myFeatureBranch这样的特定功能分支是否已合并到myBranch中 如果我克隆了存储库并签出myBranch,我可以执行git show ref--verify refs/

我想检查远程Git存储库上的分支是否包含具有特定名称的合并分支。例如:

git ls-remote origin | egrep 'some_branch_name|merge'
  • www.example.com:/repo.git
    上有一个远程存储库
  • 在该存储库中,有一个名为
    myBranch
    的分支
  • 我想检查像
    myFeatureBranch
    这样的特定功能分支是否已合并到
    myBranch
如果我克隆了存储库并签出
myBranch
,我可以执行
git show ref--verify refs/heads/myFeatureBranch
,但这不是我想要做的。我必须在不克隆的情况下使用远程分支


我已经玩过
git ls remote--heads www.example.com:/repo.git
,但我得到的只是一个远程头列表。以前有人这样做过吗?

您不能在远程设备上执行命令。它只是一种同步机制。您需要克隆以执行常规命令

您可能需要查找git分支-a--contains

git按设计在本地运行 Git的分布式本质基本上是围绕两个基本概念设计的:

  • 大多数操作都是本地操作,只有少数例外,如push和ls remote
  • 历史记录是根据提交对象计算的
  • 这意味着探索历史是一项本地操作,不能在远程存储库上执行

    远程引用 git ls remote命令可用于在上游搜索ref,但不用于搜索历史。例如:

    git ls-remote origin | egrep 'some_branch_name|merge'
    
    将在远程设备上打印与您要查找的命名分支匹配的引用,或(对于GitHub)从合并的拉取请求创建的引用,例如:

    381a77fd72ea594cfce5c82c845ad3d10bb87d71        refs/pull/99/merge
    
    git ls remote命令显示远程存储库中可用的引用以及相关的提交ID。但是,如果您想找出哪个分支包含给定的提交,您需要访问完整的历史记录;这要求您具有本地副本

    查找包含合并提交的分支 我所知道的处理此问题的最佳方法如下:

  • 使用git Fetch--all origin获取所有分支
  • 使用
    git log--merges
    查找所需的合并提交
  • 使用
    git branch--all--contains
    查找包含的分支

  • 这将为您提供一个包含指定提交的分支列表。

    远程头列表不包括该分支吗?是的,但它没有指定任何有关历史结构的内容。也就是说,它不会走到那种程度。谢谢你,这不是好消息。。。因此,我必须找到另一种方法,可能是在服务器上克隆存储库,然后通过shell或类似的方式进行通信。:)如果您拥有服务器,则无需重新连接。您也可以在裸回购上执行这些命令。但是您需要ssh到该机器,并按照您所说的在该机器上执行。