无法删除真正存在的文件——致命的: pathspec... 不匹配任何文件

无法删除真正存在的文件——致命的: 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的“致命的: pathspec”消息既没有帮助,也具有误导性。

其次,我在 .gitignore中有这个文件,但在问我问题之前已经删除了它。但是,它也包含在 IDEA 的 Ignored Files 特性中,与 git 无关,并且在项目查看器中显示(而不是像 git status 显示的那样未被跟踪)。最后,我在实验时运行了 IDEA,它看起来像是在我的 rm之后立即重新创建文件。

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

215218 次浏览

您的文件 .idea/workspace.xml不受 git 版本控制。您要么还没有添加它(检查 git status/Untrack 文件) ,要么忽略它(使用。吉蒂诺尔或者。Git/info/ 排除文件)

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

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

暂时搬到. gitignore.bck

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

Add to git versioning using TortoiseGit

$>git add .
$>git rm file_Name

有用。使用右键单击-> create new file 添加新文件,然后立即删除它。该文件将转到未跟踪的文件列表。

在我的例子中,有一些非常奇怪的事情,我不知道原因是什么。之前提交了整个文件夹。我可以在 Git、文件资源管理器和 gitHub 中看到它,但是我对文件夹本身和其中的文件所做的任何更改都被忽略了。使用 git check-ignore查看是什么忽略了它,并尝试使用 git rm --cached删除它没有任何影响。无法进行更改。

我通过以下方式修好了它:

  1. 在另一个位置复制文件夹和文件。
  2. 我删除了被忽略的原件。
  3. 提交并推送此更新。
  4. 最后,我将文件和文件夹添加回去,git 再次按照预期查看和响应它。
  5. 舞台和承诺这一点,你是好去! :)

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

我有一个 LibreOffice 文档,叫做 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 和偶然发现这个问题。

就我个人而言,在这个场景中我偶然发现了一个类似的错误消息:

我创建了一个已经是 空荡荡的的文件夹,所以只要它是空的,键入 git add *就不会考虑这个空文件夹。因此,当我尝试运行 git rm -r *或者仅仅是 gitrm my_empty_folder/ -r,时,我得到了错误消息。

解决方案是简单地删除它而不用 git: rm -r my_empty_folder/,或者在这个文件夹中创建一个数据文件,然后添加它(git add my_no_long_empty_folder)

帮助了我:

  1. Git add.
  2. 藏起来

对我有效的办法是逃跑:

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