使用 LibGit2Sharp 遍历 Git 存储库中的每个提交

本文关键字:提交 LibGit2Sharp 遍历 Git 存储 使用 | 更新日期: 2023-09-27 18:33:23

我尝试遍历new LibGit2Sharp.Repository(path).Commits,但似乎它只通过主服务器中的提交(或者我猜 HEAD 指向哪里?

我将如何遍历存储库中的每个提交,无论它位于哪个分支中,并按提交发生时间(日期)的顺序循环访问它们?

我这样做的目的是像 git log ,按日期顺序列出提交,而不考虑分支。

如果我还可以循环访问未引用的提交(即,如果您git reset远离某些提交并且提交不再被引用并且即将获得 gc'd),则加分。

思潮?

使用 LibGit2Sharp 遍历 Git 存储库中的每个提交

使用以下语法应该可以支持git log --all

using (var repo = new Repository(yourRepoPath))
{
      var commits = repo.Commits.QueryBy(new Filter { Since = repo.Refs });
}

Filter还公开一个 SortBy 属性来控制结果的顺序。默认排序 ( GitSortOptions.Time ) 将首先输出最近的提交。

如果我还可以通过未引用的提交循环,则奖励积分

没有办法访问 reflog 中的提交或悬空的提交(还?然后,没有奖励积分,我猜:-)