実際に存在するファイルを削除できません-致命的:pathspec…どのファイルとも一致しませんでした


165

実際に存在するファイルを削除できません-致命的: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

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


15
rm代わりに単にファイルを削除してみましたgit rmか?
Nevik Rehnel 2013

1
@NevikRehnelはい、私はそれを試してみようと思っていましたが、削除するたびにIntelliJ IDEA(私が実行していた)が蘇生したようです。どー!
マシューコーネル

私はEclipseとAttlassian SourceTreeを使用しています...あなたの質問がこの問題の解決に役立ちます。よろしくお願いします!
Manu

を使用git clean -f .idea/workspace.xmlして、追跡されていないファイルを削除できます。
chemturion

回答:


134

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

無視されたすべてのファイルをリストする次のgitコマンドを使用して、それを確認できます。

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

それは大いに役立った、ボリス。ありがとうございました!私は質問を更新して、起こっていた事柄(IDEAなど)を要約しました
Matthew Cornell

23
$>git add .
$>git rm file_Name  

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


2
ファイルの削除中にエラーが発生した場合は、ファイルの削除中に次のような-fを使用できます。$> git rm -f file_Name
Abhinav bhardwaj

1
誰かがrmディレクトリまたはファイルを必要とするとき、それがまだgitバージョン管理下にリストされていない場合は、それをgitに追加する必要はありません。
Mohammad Kermani 2017

8

これは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 mv "final report.odt" temp.odt
git mv temp.odt "Final Report.odt"

ここでも、それはOPの問題ではありませんでした。彼の投稿が明らかにそうであるように、Linuxユーザーには影響しません。私はWindows gitでこの問題を抱えている可能性があり、この質問に出くわす可能性がある他の人のためにそれを含めています。


1
これは、Windowsでパスの一部がgitに記録されているものと異なる場合に発生する可能性があります。Windowsでbashシェルを使用して回避策を講じることができました
Rattle

3

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

TortoiseGitを使用してgitバージョン管理に追加する


1
誰かがrmディレクトリまたはファイルを必要とするとき、それがまだgitバージョン管理の下にリストされていない場合、それをgitに追加する必要はありません!
Mohammad Kermani 2017

0

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

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

  1. フォルダとファイルのコピーを別の場所に作成します。
  2. どういうわけか無視されていたオリジナルを削除しました。
  3. この更新をコミットしてプッシュします。
  4. 最後に、ファイルとフォルダーを追加し直したところ、gitは期待どおりにそれを確認して対応していました。
  5. これをステージングしてコミットすれば、準備完了です。:)

0

個人的には、このシナリオで同様のエラーメッセージに遭遇しました。

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

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


0

そのようなステップは私を助けました:

  1. git add。
  2. git stash

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.