c# - 如何在 LibGit2Sharp 中执行 git diff --name-status origin/master...HEAD ?

标签 c# git libgit2 libgit2sharp

我正在使用 LibGit2Sharp。如何使用以下参数调用 git diff 命令?

git diff --name-status origin/master...HEAD

我知道,git diff A...B 相当于git diff $(git-merge-base A B) B

最佳答案

我找到了一个解决方案来做到这一点。您可以通过以下方式完成:

1) 获取两个提交的共同祖先。

2)获取树之间的差异。

var baseCommit = repo.ObjectDatabase.FindMergeBase(repo.Branches["origin/master"].Tip, repo.Head.Tip);
var diff = repo.Diff.Compare<TreeChanges>(baseCommit.Tree, repo.Head.Tip.Tree);

关于c# - 如何在 LibGit2Sharp 中执行 git diff --name-status origin/master...HEAD ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46976477/

相关文章:

c# - 为什么我不能编辑 DevExpress 数据透视表数据?

C# - 并行 For 循环 : Parallel. For(); - 它们如何处理在它们之外声明的变量?

gitattributes - 如何识别没有扩展名的 bash 脚本文件

c - libgit2 中的 git_sysdir_find_in_dirlist() 是做什么的?

c# - 如何在 .NET 中创建线程转储? (一个 la JVM 线程转储)

c# - 在回发时将 ListBox 选择保持在 session 中

git - 我如何列出对我在 gerrit 中的更改发表的所有评论?

git - 如何从远程 Git 存储库中 pull 并覆盖本地存储库中的更改?

c# - 使用 LibGit2Sharp 遍历 Git 存储库中的每个提交?

c++ - 使用 libgit2 从 git 存储库中删除文件