git - 如何在 git2go (libgit2) 中列出包含给定提交的分支?

标签 git go libgit2

给定一个特定的引用(在本例中是一个标签),你如何列出包含该提交的分支 git2go ?类似于 git branch --contains <commit> .

最佳答案

这里的问题,从图的角度来看是“我怎么知道 A 是否是 B 的祖先?” (对于您想成为 B 的每个分支重复几次)。回答这个问题的唯一方法是从 B 开始沿着历史图走下去,然后检查是否找到 A。

您可以通过几种方式做到这一点,但最有效的通常是将问题简化为等同的“A 是 A 和 B 的 merge 基础吗?”。您可以通过 Repository.MergeBase() 在 git2go 中询问这个问题。这将返回您提供的两个提交之间的最佳 merge 基础。在您希望其中一个提交作为 merge 基础的情况下,这应该始终提供正确的答案,即使它将答案缩减为单个 merge 基础。

关于git - 如何在 git2go (libgit2) 中列出包含给定提交的分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31527908/

相关文章:

Golang for select 循环消耗 100% 的 cpu

ios - 如何将索引 check out 到工作目录中。它因错误 :Reference 'refs/heads/master' not found 而失败

git - Git 和 libgit2 的区别

git - 为什么 git log 不显示移动文件的历史记录,我该怎么办?

git - 当您使用 git 时,Maven pom.xml - <scm> 内的 <tag> 元素的用法是什么

linux - 克隆到 Samba 共享时 Git 速度很慢

go - 对字段 X 的一般属性,存在于多种类型中

json - 编码为 JSON 时,Golang 错误类型为空

c# - 使用 libgit2sharp 从远程 (git show) 下载一个文件

git - Hudson Build 使用 GitHub 被卡住