无法删除确实存在的文件-致命:pathspec…与任何文件都不匹配


165

无法删除确实存在的文件-致命: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(我通常喜欢的工具,顺便说一句)而更加恶化。首先,来自git rm的'fatal:pathspec'消息既无益又具有误导性(以这位原始用户的观点)。其次,我在.gitignore中有该文件,但是在询问我的问题之前已将其删除。但是,它也独立于git包含在IDEA的“忽略文件”功能中,并在项目查看器中显示(而不是未跟踪,如git状态所示)。最终,我在进行实验时运行了IDEA,看起来好像在RM之后立即重新创建了文件。因此,我的收获是,如果我感到混乱的Git行为,请确保在调试时退出IDEA并在命令行(和gitk)中单独工作。SO用户真棒。再次感谢!


15
您是否尝试过使用rm而不是删除文件git rm
Nevik Rehnel

1
@NevikRehnel是的,谢谢,但是我想尝试一下,但是每次删除后,似乎都恢复了IntelliJ IDEA(我正在运行)。h!
马修·康奈尔

我正在使用Eclipse和Attlassian SourceTree ...您的问题帮助我解决了这个问题。谢谢 !
Manu

您可以git clean -f .idea/workspace.xml用来删除未跟踪的文件。
chemturion '18 -10-27

Answers:


134

您的文件.idea/workspace.xml不受git版本控制。您尚未添加它(检查git status /未跟踪文件)或忽略了它(使用.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

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
如果路径的任何部分与git中记录的内容不同,则在Windows上可能会发生这种情况。我能够通过在Windows中使用bash shell来解决
-Rattle

3

如果将文件idea/workspace.xml 添加到.gitignore(或其父文件夹),则只需add手动将其添加到git版本控制即可。您也可以使用TortoiseGit添加它。在下一次推送之后,您将看到问题已解决。

使用TortoiseGit添加到git版本控制


1
当某人需要rm目录或文件时,如果尚未在git版本控制下列出,则无需将其添加到git中!
Mohammad Kermani'4

0

以我为例,我完全不确定原因是什么。整个文件夹之前已提交。我可以在Git,Windows资源管理器和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



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.