如何用NGit获取Git仓库最后一次提交的SHA1值?
获取NGit中当前分支最后一次提交的SHA1值
要生成branch:sha1格式的版本标签,你可以通过NGit的引用(Ref)对象获取当前分支指向的最新提交ID,以下是修改后的完整代码:
var repository = NGit.Api.Git.Open(Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location)?.Parent?.Parent?.Parent?.Parent?.FullName); var repo = repository.GetRepository(); var branch = repo.GetBranch(); // 获取当前分支的引用并提取SHA1值 var branchRef = repo.GetRef($"refs/heads/{branch}"); var sha1 = branchRef.GetObjectId().Name; Console.WriteLine($"{branch}:{sha1}");
关键逻辑说明:
repo.GetRef($"refs/heads/{branch}"):通过分支名构造完整的引用路径,获取当前分支对应的引用对象GetObjectId():获取该引用指向的最新提交的对象IDName属性:将ObjectId转换为标准的40位SHA1字符串
如果当前分支是HEAD指向的分支,也可以直接通过HEAD引用获取目标提交ID:
var headRef = repo.GetRef("HEAD").GetTarget(); var sha1 = headRef.GetObjectId().Name;
内容的提问来源于stack exchange,提问作者user5405648
相关产品推荐
相关产品推荐

