无法从Git递归删除文件

时间:2009-06-28 02:03:00

标签: git rm

我想在〜/ bin /.

中删除Git中的所有文件

我跑

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

我得到了

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

此错误消息建议我使用以下PATH,因为〜/ .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

如何从Git中删除〜/ .vim中的所有文件和子目录?

-

4 个答案:

答案 0 :(得分:37)

 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 /中列出的命令之前尝试过的一个命令,并且没有更多要删除的文件!

# 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

答案 1 :(得分:10)

即使有本地修改,您还想删除它们吗?

git rm -rf bin/*

或者您想从索引中删除但是自己保留文件吗?

git rm -r --cached bin/*

还试试:

git help rm

答案 2 :(得分:1)

或者可能是您尝试递归删除的目录位于.gitignore列表中。我刚遇到这个。我的忽略列表中有./vendors,并且./vendors下有一堆目录,但是由于供应商中的任何内容都被忽略,它实际上并没有删除像./vendors/assetic这样的东西,因为它实际上不在repo中。我忘了它在忽略列表中:)

答案 3 :(得分:0)

你应该先了解*做了什么。

应用程序看不到*(或其他通配符) - 它们将glob的所有匹配作为单独的参数接收。

要更好地理解这一点,请将echo放在第一个命令前面,看看它打印出来的内容:

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

您会看到每个匹配项,包括程序不知道如何操作的内容(包括.vim/colors)。