web-dev-qa-db-ja.com

本当に存在するファイルを削除できません - fatal:pathspec ...がどのファイルとも一致しませんでした

本当に存在するファイルを削除できません - fatal:pathspec ...がどのファイルとも一致しませんでした

私はgitの管理下にあるファイルを持っていますが、それは単に削除されることはないでしょう。失敗したコマンドは次のとおりです。

$ 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 .
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

UPDATE:NevikとBorisからの回答がとても役に立ちました。私は多くのことが混乱していることに気付きました。その中のいくつかはIntelliJ IDEA(私が一般的に好きなツール、BTW)によって悪化していました。まず、git rmからの 'fatal:pathspec'メッセージは役に立たないと誤解を招くようなものです(このVanillaユーザーの意見では)。次に、ファイルを.gitignoreに保存しましたが、質問する前に削除しました。ただし、gitとは別にIDEAの無視ファイル機能にも含まれており、(gitのステータスが示すように追跡されているのではなく)プロジェクトビューアにそのように表示されていました。最後に、実験中にIDEAを実行しましたが、rmの直後にファイルが再作成されていたようです。ですので、Gitの動作がわからなくなった場合は、デバッグ中にIDEAを終了し、コマンドライン(およびgitk)を正しく実行してください。そしてSOユーザーは最高です。再度、感謝します!

141
Matthew Cornell

あなたのファイル.idea/workspace.xmlはgitのバージョン管理下にありません。まだ追加していないか(git status/Untracked filesを確認)、または無視しています(.gitignoreまたは.git/info/excludeファイルを使用)。

無視されたすべてのファイルを一覧表示する次のgitコマンドを使用して確認できます。

git ls-files --others -i --exclude-standard
114
Boris Brodski
$>git add .
$>git rm file_Name  

できます。あなたは右クリック - >新しいファイルを作成することを使用して新しいファイルを追加し、その後すぐにそれを削除します。ファイルは追跡されていないファイルリストに移動します。

19
gnganpath

これはOPの問題ではないことを私は知っていますが、私は全く異なる根拠で同じエラーに遭遇したので、他の誰かが同じものを持っている場合はここでそれを落としたいと思いました。これはWindows固有のもので、Linuxユーザーには影響がないと私は思います。

LibreOfficeのdocファイルを持っていました。これをfinal report.odtと呼びます。私は後でそのケースをFinal Report.odtに変更しました。 Windowsでは、これは名前の変更とは見なされません。 final report.odtFinal Report.odtFiNaL 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"

繰り返しますが、これはOPの問題ではありません。彼の投稿が明らかにしているように、そしてLinuxユーザーには影響しないでしょう。私はちょうどWindows gitでこの問題を抱えているかもしれない他の人たちのためにそれを含めていて、そしてこの質問につまずく。

7
codingatty

あなたのファイルidea/workspace.xmlが.gitignore(またはその親フォルダ)に追加された場合、バージョン管理のために手動でaddするだけです。また、TortoiseGitを使って追加することもできます。次のプッシュの後、あなたはあなたの問題が解決したことを見るでしょう。

Add to git versioning using TortoiseGit

3
Lord Nighton

個人的に私はこのシナリオで同様のエラーメッセージを見つけました:

emptyとなっているフォルダを作成しました。当然、それが空である限り、git add *を入力してもこの空のフォルダは考慮されません。だから私はgit rm -r *を実行しようとしたり、単にrm my_empty_folder/ -r,をgitしようとしたとき私はそのエラーメッセージを得た。

解決策は、git:rm -r my_empty_folder/を使わずに単純に削除するか、このフォルダ内にデータファイルを作成してから追加することです(git add my_no_long_empty_folder)。

0

私の例では、その原因が何であるかわからないという、まったく奇妙なことがありました。フォルダ全体が以前にコミットされました。 Git、Windows Explorer、GitHubで見ることができましたが、フォルダ自体とその中のファイルに加えた変更は無視されました。何を無視していたかを確認するためにgit check-ignoreを使用し、git rm --cachedを使用してそれを削除しようとしても影響はありません。変更はステージングできませんでした。

私はそれを修正しました:

  1. フォルダとファイルのコピーを別の場所に作成します。
  2. どういうわけか無視されていたオリジナルを削除しました。
  3. このアップデートをコミットしてプッシュします。
  4. 最後に、ファイルとフォルダを追加し直したところ、gitはそれを見て反応しました。
  5. これをステージングしてコミットしてください。 :)
0
Will Strohl