有没有办法使用libgit2sharp从远程git存储库中获取特定标记?

时间:2014-08-02 00:41:39

标签: git libgit2sharp

我设置了一个叫做“来源”的遥控器。并将远程克隆到本地目录,并将checkout设置为false,以便我可以获取远程标记。我可以列出远程标签,但我找不到任何方法来获取内容。

如果我将checkout设置为true来调用clone,我会得到HEAD,这很棒,但我希望能够回滚到特定的标记版本并且无法查看。

1 个答案:

答案 0 :(得分:2)

您可以签出任意提交,包括标记(例如:'lw'):

string commitPointer = refs/tags/lw;
var commit = repo.Lookup<Commit>(commitPointer);
Branch detachedHead = repo.Checkout(commitPointer);

你将处于一个超然的头脑中:

Assert.Equal("(no branch)", detachedHead.CanonicalName);
Assert.False(master.IsCurrentRepositoryHead);
Assert.True(repo.Info.IsHeadDetached);

但是HEAD确实引用了你的标签:

Assert.True(detachedHead.IsCurrentRepositoryHead);
Assert.Equal(repo.Head, detachedHead);
Assert.Equal(commit.Sha, detachedHead.Tip.Sha);
Assert.True(repo.Head.IsCurrentRepositoryHead);
Assert.False(repo.Index.RetrieveStatus().IsDirty);

Assert.False(detachedHead.IsRemote);
Assert.Equal(detachedHead.Name, detachedHead.CanonicalName);

点击“LibGit2Sharp.Tests/CheckoutFixture.cs#CanCheckoutAnArbitraryCommit()

了解详情