gpt4 book ai didi

c# - LibGit2Sharp 日志远程

转载 作者:太空狗 更新时间:2023-10-29 14:39:36 25 4
gpt4 key购买 nike

有什么方法可以列出已获取但未使用 LibGit2Sharp merge 的提交?

例如,我可以运行以下 git 命令:

C:\Users\Tom\SourceLog>git log origin
commit f3beb4960b2f4bf5641d5b512b5b8c3081512a56
Author: Tom Hunter
Date: Wed Jan 9 22:58:51 2013 +0000

Rollback change to icon

Seemed to crash on windows xp for some reason..

commit d95f29a6cbfea9cb6009c3095a67d71f86d9e8bd
Author: Tom Hunter
Date: Mon Jan 7 21:34:36 2013 +0000

Updating Icon

commit 8785ed4ff3c46bef46ea6e2398c115b4b0203b2c
Author: Tom Hunter
Date: Mon Jan 7 21:22:54 2013 +0000

Fixing tests

Moved GenerateFlowDocuments method to LogEntry class.
Have somehow managed to greatly simplify tests..

...

前两个提交尚未 merge 到我的本地存储库中。 IE。如果我省略 origin,这就是我得到的:

C:\Users\Tom\SourceLog>git log
commit 8785ed4ff3c46bef46ea6e2398c115b4b0203b2c
Author: Tom Hunter
Date: Mon Jan 7 21:22:54 2013 +0000

Fixing tests

Moved GenerateFlowDocuments method to LogEntry class.
Have somehow managed to greatly simplify tests..

...

下面的代码只给我 8785ed。如何获得包含尚未 merge 的提交的列表?

using (var repo = new Repository(@"C:\Users\Tom\SourceLog"))
{
var c = repo.Commits.First();
}

最佳答案

您可以通过以下方式获取远程原始分支的提交:

repo.Branches["origin/HEAD"].Commits

并且您可以使用 First() 按默认排序获取最新提交。但是,您获得了远程分支的所有提交,而不仅仅是未 merge 的提交。

如果你想收集未 merge 的提交,你应该使用 QueryBy(filter) 来获取提交。 nulltoken's asnwer描述了解决方案,但它包含一个错误。正确的用法是:

var filter = new Filter
{
Since = repo.Branches["origin/HEAD"],
Until = repo.Head
};
var notMergedCommits = repo.Commits.QueryBy(filter);

因为:

  • Since:指向提交对象的指针或要视为起点的指针列表。
  • 直到:指向提交对象的指针或将从枚举中排除(连同祖先)的指针列表。

因此,对于上面的代码,您希望从分支 "origin/HEAD" 中提交并排除那些包含在您的 "HEAD" 中的提交,这意味着返回所有在获取的分支中但尚未 merge 到 "HEAD" 的提交。

关于c# - LibGit2Sharp 日志远程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com