1

1)を使用してみrepo.Index.Remove(item.Filename);ましたが、次のようになります。

追加情報:ファイル'file.txt'を削除できません。現在のステータスは「変更済み」です。

私はそれを行う方法を見つける必要がありますgit rm file.txt -f(つまり、強制的に削除します)。

git rm file.txt --cached2)ファイルがリポジトリからのみ削除される(削除のためにステージングされる)が、ファイルシステムに保持されるようにする方法が必要です。LibGit2Sharpでこれを行う方法はありますか?

repo.Index.Remove()3)指定されたパスがリポジトリの一部になったことがない場合(つまり、ファイルが追跡されていない場合)に呼び出しても大丈夫ですか?

4

2 に答える 2

1

git rm file.txt -f(つまり強制削除)を実行する方法を見つける必要があります。

これを行うための組み込みの方法はありません。課題トラッカーで機能リクエストを開く価値があるかもしれません。

gitrmfile.txtを実行する方法が必要です--cached

repo.Index.Unstage()コンテンツチェックは行いませんが、ニーズに合っていると思います。メソッドのドキュメントには、最新のコミット以降のファイルのすべての変更(追加、更新、または削除)がステージング領域から削除されると記載されています。

指定されたパスがリポジトリの一部になったことがない場合(つまり、ファイルが追跡されていない場合)、repo.Index.Remove()を呼び出しても大丈夫ですか?

いいえ、そうではありません;)gitと同様に、次のいずれかのステータスのファイルを削除しようとすると、LibGit2Sharpがスローされます。

  • FileStatus.Nonexistent
  • FileStatus.Removed
  • FileStatus.Modified
  • FileStatus.Untracked

これらのステータスの意味の説明は、ここにあります。

于 2012-05-17T16:50:52.560 に答える
0

これでうまくいくようですgit rm -f

File.Delete(RepositoryFullPath + "/" + item.Filename);

if (!item.Status.HasFlag(LibGit2Sharp.FileStatus.Untracked))
{
    repo.Index.Stage(RepositoryFullPath + "/" + item.Filename);
}

どうすればいいのかまだわかりませ--cachedん。

于 2012-05-17T15:58:57.057 に答える