【问题标题】:unable to remove file that really exists - fatal: pathspec ... did not match any files无法删除真正存在的文件 - 致命:pathspec ...不匹配任何文件
【发布时间】:2013-04-10 16:19:44
【问题描述】:

无法删除真正存在的文件 - 致命: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

更新

@Nevik 和@Boris 的回答很有帮助。我意识到我对正在发生的许多事情感到困惑,其中一些被 IntelliJ IDEA(我通常喜欢的工具,顺便说一句)加剧了。首先,来自git rm 的“致命:pathspec”消息既无用又具有误导性。

其次,我在.gitignore 中有该文件,但在问我问题之前已将其删除。但是,它也独立于 git 包含在 IDEA 的 Ignored Files 功能中,并在项目查看器中显示(而不是未跟踪,如 git status 所示)。最后,我在试验时运行了 IDEA,看起来它正在我的rm 之后立即重新创建文件。

我的收获是,如果我对 Git 行为感到困惑,请确保退出 IDEA 并在调试时仅在命令行(和 gitk)中工作。

【问题讨论】:

  • 你试过用rm而不是git rm简单地删除文件吗?
  • @NevikRehnel 是的,我曾想过尝试一下,谢谢,但看起来 IntelliJ IDEA(我运行过的)在每次删除后都会复苏。哇!
  • 我正在使用 Eclipse 和 Attlassian SourceTree...您的问题帮助我解决了这个问题。谢谢!
  • 您可以使用git clean -f .idea/workspace.xml 删除未跟踪的文件。

标签: git intellij-idea


【解决方案1】:

您的文件.idea/workspace.xml 不受 git 版本控制。您尚未添加它(检查 git status/Untracked 文件)或忽略它(使用 .gitignore 或 .git/info/exclude 文件)

您可以使用以下 git 命令验证它,该命令列出了所有被忽略的文件:

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

【讨论】:

  • 这很有帮助,鲍里斯。谢谢!我更新了我的问题以总结正在发生的事情(IDEA 等)
  • 只是给其他人的简短说明:接受的答案对我不起作用,当我注意到我的 .gitignore 不在我认为的最高级别时,我快要发疯了,但在我的一个模块中(谢谢,PyCharm)。一旦我把它放在它所属的地方,问题就解决了。文档也谈到了这一点:git-scm.com/book/en/v2/… under "Note"。
【解决方案2】:
$>git add .
$>git rm file_Name  

它有效。您使用右键单击添加新文件-> 创建新文件,然后立即将其删除。该文件将进入未跟踪文件列表。

【讨论】:

  • 如果它在删除文件时给你错误,那么在删除文件时你可以使用 -f 类似的东西: $>git rm -f file_Name
  • 当某人需要rm一个目录或一个文件时,如果它尚未在git版本控制下列出,他/她不需要将它添加到git。
  • 致命:pathspec '.idea' 没有匹配任何文件
【解决方案3】:

我知道这不是 OP 的问题,但我在完全不同的基础上遇到了同样的错误,所以我只是想把它放在这里,以防其他人也有同样的错误。这是特定于 Windows 的,我认为不会影响 Linux 用户。

我有一个 LibreOffice 文档文件,称之为 final report.odt。后来我把它的大小写改为Final Report.odt。在 Windows 中,这甚至不算作重命名。 final report.odtFinal Report.odtFiNaL RePoRt.oDt 都是一样的。在 Linux 中,这些都是不同的。

当我最终转到git rm "Final Report.odt" 并得到“路径规范与任何文件不匹配”错误时。只有当我在添加文件时使用原始大小写时——git rm "final report.odt"——才起作用。

经验教训:改变我应该做的案例:

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

同样,这不是这里的 OP 的问题;并且不会影响 Linux 用户,正如他的帖子所表明的那样。我只是将它包含在其他可能在 Windows git 中遇到此问题并偶然发现此问题的人。

【讨论】:

  • 如果路径的任何部分与 git 中记录的内容不同,则可能在 Windows 上发生这种情况。我能够通过在 Windows 中使用 bash shell 来解决问题
【解决方案4】:

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

【讨论】:

  • 当某人需要rm一个目录或文件时,如果它尚未在git版本控制下列出,他/她不需要将其添加到git!
【解决方案5】:

这些步骤帮助了我:

  1. git 添加。
  2. git 存储

【讨论】:

    【解决方案6】:

    在我的例子中,有一些完全奇怪的事情,我不确定原因是什么。之前提交了整个文件夹。我可以在 Git、Windows Explorer 和 GitHub 中看到它,但是我对文件夹本身和其中的文件所做的任何更改都被忽略了。使用 git check-ignore 查看忽略它的内容,并尝试使用 git rm --cached 删除它没有任何影响。更改无法上演。

    我通过以下方式修复它:

    1. 在其他位置复制文件夹和文件。
    2. 我删除了不知何故被忽略的原件。
    3. 提交并推送此更新。
    4. 最后,我重新添加了文件和文件夹,git 再次看到并按预期做出反应。
    5. 暂存并提交,一切顺利! :)

    【讨论】:

      【解决方案7】:

      我个人在这种情况下偶然发现了类似的错误消息:

      我创建了一个一直的文件夹,所以自然只要是空的,输入git add *就不会考虑这个空文件夹。因此,当我尝试运行 git rm -r * 或简单地运行 git rm my_empty_folder/ -r, 时,我收到了该错误消息。

      解决方法是不使用 git 直接删除它:rm -r my_empty_folder/ 或者在这个文件夹中创建一个数据文件然后添加它(git add my_no_long_empty_folder

      【讨论】:

        【解决方案8】:

        对我有用的是运行:

        1. git add .idea/workspace.xml
        2. git rm -r --cached .idea/*

        【讨论】:

          【解决方案9】:

          暂时将 .gitignore 移动到 .gitignore.bck

          【讨论】:

            猜你喜欢
            • 2019-03-04
            • 2011-03-17
            • 2013-12-09
            • 1970-01-01
            • 1970-01-01
            • 2012-11-29
            • 2015-02-04
            • 1970-01-01
            • 2022-10-12
            相关资源
            最近更新 更多