首页 > 解决方案 > 如何使用 libgit2sharp 正确取消暂存文件

问题描述

我正在尽力弄清楚如何使用 libgit2sharp 取消暂存文件。

我目前的方法是从索引中删除文件,但这似乎是删除文件而不是取消暂存它。

        public bool Unstage(params string[] filePaths)
    {
        using (var repo = LocalRepo)
        {
            try
            {
                foreach (var filePath in filePaths)
                {
                    repo.Index.Remove(filePath);
                    repo.Index.Write();
                }
            }
            catch (Exception ex)
            {
                return false;
            }
        }

        return true;
    }

我也尝试过软重置,但我不知道如何传入文件名或在重置函数重载之一中使用 commitish 参数。

一直在尝试关注这篇文章:为什么有两种方法可以在 Git 中取消暂存文件?,但我似乎无法弄清楚如何在 libgit2sharp 中重新创建该方法。

标签: c#gitlibgit2sharp

解决方案


经过一段时间的搜索,我终于发现 libgit2sharp 有一个 Commands 静态类,几乎所有你需要的命令都内置并最终这样做:

      public bool Unstage(params string[] filePaths)
    {
        using (var repo = LocalRepo)
        {
            try
            {
                foreach (var filePath in filePaths)
                {
                   Commands.Unstage(repo, filePath);
                }
            }
            catch (Exception ex)
            {
                return false;
            }
        }

        return true;
    }

推荐阅读