HansPeterGit 0.1.12
dotnet add package HansPeterGit --version 0.1.12
NuGet\Install-Package HansPeterGit -Version 0.1.12
<PackageReference Include="HansPeterGit" Version="0.1.12" />
paket add HansPeterGit --version 0.1.12
#r "nuget: HansPeterGit, 0.1.12"
// Install HansPeterGit as a Cake Addin #addin nuget:?package=HansPeterGit&version=0.1.12 // Install HansPeterGit as a Cake Tool #tool nuget:?package=HansPeterGit&version=0.1.12
HansPeterGit
.NET 的 GIT 接口
此存储库包含对 git CLI(即 git.exe/git)的跨平台接口。
项目目标是移除陈旧的库 libgit2sharp
并提供一个易于与 git cli 交互的接口。
依赖关系
应通过路径访问已安装的 git 版本,或者可以通过 GitOptions.PathToGit
属性定义。
安装
将 NuGet 包 HansPeterGit 添加到任何支持 .NET Standard 2.0 或更高版本的任何项目。
> dotnet add package HansPeterGit
使用方法
克隆仓库
GitRepository.Clone() 可以下载远程仓库到本地文件系统,与 git clone 命令相同。
GitRepository.Clone("https://github.com/twenzel/HansPeterGit.git", @"D:\TestSample");
创建本地仓库
GitRepository.Init() 方法可以在指定的路径中创建一个新的 Git 仓库,相当于 git init 命令。
var repos = new GitRepository(@"D:\TestSample");
repos.Init();
获取状态
使用 GetStatus() 方法检索存储库的当前状态。
var repos = new GitRepository(@"D:\TestSample");
var status = repos.GetStatus();
Console.WriteLine($"Current branch: {status.Branch}");
Console.WriteLine($"Current commit: {status.Commit}");
if (status.IsDirty)
{
var newfile = status.Added.First();
}
var fileInfo = status["src/newFile.json"];
获取分支
使用<strong>GetBranches</strong>方法检索当前仓库的本地分支。
var repos = new GitRepository(@"D:\TestSample");
var status = repos.GetBranches();
Console.WriteLine("Branches:");
foreach (var branch in branches)
{
Console.WriteLine($"{branch.Name}");
}
要检索远程分支,请使用<strong>GetBranches(bool)</strong>方法,并设置为“true”(“false”将检索本地分支)。
var repos = new GitRepository(@"D:\TestSample");
var status = repos.GetBranches(true);
Console.WriteLine("Remote branches:");
foreach (var branch in branches)
{
Console.WriteLine($"{branch.Name}");
}
仅要检索分支名称,请使用<strong>GetBranchNames(bool)</strong>方法。
暂存/恢复
要暂存当前工作目录,请使用任何<strong>Stage/Add/Restore</strong>方法。
repos.StageAll();
// Stage file
repos.Add("src/newFile.json");
// Discard changes in working directory
repos.Restore("src/newFile.json");
// Unstage file
repos.Unstage("src/newFile.json");
提交更改
可以使用<strong>Commit</strong>方法提交当前更改。
var commit = repos.Commit("Fix calculation bug");
// with dedicated author
repos.Commit("Fix calculation bug", new Author("Some name", "[email protected]"));
推送更改
要从本地仓库推送更改,请使用<strong>Push</strong>方法。
repos.Push();
// with dedicated remove name
repos.Push("origin", "main");
// with setting an upstream
repos.PushWithUpstream("origin", "main");
其他
已经存在一些其他方法,但并非所有命令都已包装/实现。请随意创建问题或贡献。
对于任何其他git命令,您可以使用通用的<code>ExecuteCommand</code>方法。
var result = repos.ExecuteCommand("revert");
身份验证
有时远程仓库需要身份验证(例如GitHub、Azure DevOps)。为了克隆或推送仓库,您可以定义身份验证。
var options = new GitOptions(workingDirectory);
options.Authentication = new BasicAuthentication("pat", "myuserpat");
var repository = GitRepository.Clone("https://dev.azure.com/yourOrgName/yourProject/_git/yourRepository", options);
除了<code>BasicAuthentication</code>之外,还有一个内置的<code>BearerAuthentication</code>。您可以通过实现<code>IAuthentication</code>接口来自定义身份验证。内置的身份验证实现使用git cli的'-c http.extraheader'参数提供凭据。
产品 | 版本 兼容的和额外的计算目标框架版本。 |
---|---|
.NET | net5.0已计算。 net5.0-windows已计算。 net6.0兼容。 net6.0-android已计算。 net6.0-ios已计算。 net6.0-maccatalyst已计算。 net6.0-macos已计算。 net6.0-tvos已计算。 net6.0-windows已计算。 net7.0已计算。 net7.0-android已计算。 net7.0-ios已计算。 net7.0-maccatalyst已计算。 net7.0-macos已计算。 net7.0-tvos已计算。 net7.0-windows已计算。 net8.0已计算。 net8.0-android已计算。 net8.0-browser已计算。 net8.0-ios已计算。 net8.0-maccatalyst已计算。 net8.0-macos已计算。 net8.0-tvos已计算。 net8.0-windows已计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET 标准库 | netstandard2.0 兼容。 netstandard2.1 已计算。 |
.NET 框架 | net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETStandard 2.0
- Microsoft.Extensions.Logging Abrams (>= 6.0.1)
-
net6.0
- Microsoft.Extensions.Logging Abrams (>= 6.0.1)
NuGet 包
此包不被任何 NuGet 包使用。
GitHub 仓库
此包不被任何流行的 GitHub 仓库使用。