Невозможно удалить файл, который действительно существует - fatal: pathspec ... не найдено ни одного файла
Невозможно удалить файл, который действительно существует - fatal: pathspec ... не найдено ни одного файла
У меня есть файл под контролем git, который просто не будет удален. Ошибка команды:
$ git rm .idea/workspace.xml
fatal: pathspec '.idea/workspace.xml' did not match any files
Ниже я перечисляю содержимое каталога, ветви и т. Д. До сих пор я пробовал rm из каталога, и экранирование на случай, если есть забавные символы, и я действительно озадачен. Я искал в Интернете и ТАК, но не смог найти это специально. Заранее спасибо!
$ git branch -a
* dot-output
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/modelspace
$
$ git status
# On branch dot-output
# Untracked files:
# ...
$ ls .idea/
ant.xml encodings.xml modules.xml workspace.xml
compiler.xml inspectionProfiles scopes
copyright libraries testrunner.xml
dictionaries misc.xml vcs.xml
$ ls -al
total 56
drwxr-xr-x 16 matt staff 544 Apr 10 11:33 .
drwxr-xr-x@ 33 matt staff 1122 Apr 10 09:40 ..
-rw-r--r--@ 1 matt staff 12292 Apr 10 11:19 .DS_Store
drwxr-xr-x 18 matt staff 612 Apr 10 11:39 .git
-rw-r--r-- 1 matt staff 98 Mar 6 13:40 .gitignore
drwxr-xr-x 16 matt staff 544 Apr 10 11:34 .idea
-rw-r--r-- 1 matt staff 1113 Feb 25 11:07 README
...
$ head -n 2 .idea/workspace.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
$ git rm .idea/workspace.xml
fatal: pathspec '.idea/workspace.xml' did not match any files
ОБНОВЛЕНИЕ: ответы от Невика и Бориса очень помогли. Я понял, что меня смутил ряд вещей, некоторые из которых были усугублены IntelliJ IDEA (инструмент, который я вообще люблю, кстати, BTW). Во-первых, сообщение "fatal: pathspec" от git rm является бесполезным и вводящим в заблуждение (по мнению этого ванильного пользователя). Во-вторых, у меня был файл в.gitignore, но я удалил его, прежде чем задавать вопрос. Однако он также был включен в функцию "Игнорируемые файлы" IDEA независимо от git и отображался как таковой в средстве просмотра проекта (вместо неотслеживаемого, как показывает состояние git). Наконец, у меня была запущена IDEA, когда я экспериментировал, и похоже, что он воссоздает файл сразу после моего rm. Итак, мой вывод: если у меня запутанное поведение Git, убедитесь, что во время отладки выйдите из IDEA и работайте в командной строке (и gitk). И что ТАК пользователи потрясающие. Еще раз спасибо!
9 ответов
Ваш файл .idea/workspace.xml
не находится под контролем git-версии. Вы либо еще не добавили его (проверьте состояние git / файлы без отслеживания), либо проигнорировали его (используя файлы.gitignore или.git / info / exclude)
Вы можете проверить это с помощью следующей команды git, которая выводит список всех игнорируемых файлов:
git ls-files --others -i --exclude-standard
$>git add .
$>git rm file_Name
Оно работает. Вы добавляете новый файл, используя правую кнопку мыши -> создать новый файл, и сразу после этого удаляете его. Файл перейдет в список неотслеживаемых файлов.
Я знаю, что это не проблема ОП, но я столкнулся с той же ошибкой на совершенно другой основе, поэтому я просто хотел опустить ее здесь на тот случай, если у кого-то еще будет то же самое. Это зависит от Windows, и я предполагаю, что это не влияет на пользователей Linux.
У меня был файл документа LibreOffice, назовите его final report.odt
, Я позже изменил свой случай на Final Report.odt
, В Windows это даже не считается переименованием. final report.odt
, Final Report.odt
, FiNaL RePoRt.oDt
все одинаковые. В Linux все они разные.
Когда я в конце концов пошел в git rm "Final Report.odt"
и получил ошибку "pathspec не соответствует ни одному файлу". Только когда я использую оригинальный корпус во время добавления файла - git rm "final report.odt"
- это сработало.
Извлеченный урок: изменить дело, которое я должен был сделать:
git rename "final report.odt" temp.odt
git rename temp.odt "Final Report.odt"
Опять же, это не было проблемой для ОП здесь; и не будет влиять на пользователя Linux, как видно из его постов. Я просто включил его для других, у кого может быть эта проблема в Windows Git и наткнуться на этот вопрос.
Если ваш файл idea/workspace.xml
просто добавляется в.gitignore (или его родительскую папку) add
это вручную, чтобы git контроля версий. Также вы можете добавить его с помощью TortoiseGit. После следующего нажатия вы увидите, что ваша проблема решена.
Что сработало для меня, так это запустить:
-
git add .idea/workspace.xml
-
git rm -r --cached .idea/*
В моем случае было что-то совершенно странное, что я не знаю, в чем причина. Целая папка была зафиксирована ранее. Я мог видеть это в Git, Windows Explorer и GitHub, но любые изменения, которые я вносил в саму папку и файлы в ней, игнорировались. С помощью git check-ignore
чтобы увидеть, что игнорирует его, и пытается удалить его, используя git rm --cached
не имел никакого влияния. Изменения не могли быть организованы.
Я исправил это:
- Делаем копию папки и файлов в другом месте.
- Я удалил оригинал, который как-то игнорировался.
- Зафиксируйте и отправьте это обновление.
- Наконец, я добавил файлы и папки обратно, и git снова увидел и отреагировал на них, как и ожидалось.
- Постановка и совершение этого, и вы готовы идти!:)
Лично я наткнулся на подобное сообщение об ошибке в этом сценарии:
Я создал папку, которая была пустой, поэтому, естественно, до тех пор, пока она пуста, набрав git add *
не будет принимать эту пустую папку во внимание. Поэтому, когда я пытался бежать git rm -r *
или просто мерзавец rm my_empty_folder/ -r,
Я получил это сообщение об ошибке.
Решение состоит в том, чтобы просто удалить его без мерзавца: rm -r my_empty_folder/
или создайте файл данных в этой папке и затем добавьте его (git add my_no_long_empty_folder
)