7

我想检查远程 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,但我唯一得到的是一个远程头列表。有没有人这样做过?

4

2 回答 2

1

您无法在遥控器上执行命令。它只是一种同步机制。您将需要克隆以执行常规命令。

您可能想查找git branch -a --contains

于 2013-01-16T18:45:00.853 回答
1

Git 按设计在本地运行

Git 的分布式本质是围绕几个基本概念设计的:

  1. 大多数操作都是本地操作,只有少数例外,例如pushls-remote
  2. 历史是根据提交对象计算的。

这意味着探索历史是本地操作,不能在远程存储库上执行。

远程参考

git-ls-remote命令在向上游搜索 refs 时很有用,但对历史记录无效。例如:

git ls-remote origin | egrep 'some_branch_name|merge'

将在远程打印与您正在寻找的命名分支匹配的参考,或者(在 GitHub 的情况下)从合并的拉取请求创建的参考,例如:

381a77fd72ea594cfce5c82c845ad3d10bb87d71        refs/pull/99/merge

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

查找包含合并提交的分支

我知道处理此问题的最佳方法如下:

  1. 使用 获取所有分支git fetch --all origin
  2. 找到你想要的合并提交git log --merges
  3. 找到包含的分支git branch --all --contains <commit>

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

于 2013-01-16T19:29:51.743 回答