本当に存在するファイルを削除できません - 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ユーザーは最高です。再度、感謝します!
あなたのファイル.idea/workspace.xml
はgitのバージョン管理下にありません。まだ追加していないか(git status/Untracked filesを確認)、または無視しています(.gitignoreまたは.git/info/excludeファイルを使用)。
無視されたすべてのファイルを一覧表示する次のgitコマンドを使用して確認できます。
git ls-files --others -i --exclude-standard
$>git add .
$>git rm file_Name
できます。あなたは右クリック - >新しいファイルを作成することを使用して新しいファイルを追加し、その後すぐにそれを削除します。ファイルは追跡されていないファイルリストに移動します。
これはOPの問題ではないことを私は知っていますが、私は全く異なる根拠で同じエラーに遭遇したので、他の誰かが同じものを持っている場合はここでそれを落としたいと思いました。これはWindows固有のもので、Linuxユーザーには影響がないと私は思います。
LibreOfficeのdocファイルを持っていました。これを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"
繰り返しますが、これはOPの問題ではありません。彼の投稿が明らかにしているように、そしてLinuxユーザーには影響しないでしょう。私はちょうどWindows gitでこの問題を抱えているかもしれない他の人たちのためにそれを含めていて、そしてこの質問につまずく。
あなたのファイルidea/workspace.xml
が.gitignore(またはその親フォルダ)に追加された場合、バージョン管理のために手動でadd
するだけです。また、TortoiseGitを使って追加することもできます。次のプッシュの後、あなたはあなたの問題が解決したことを見るでしょう。
個人的に私はこのシナリオで同様のエラーメッセージを見つけました:
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
)。
私の例では、その原因が何であるかわからないという、まったく奇妙なことがありました。フォルダ全体が以前にコミットされました。 Git、Windows Explorer、GitHubで見ることができましたが、フォルダ自体とその中のファイルに加えた変更は無視されました。何を無視していたかを確認するためにgit check-ignore
を使用し、git rm --cached
を使用してそれを削除しようとしても影響はありません。変更はステージングできませんでした。
私はそれを修正しました: