C# 使用libgit2sharp提取特定提交

C# 使用libgit2sharp提取特定提交,c#,git,libgit2sharp,C#,Git,Libgit2sharp,希望有人能打电话来帮忙。首先,我对git还很陌生,所以请原谅我在解释问题时犯了一些错误 我想使用libgit2sharp库将现有的源代码拉到一个特定的提交。所以如果有历史的 承诺 承诺 承诺 承诺 承诺 承诺 承诺 承诺 承诺 承诺 我想能够拉5的源代码,或该列表中的任何其他数字。没有一个源将被标记,因此我必须使用提交进行拉取。希望有人能帮忙 我已经看过了,但它似乎不允许我通过sha或提交id 编辑我的问题以明确我正在使用库。因此另一个开发人员回答了这个问题。我只需要做一个克隆,然后根据我想重置

希望有人能打电话来帮忙。首先,我对git还很陌生,所以请原谅我在解释问题时犯了一些错误

我想使用libgit2sharp库将现有的源代码拉到一个特定的提交。所以如果有历史的

  • 承诺
  • 承诺
  • 承诺
  • 承诺
  • 承诺
  • 承诺
  • 承诺
  • 承诺
  • 承诺
  • 承诺
  • 我想能够拉5的源代码,或该列表中的任何其他数字。没有一个源将被标记,因此我必须使用提交进行拉取。希望有人能帮忙

    我已经看过了,但它似乎不允许我通过sha或提交id


    编辑我的问题以明确我正在使用库。

    因此另一个开发人员回答了这个问题。我只需要做一个克隆,然后根据我想重置的提交进行签出。这似乎是我想要的方式

    //clone the master 
    dir = Path.Combine(localPath, "Target");
    Directory.CreateDirectory(dir);
    Repository.Clone(tfsUri, dir);
    
    //reset master to the base of the branch
    using (var localRepo = new Repository(dir))
    {
        var localCommit = localRepo.Lookup<Commit>(priorCommitId);
        Commands.Checkout(localRepo, localCommit);
    }
    
    //克隆主机
    dir=Path.Combine(localPath,“Target”);
    CreateDirectory(dir);
    Clone(tfsUri,dir);
    //将主机重置到分支的底部
    使用(var localRepo=newrepository(dir))
    {
    var localCommit=localRepo.Lookup(priorCommitId);
    Checkout(localRepo、localCommit);
    }
    

    不确定这是否是您的意思@0andriy,但您的评论有点混乱。

    git pull
    只是一个
    git fetch
    ,然后是给定跟踪分支上的
    git merge
    。您在这里处理提交,我假设您已经在本地获得了提交,所以只需
    git merge sha-1
    。Adam,我使用的是libgit2sharp库,而不是命令行。谢谢,但我需要如何使用库来完成这项工作。但是,根据我的研究,这正是我需要完成的步骤。为什么不使用标准git?请不要讨论我为什么不使用命令行,从而使问题脱轨。:)我只想说我正在使用这个库,并且想知道如何使用这个库来实现这个目标。LibGit2是一个非常低级的库,你需要真正理解Git数据库(所有主要的数据结构)才能继续。也就是说,你基本上需要用很多小砖块重新实现一个大模块,即所谓的
    git checkout
    。我的意思是,你需要做很多工作,而不是在终端中调用
    git checkout
    。除此之外,上面是一个货物崇拜,你不知道它在内部做什么。也就是说,您可以很容易地损坏存储库中的数据,而不知道发生了什么。