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

时间:2014-09-03 06:25:47

标签: libgit2 libgit2sharp

我需要获取一个提交列表,而不需要Git完成自动合并提交。 如何使用libgit2sharp包完成?

1 个答案:

答案 0 :(得分:6)

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

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

git log --no-merges HEAD

--no-merges documented 的位置为"请勿打印包含多个父级的提交。这与--max-parents = 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();
    }
}