繁体   English   中英

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

[英]How can I check if a specific remote repository branch contains a specific merged branch?

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

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

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

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>查找包含的git branch --all --contains <commit>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM