我在git的状态列表中发现了几个文件:
?? file1
?? filepath/file2
?? file3
?? filepath/file4
我一直忽略它们并继续提交、推送、拉取,而现在状态报告中显示的这些文件太多了。
我尝试使用git rm file1命令删除它,但是失败了。它提示致命错误:路径不匹配任何文件。
谢谢!
我在git的状态列表中发现了几个文件:
?? file1
?? filepath/file2
?? file3
?? filepath/file4
我一直忽略它们并继续提交、推送、拉取,而现在状态报告中显示的这些文件太多了。
我尝试使用git rm file1命令删除它,但是失败了。它提示致命错误:路径不匹配任何文件。
谢谢!
这些是未被跟踪的文件,即存在于您的文件系统中但从未通过 git add
添加到您的存储库中的文件。
如果您不需要它们,可以直接使用rm
删除它们。或者如果您想要全部删除,只需使用git clean -fd
。如果您在删除之前想进行一些过滤操作,则可以执行以下操作:
git ls-files -o --exclude-standard | grep 'my custom filter' | xargs rm
如果您想保留这些文件,但希望git status
忽略它们,请将它们添加到.gitignore
文件中。有关详细信息,请阅读man gitignore
。
-d
标志本来是用来告诉Git也要删除未被跟踪的目录的。也许有一个单独的Git代码库在里面?请检查是否存在file/.git
目录。 - dmedvinsky-f
两次选项,就像 git help clean
所说的那样。即 git clean -dff
。 - dmedvinskygit clean -n
命令;非常仔细地查看输出结果,然后再运行 git clean -fd
命令。 - Tylergit status | grep "condition" | xargs rm
。 - Gautam Sreekumar你可以暂时将它们添加到你的.gitignore
文件中,这样它们就不会出现在git status
里,避免你不小心将它们添加到仓库中。
git rm 文件名
是无法起作用的,因为这些文件还没有被添加到你的代码仓库中,所以没有什么可删除的。
我使用这种方法,对我很有效:
git status | grep file | xargs rm
-s
参数的情况下运行git status
命令,你会得到一个解释,说明这些是未跟踪的文件 - 如果git status -s
的输出令人困惑,那么这种形式可能更有帮助。 - Mark Longair