如何使用 libgit2sharp 正确取消暂存文件

Posted

技术标签:

【中文标题】如何使用 libgit2sharp 正确取消暂存文件【英文标题】:How to Properly Unstage File With libgit2sharp 【发布时间】:2020-05-24 11:25:13 【问题描述】:

我正在尽力弄清楚如何使用 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 参数。

一直在尝试关注此帖子:Why are there two ways to unstage a file in Git?,但我似乎无法弄清楚如何在 libgit2sharp 中重新创建该方法。

【问题讨论】:

【参考方案1】:

经过一段时间的搜索,我终于发现 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;
    

【讨论】:

以上是关于如何使用 libgit2sharp 正确取消暂存文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在不删除内容的情况下取消暂存大量文件

如何 Git 取消暂存所有暂存文件? [复制]

如何在 git 中取消暂存已删除的文件? [关闭]

10-git-取消暂存的文件

有没有办法让 Git 暂存/取消暂存文件而不是更改?

使用 LibGit2Sharp 克隆 Git 存储库时出现超时错误