我想检查远程Git存储库上的分支是否包含具有特定名称的合并分支。例如:
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
了,但我唯一得到的是一个远程头部列表。有人曾经这样做过吗?
答案 0 :(得分:1)
您无法在遥控器上执行命令。它只是一个同步机制。您需要克隆才能执行常规命令。
您可能想查找git branch -a --contains
答案 1 :(得分:1)
Git的分布式特性基本上是围绕几个基本概念设计的:
这意味着探索历史记录是本地操作,不能在远程存储库上执行。
git-ls-remote 命令在上游搜索refs时非常有用,但对于历史记录则不行。例如:
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 <commit>
找到包含的分支。这将为您提供包含指定提交的分支列表。