C# 使用libgit2sharp提取特定提交
希望有人能打电话来帮忙。首先,我对git还很陌生,所以请原谅我在解释问题时犯了一些错误 我想使用libgit2sharp库将现有的源代码拉到一个特定的提交。所以如果有历史的C# 使用libgit2sharp提取特定提交,c#,git,libgit2sharp,C#,Git,Libgit2sharp,希望有人能打电话来帮忙。首先,我对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
。除此之外,上面是一个货物崇拜,你不知道它在内部做什么。也就是说,您可以很容易地损坏存储库中的数据,而不知道发生了什么。