HansPeterGit 0.1.12

dotnet add package HansPeterGit --version 0.1.12                
NuGet\Install-Package HansPeterGit -Version 0.1.12                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="HansPeterGit" Version="0.1.12" />                
对于支持 PackageReference 的项目,将此 XML 节复制到项目文件中以引用该包。
paket add HansPeterGit --version 0.1.12                
#r "nuget: HansPeterGit, 0.1.12"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将此内容复制到交互工具或脚本的源代码中引用包。
// 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

NuGet License Build Status

Maintainability Rating Reliability Rating Security Rating Bugs Vulnerabilities Coverage

.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 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解有关 目标框架.NET 标准库 的更多信息。

NuGet 包

此包不被任何 NuGet 包使用。

GitHub 仓库

此包不被任何流行的 GitHub 仓库使用。

版本 下载 最后更新
0.1.12 126 1/22/2024
0.1.10 387 9/12/2022
0.1.9 406 7/20/2022
0.1.8 380 7/20/2022
0.1.7 367 7/20/2022
0.1.6 382 7/20/2022
0.1.3 381 7/19/2022
0.1.2 381 7/19/2022