Git 显示所有当前文件和目录,包括它们的状态

Git 显示所有当前文件和目录,包括它们的状态,git,libgit2,libgit2sharp,Git,Libgit2,Libgit2sharp,我正在努力学习Git。现在我正在使用LibGit2Sharplibrary来处理我的Git存储库 我想显示当前存储库文件结构,包括已添加但尚未提交的新文件 我发现我可以获得我最近提交的树: using (var repo = new Repository(repositoryPath)) { Tree tree = repo.Head.Tip.Tree; TraverseTree(tree); } void TraverseTre

我正在努力学习Git。现在我正在使用
LibGit2Sharp
library来处理我的Git存储库

我想显示当前存储库文件结构,包括已添加但尚未提交的新文件

我发现我可以获得我最近提交的

    using (var repo = new Repository(repositoryPath))
    {
        Tree tree = repo.Head.Tip.Tree;
        TraverseTree(tree);
    }

    void TraverseTree(Tree tree)
    {
        foreach (TreeEntry item in tree.ToList())
        {
            Console.WriteLine(item.Path);

            if (item.TargetType == TreeEntryTargetType.Tree)
            {
                Tree subTree = (Tree)item.Target;
                TraverseTree(subTree);
            }
        }
    }
是否可以使用Git获取当前的Reository结构,包括新文件

我想显示当前存储库文件结构,包括已添加但尚未提交的新文件

看起来你想要的是之类的东西

这可以通过
repo.RetrieveStatus()
方法使用LibGit2Sharp轻松完成


为了更广泛地了解该功能及其用例,我建议您查看一下测试套件。

太好了,谢谢!我还有一个问题:
repo.RetrieveStatus()
提供了修改文件的摘要。如果我想显示当前的文件树结构,我必须实际遍历文件夹/文件,并根据
RepositoryStatus
对象更新UI?因为存储库树只包含已暂存的内容,所以您可以找到
Repository.Index
暂存的内容。
Repository.Head.Tip.Tree
包含已提交的内容。遍历头部的树将允许您显示头部提交的内容。