如何使用LibGit2Sharp获取当前/活动分支?

20

使用 LibGit2Sharp https://github.com/libgit2/libgit2sharp,您可以像这样遍历分支。

using (var repo = new Repository(@"path to .git"))
{
    foreach (var branch in repo.Branches)
    {
        Debug.WriteLine(branch.Name);   
    }
}

但是我如何获取当前/活动分支?

2个回答

25

Branch.IsCurrentRepositoryHead应该可以解决问题。

如果你不想遍历分支,我认为Repository.Head也能实现同样的功能...


由于这个属性的精确性,如果你已经检出了 'Branch' 但是你在已获取的远程上落后或超前于该分支,它将返回 false。 - patridge
1
这个函数完全不应该关心任何远程存储库。它只是对分支名称进行字符串比较。如果您认为它会因远程存储库而改变,请提交一个带有复现步骤的错误报告。 - Edward Thomson

2

我认为,与其遍历分支并检查每个分支是否是当前的Head,直接从仓库Head中获取分支名称是最简单的方法:

using (var repo = new Repository(@"path to .git"))
{
    var currentBranchName = repo.Head.FriendlyName;
}

您可以通过以下方式获得分支本身:

repo.Branches[currentBranchName]

1
你可以使用 Head 来获取分支:repo.Head.Reference.TargetIdentifier - Edward Thomson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接