Не удалось удалить файл, который действительно существует - fatal: pathspec... не соответствует файлам

невозможно удалить файл, который действительно существует - fatal: pathspec... не соответствует файлам

У меня есть файл под элементом управления git, который просто не будет удален. Команда failing:

$ git rm .idea/workspace.xml
fatal: pathspec '.idea/workspace.xml' did not match any files

Ниже я перечисляю содержимое каталога, ветки и т.д. До сих пор я пробовал rm изнутри каталога и избегаю на всякий случай, когда есть забавные персонажи, и я действительно в тупике. Я искал в Интернете и SO, но не мог найти это конкретно. Спасибо заранее!

$ 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 .
[email protected] 33 matt  staff   1122 Apr 10 09:40 ..
[email protected]  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) во время отладки. И эти пользователи SO являются удивительными. Еще раз спасибо!

Ответ 1

Ваш файл .idea/workspace.xml не находится под управлением git. Вы еще не добавили его (проверьте git статус/без отслеживания файлов) или проигнорируйте его (используя файлы .gitignore или .git/info/exclude)

Вы можете проверить его, используя следующую команду git, в которой перечислены все проигнорированные файлы:

git ls-files --others -i --exclude-standard

Ответ 2

$>git add .
$>git rm file_Name  

Это работает. Вы добавляете новый файл, используя правый клик → создайте новый файл и сразу же удаляете его. Файл перейдет в список незафиксированных файлов.

Ответ 3

Я знаю, что это не проблема с OP, но я столкнулся с той же ошибкой на совершенно другой основе, поэтому я просто хотел опустить ее здесь на случай, если у кого-то еще будет то же самое. Это зависит от 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 not not files files". Только когда я использовал оригинальный корпус в момент добавления файла - git rm "final report.odt" - он работал.

Извлеченный урок: изменить дело, которое я должен был сделать:

git mv "final report.odt" temp.odt
git mv temp.odt "Final Report.odt"

Опять же, это не было проблемой для ОП здесь; и не повлияет на пользователя Linux, как видно из его постов. Я просто включил его для других, у кого может быть эта проблема в Windows Git и наткнуться на этот вопрос.

Ответ 4

Если ваш файл idea/workspace.xml добавлен в .gitignore (или его родительскую папку), просто add он будет вручную до контроля версии git. Также вы можете добавить его с помощью TortoiseGit. После следующего нажатия вы увидите, что ваша проблема решена.

Add to git versioning using TortoiseGit

Ответ 5

В моем случае было что-то совершенно странное, что я не знаю, в чем причина. Целая папка была зафиксирована ранее. Я мог видеть это в Git, Windows Explorer и GitHub, но любые изменения, которые я вносил в саму папку и файлы в ней, игнорировались. Использование git check-ignore для просмотра того, что его игнорировало, и попытка удалить его с помощью git rm --cached оказали никакого влияния. Изменения не могли быть организованы.

Я исправил это:

  1. Делаем копию папки и файлов в другом месте.
  2. Я удалил оригинал, который как-то игнорировался.
  3. Зафиксируйте и отправьте это обновление.
  4. Наконец, я добавил файлы и папки обратно, и git снова увидел и отреагировал на них, как и ожидалось.
  5. Постановка и совершение этого, и вы готовы идти! :)

Ответ 6

Лично я наткнулся на подобное сообщение об ошибке в этом сценарии:

Я создал пустую папку, поэтому, пока она пуста, ввод git add * не учитывает эту пустую папку. Поэтому, когда я попытался запустить git rm -r * или просто git rm my_empty_folder / -r, я получил это сообщение об ошибке.

Решение состоит в том, чтобы просто удалить его без git: rm -r my_empty_folder/ или создать файл данных в этой папке, а затем добавить его (git add my_no_long_empty_folder)

Ответ 7

Переместить временно .gitignore на .gitignore.bck