gpt4 book ai didi

c# - LibGit2Sharp - 暂存和提交文件的最佳方式

转载 作者:太空狗 更新时间:2023-10-29 14:12:10 25 4
gpt4 key购买 nike

我正在尝试编写一个基本的 C# GIT 函数,用于提交本地工作目录并将其推送到其主存储库。这是我第一次尝试使用 GIT,我仍在努力了解一些基础知识。

这是我的代码。它不是很复杂,它需要做的就是确保存储库随着我工作目录中的任何更改而更新。它有效,但有如下所述的警告

public void Sync()
{
using (var repo = new Repository(@"C:\Temp\Git\test"))
{
repo.Stage("*");
repo.Commit("This is my comment");

Remote remote = repo.Network.Remotes["origin"];
var options = new PushOptions();

options.CredentialsProvider = new CredentialsHandler(
(url, usernameFromUrl, types) =>
new UsernamePasswordCredentials()
{
Username = "myusername",
Password = "mypassword"
});

var pushRefSpec = @"refs/heads/master";
repo.Network.Push(remote, pushRefSpec, options, null, "push done...");

}
}

我面临的问题是这样的。如果我添加或修改任何文件,那么它们会在存储库中相应地更新。但是,如果没有需要提交的文件,则会引发以下异常:

No changes; nothing to commit

我希望能够做的是在尝试提交操作之前确定是否需要提交文件,因此如果不需要做任何事情就能够优雅地退出。 I.E 类似以下内容:

if (there are files to commit)
{
repo.Commit("This is my comment");
}

有人知道如何实现吗?

如前所述,这是我第一次尝试使用 GIT,因此如果有比我上面的代码更好的标准,如果有任何建议,我将不胜感激。

非常感谢和最好的问候

最佳答案

看起来你可以使用 Repository.RetrieveStatus() 方法来查看是否有需要提交的文件:

RepositoryStatus status = repo.RetrieveStatus();

if (status.IsDirty)
{
// Stage, commit, and push your changes
}

如果您在命令行上使用 Git(如果您过去没有经常使用 Git,这似乎是一项值得练习的练习),这看起来等同于 git status 命令 - 它向您显示已修改的文件、准备提交的文件以及当前未跟踪的文件。

关于c# - LibGit2Sharp - 暂存和提交文件的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34846871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com