通过使用git checkout -b <branchname>
,我可以在空仓库中创建一个新分支,并开始提交该分支上的文件。我无法通过libgit2sharp
实现这一目标。通过使用repo.Checkout(branchName)
,它会抛出以下错误:
LibGit2Sharp.NotFoundException: 存储库中没有标识的有效git对象。
答案 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");
}
}
}