如何使用LibGit2Sharp

时间:2017-05-20 03:06:36

标签: c# git libgit2sharp git-fetch

我能够使用LibGit2Sharp成功获取,拉取,推送等,但我希望能够在执行获取后列出已更改,添加等的文件。我使用https://github.com/libgit2/libgit2sharp/wiki/git-fetch并且没有发生任何错误或异常,并且logMessage是一个空字符串。

我希望能够显示Visual Studio在执行提取时所做的更改列表。

如何使用LibGit2Sharp来完成此任务?

编辑: 我已经阅读了LibGit2Sharp Wiki和LibGit2Sharp Hitchhiker的Git指南。虽然我已经尝试了一些可用的命令来查看它们提供的结果,但我不确定它的等效git命令是什么。知道并理解哪个命令可以提供这些信息会很有帮助,如果您熟悉Git而不熟悉LibGit2Sharp,我们将不胜感激。

1 个答案:

答案 0 :(得分:2)

完成提取后,您可以使用

列出给定分支的提取提交
git log ..@{u}

@{u}指定要合并的分支(上游远程跟踪分支,通常为origin/yourbranch

在LibGitSharp中,这就是LibGit2Sharp/BranchUpdater.cs#UpstreamBranch引用(上游分支)

有了这个,您应该能够列出当前分支HEAD和“UpstreamBranch”之间的提交,有点像issue 1161,但是这个问题列出了被推送的内容:让我们反转这里的日志参数。

var trackingBranch = repo.Head.TrackedBranch;
var log = repo.Commits.QueryBy(new CommitFilter 
            { IncludeReachableFrom = trackingBranch.Tip.Id, ExcludeReachableFrom = repo.Head.Tip.Id });

var count = log.Count();//Counts the number of log entries

//iterate the commits that represent the difference between your last 
//push to the remote branch and latest commits
foreach (var commit in log)
{
    Console.WriteLine(commit.Message);
}