1)我尝试使用repo.Index.Remove(item.Filename);
,但它给了我:
其他信息:无法删除文件'file.txt'。它的当前 状态为“已修改”。
我需要找到一种方法git rm file.txt -f
(即强制移除)。
2)我需要一种方法来执行git rm file.txt --cached
,以便只从存储库中删除文件(暂存以进行删除),但仍将其保留在文件系统中。有没有办法在LibGit2Sharp中执行此操作?
3)如果给定路径从未成为存储库的一部分(即文件未跟踪),是否可以调用repo.Index.Remove()
?
答案 0 :(得分:1)
我需要找到一种方法来执行git rm file.txt -f(即强制删除)。
没有内置方法可以做到这一点。可能值得在issue tracker中打开功能请求。
我需要一种方法来执行git rm file.txt --cached
虽然不会执行内容检查,但我认为repo.Index.Unstage()
应该符合您的需要。
该方法的文档声明从暂存区域中删除自最近提交(添加,更新或删除)以来文件的所有修改。
如果给定路径从未成为存储库的一部分(即文件未被跟踪),是否可以调用repo.Index.Remove()?
不,它不是;)与git类似,如果有人尝试删除具有以下状态之一的文件,则会抛出LibGit2Sharp:
可以找到这些状态的含义说明 here 。
答案 1 :(得分:0)
这似乎适用于git rm -f
:
File.Delete(RepositoryFullPath + "/" + item.Filename);
if (!item.Status.HasFlag(LibGit2Sharp.FileStatus.Untracked))
{
repo.Index.Stage(RepositoryFullPath + "/" + item.Filename);
}
我还不知道如何做--cached
。