在空仓库上使用Libgit2sharp结账

时间:2015-08-07 11:20:25

标签: libgit2sharp

通过使用git checkout -b <branchname>,我可以在空仓库中创建一个新分支,并开始提交该分支上的文件。我无法通过libgit2sharp实现这一目标。通过使用repo.Checkout(branchName),它会抛出以下错误:

  

LibGit2Sharp.NotFoundException: 存储库中没有标识的有效git对象。

1 个答案:

答案 0 :(得分:0)

libgit2sharp使用的本机libgit2库的当前版本需要在分支创建期间使用HEAD。使用空(null)committish在官方git版本中有效,因此创建一个新分支并检查它在完全裸的repo上工作正常。也许这将在下一个版本和/或已知的错误中介绍。

但无论哪种方式,只需创建一个内容为空的初始提交,它就可以工作:

using System;
using System.IO;
using LibGit2Sharp;

namespace stackoverflow
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            var rPath = Path.Combine (Path.GetTempPath (), "StackOverFlow");
            var rootedPath = Repository.Init (rPath, false);
            var repo = new Repository (rootedPath);
            repo.Commit ("Initial Commit");
            repo.CreateBranch ("EmptyBranch");
            repo.Checkout ("EmptyBranch");
        }
    }
}