一尘不染

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

go

给定一个特定的引用(在这种情况下为标签),如何在git2go中列出包含该提交的分支?类似于git branch --contains <commit>


阅读 300

收藏
2020-07-02

共1个答案

一尘不染

这里的问题是图形方式的:“我怎么知道A是否是B的祖先?” (对于要成为B的每个分支重复几次)。答案的唯一方法是从B开始沿历史记录走,并检查是否找到A。

您可以通过几种方法来执行此操作,但是最有效的方法通常是将问题简化为“
A是A和B的合并基础吗?”。您可以通过git2go询问此问题Repository.MergeBase()。这将返回您提供的两次提交之间的最佳合并基础。在您希望其中一个提交成为合并基础的情况下,这应该始终提供正确的答案,即使它会将答案缩减为一个合并基础。

2020-07-02