use*_*426 4 c# git libgit2sharp
我正在尝试编写一个基本的 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...");
}
}
Run Code Online (Sandbox Code Playgroud)
我面临的问题是这样的。如果我添加或修改任何文件,那么它们会在存储库中相应更新。但是,如果没有需要提交的文件,则会引发以下异常:
No changes; nothing to commit
Run Code Online (Sandbox Code Playgroud)
我希望能够做的是在尝试提交操作之前确定是否需要提交文件,因此如果不需要执行任何操作,则能够正常退出。IE 的内容大致如下:
if (there are files to commit)
{
repo.Commit("This is my comment");
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何实现这一目标?
如前所述,这是我第一次尝试使用 GIT,因此如果有比我上面的代码更好的标准,如果有任何建议,我将非常感激。
致以真诚的感谢和诚挚的问候
小智 5
看起来可以使用该Repository.RetrieveStatus()方法查看是否有需要提交的文件:
RepositoryStatus status = repo.RetrieveStatus();
if (status.IsDirty)
{
// Stage, commit, and push your changes
}
Run Code Online (Sandbox Code Playgroud)
如果您在命令行上使用 Git(如果您过去很少使用 Git,这似乎是一个值得的练习),这看起来与命令相同git status- 它会显示已修改的文件,暂存以供提交的文件以及当前未跟踪的文件。
| 归档时间: |
|
| 查看次数: |
3599 次 |
| 最近记录: |