如何使用libgit2sharp忽略合并提交?

juv*_*han 4 libgit2 libgit2sharp

我需要在没有Git完成的自动合并提交的情况下获取提交列表.如何使用libgit2sharp包完成?

nul*_*ken 6

合并提交是具有多个父级的提交.

为了使用Git执行此操作,可以发出以下命令,该命令将列出HEAD可以访问的所有提交,这些提交不是合并提交.

git log --no-merges HEAD
Run Code Online (Sandbox Code Playgroud)

--no-merges记录"不打印与多个父提交.这是完全一样的--max父母= 1"..


使用以下代码可以使用LibGit2Sharp执行相同的操作:

using (var repo = new Repository(path))
{
    var allCommitsReachableByHead = repo.Commits;

    const string RFC2822Format = "ddd dd MMM HH:mm:ss yyyy K";

    foreach (var c in allCommitsReachableByHead)
    {
        if (c.Parents.Count() > 1)
        {
            continue;
        }

        Console.WriteLine("Author: {0} <{1}>", c.Author.Name, c.Author.Email);
        Console.WriteLine("Date:   {0}", c.Author.When.ToString(RFC2822Format, CultureInfo.InvariantCulture));
        Console.WriteLine();
        Console.WriteLine(c.Message);
        Console.WriteLine();
    }
}
Run Code Online (Sandbox Code Playgroud)