gpt4 book ai didi

git - 如何检查特定的远程存储库分支是否包含特定的 merge 分支?

转载 作者:太空狗 更新时间:2023-10-29 13:03:20 25 4
gpt4 key购买 nike

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

  • www.example.com:/repo.git 有一个远程仓库。
  • 在该存储库中,有一个名为 myBranch 的分支。
  • 我想检查像 myFeatureBranch 这样的特定功能分支是否已 merge 到 myBranch 中。

如果我克隆存储库并 checkout myBranch,我可以执行 git show-ref --verify refs/heads/myFeatureBranch,但这不是我想要做的.我必须在不克隆的情况下使用远程分支来完成。

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

最佳答案

Git 按设计在本地运行

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

  1. 大多数操作都是本地的,只有一些小的异常(exception),例如 pushls-remote
  2. 历史是根据提交对象计算的。

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

远程引用

git-ls-remote 命令在向上游搜索 refs 时很有用,但对历史没有帮助。例如:

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

将在远程上打印与您正在寻找的命名分支相匹配的引用,或者(在 GitHub 的情况下)从 merge 的 pull 请求创建的引用,例如:

381a77fd72ea594cfce5c82c845ad3d10bb87d71        refs/pull/99/merge

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

查找包含 merge 提交的分支

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

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

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

关于git - 如何检查特定的远程存储库分支是否包含特定的 merge 分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14365094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com