web-dev-qa-db-ja.com

Gitからファイルを再帰的に削除できません

〜/ bin /にあるGitからすべてのファイルを削除します。

走る

git rm -r --cached ~/.vim/*                      # Thanks to Pate in finding --cached!

私は得る

fatal: pathspec '.vim/colors' did not match any files

〜/ .vim/**が機能しないため、このエラーメッセージは次のパスを使用することを提案します

~/.vim/*        # I get the error
~/.vim/*/*/*    # This removes files from the index at ~/.vim/folderA/folderB/file1.txt
~/.vim/*/*      # similar error as to the first PATH

〜/ .vimにあるすべてのファイルとサブディレクトリをGitから削除するにはどうすればよいですか?

-

 git rm -r --cached ~/.vim/*   
 fatal: pathspec '.vim/colors' did not match any files

1 /「*」は必要ありません。

 git rm -r --cached ~/.vim

追跡されたサブファイルを処理します。

2/fatal: pathspec '.vim/colors' did not match any filesは、1 /にリストされているコマンドが機能する前に試行したコマンドの1つを意味し、削除するファイルはもうありません!

# to test that command, first reinitialize the state of the repository
# save first if you have any other current modifications
$ git reset --hard

# then check the rm works
$ git rm -r --cached ~/.vim
rm '.vim/aPath/aFile1'
rm '.vim/aSecondPath/aFile2'
rm '.vim/aThirdPath/aFile3'

# try it again
$ git rm -r --cached ~/.vim
fatal: pathspec '.vim/colors
37
VonC

ローカルに変更があっても削除しますか?

git rm -rf bin/*

または、インデックスから削除し、ファイル自体は保持しますか?

git rm -r --cached bin/*

また試してください:

git help rm
10
Roger Pate

または、再帰的に削除しようとしているディレクトリが.gitignoreリストにある可能性があります。私はこれに遭遇しました。無視リストに./vendorsがあり、。/ vendorsの下に多数のディレクトリがありますが、vendorsのすべてが無視されているため、実際には./vendors/asseticのようなものは削除されていません。無視リストにあったことを忘れてしまいました:)

1
targnation

*が最初に行うことを理解する必要があります。

アプリケーションは*(または他のグロビング文字)を認識しません-グロブのすべての一致を個別の引数として受け取ります。

これをよりよく理解するには、最初のコマンドの前にechoを付けて、何が出力されるかを確認します。

 git rm -r --cached ~/.vim/*

プログラムが操作方法を知らないもの(.vim/colorsを含む)を含め、個々の一致がそれぞれ表示されます。

0
Dustin