【问题标题】:How to get the current/active branch with LibGit2Sharp?如何使用 LibGit2Sharp 获取当前/活动分支?
【发布时间】:2012-10-11 10:18:13
【问题描述】:

所以使用 LibGit2Sharp https://github.com/libgit2/libgit2sharp 你可以像这样穿过树枝

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

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

【问题讨论】:

    标签: .net git libgit2sharp


    【解决方案1】:

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

    如果您不想遍历分支,我认为Repository.Head 也会做同样的事情...

    【讨论】:

    • 如果它抓住了其他人,由于这个属性的精确性,如果你已经签出Branch,但你在获取的遥控器上落后或领先于该分支,它将返回 false。
    • 这个函数根本不应该关心任何远程存储库。它确实对分支名称进行了字符串比较。如果您认为它确实会因远程存储库而改变,请提交带有重现案例的错误报告。
    【解决方案2】:

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

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

    然后您可以通过

    获取分支本身
    repo.Branches[currentBranchName]
    

    【讨论】:

    • 您可以使用Head 获取分支:repo.Head.Reference.TargetIdentifier
    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多