paypal外贸门户网站,银饰品网站建设规划策划书,青岛做网站,游戏网页点击上方蓝字关注“汪宇杰博客”Git是很多程序员的首选源代码版本控制工具#xff0c;我最近也从TFVC切换到了Git#xff0c;受益匪浅。今天我就来带大家看看如何在.NET Core里操作Git。为啥要这么做首先#xff0c;这件事情的意义#xff0c;并不是闲的蛋疼。我们确实有很… 点击上方蓝字关注“汪宇杰博客”Git是很多程序员的首选源代码版本控制工具我最近也从TFVC切换到了Git受益匪浅。今天我就来带大家看看如何在.NET Core里操作Git。为啥要这么做首先这件事情的意义并不是闲的蛋疼。我们确实有很多不错的Git客户端如GitHub for Windows、VS/VS CodeGit GUI等都相当成熟没有必要自己再去用.NET/C#重新发明轮子。但在服务器上可能你需要管理一个Git仓库有自己的业务逻辑Git仓库需要和其他系统流程整合甚至想用ASP.NET写一个自己的GitHub出来那么用.NET Core来操作Git就势在必行了。LibGit2Sharp我们不需要从零开始研究Git的原理强大的.NET社区已经有了一个操作Git的库LibGit2Sharp。它同时支持.NET Framework及.NET Core我们需要用的就是它传送门https://github.com/libgit2/libgit2sharp这个库也能在NuGet上直接安装https://www.nuget.org/packages/LibGit2Sharp首先我们将它引入.NET Core工程NuGet Package Manager (Visual Studio)Install-Package LibGit2Sharp.NET Core CLIdotnet add package LibGit2SharpClone 远程仓库Repository.Clone() 方法可以拉取一个远程仓库到本地等同于 git clone 命令。Repository.Clone(https://github.com/EdiWang/EnvSetup.git, D:\EnvSetup);创建本地仓库Repository.Init() 方法可以在指定路径创建一个新的Git仓库等同于 git init 命令。Repository.Init(D:\GitRocks);打开本地Git仓库LibGit2Sharp.Repository 类型代表一个Git仓库它可以只在内存中也可以从一个本地路径加载即包含.git文件夹的目录。如我的博客项目 D:\GitHub\Moonglade由于它实现了 IDisposable 接口所以推荐使用using语句把对Repository的操作包装起来以便于释放资源。打开本地Git仓库很简单将路径传给Repository的构造函数就搞定了using (var repo new Repository(D:\GitHub\Moonglade)){}检索 BranchRepository.Branches 属性包含了当前仓库所有的分支信息。比如我们要输出当前仓库有哪些本地和远程branch就可以这么做using (var repo new Repository(D:\GitHub\Moonglade)){ var branches repo.Branches; foreach (var b in branches) { Console.WriteLine(b.FriendlyName); }}当然除了分支的名称还包括该分支底下的Commits等其他信息。检索 Commits通过遍历Branch.Commits或Repository.Commits可以获得完整的Commits历史记录信息foreach (var commit in repo.Commits){ Console.WriteLine( ${commit.Id.ToString().Substring(0, 7)} ${commit.Author.When.ToLocalTime()} ${commit.MessageShort} ${commit.Author.Name});}要查找具体某一个Commit可以使用Repository.LookupCommit()方法var commit repo.LookupCommit(9fddbbf);Console.WriteLine($Commit Full ID: {commit.Id});Console.WriteLine($Message: {commit.MessageShort});Console.WriteLine($Author: {commit.Author.Name});Console.WriteLine($Time: {commit.Author.When.ToLocalTime()});想要获取最新的Commit访问Repository.Head.Tip即可。var commit repo.Head.Tip;Console.WriteLine($Commit Full ID: {commit.Id});Console.WriteLine($Message: {commit.MessageShort});Console.WriteLine($Author: {commit.Author.Name});Console.WriteLine($Time: {commit.Author.When.ToLocalTime()});检索 Tags和Branch类似标签信息可以通过Repository.Tags属性得到foreach (var item in repo.Tags){ Console.WriteLine(${item.FriendlyName} - {item.Target.Id});}其他操作以上例子演示了最常用的Git仓库信息检索操作还有很多其他操作如通过Repository.Ignore读写忽略文件写入Commit、对比更改等本文就不再一一赘述啦大家可以自己探索~参考http://www.woodwardweb.com/git/getting_started_2.html