Невозможно удалить файлы рекурсивно из Git
Я хочу удалить все файлы из Git в ~/bin/.
Я запустил
git rm -r --cached ~/.vim/* # Thanks to Pate in finding --cached!
Я получаю
fatal: pathspec '.vim/colors' did not match any files
Эта ошибка messsage предлагает мне использовать следующие 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
Как удалить все файлы и подкаталоги в ~/.vim из Git?
-
Ответы
Ответ 1
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
Ответ 2
Вы хотите удалить их, даже если есть локальные изменения?
git rm -rf bin/*
Или вы хотите удалить из индекса, но сохранить сами файлы?
git rm -r --cached bin/*
Также попробуйте:
git help rm
Ответ 3
Или может быть, что каталог, который вы пытаетесь рекурсивно удалить, находится в списке .gitignore. Я просто столкнулся с этим. У меня есть. /vendors в моем списке игнорирования, и есть куча каталогов в. /vendors, но поскольку ничего в вендорах игнорируется, оно фактически не удаляет что-либо вроде. /vendors/assetic, потому что это не на самом деле в репо. Я забыл, что это было в списке игнорирования:)
Ответ 4
Вы должны понять, что *
делает бит первым.
Приложения не видят *
(или другие символы подстановки) - они получают все совпадения glob как отдельные аргументы.
Чтобы понять это лучше, поставьте echo
перед первой командой и посмотрите, что она печатает:
git rm -r --cached ~/.vim/*
Вы увидите каждое отдельное совпадение, в том числе то, что программа не знает, как работать (включая .vim/colors
).