Git:如何删除在git status -s中列出的带有“??”的文件?这些是我添加到本地仓库的文件。

4

我在git的状态列表中发现了几个文件:

?? file1

?? filepath/file2

?? file3

?? filepath/file4

我一直忽略它们并继续提交、推送、拉取,而现在状态报告中显示的这些文件太多了。

我尝试使用git rm file1命令删除它,但是失败了。它提示致命错误:路径不匹配任何文件。

谢谢!


顺便提一下,如果你在不带 -s 参数的情况下运行 git status 命令,你会得到一个解释,说明这些是未跟踪的文件 - 如果 git status -s 的输出令人困惑,那么这种形式可能更有帮助。 - Mark Longair
4个回答

14

这些是未被跟踪的文件,即存在于您的文件系统中但从未通过 git add 添加到您的存储库中的文件。

如果您不需要它们,可以直接使用rm 删除它们。或者如果您想要全部删除,只需使用git clean -fd。如果您在删除之前想进行一些过滤操作,则可以执行以下操作:

git ls-files -o --exclude-standard | grep 'my custom filter' | xargs rm

如果您想保留这些文件,但希望git status忽略它们,请将它们添加到.gitignore文件中。有关详细信息,请阅读man gitignore


我执行了 git clean -fd 命令,它删除了所有文件,但好像只剩下一个目录。?? file/ @dmedvinsky - KRB
1
好的,-d标志本来是用来告诉Git也要删除未被跟踪的目录的。也许有一个单独的Git代码库在里面?请检查是否存在file/.git目录。 - dmedvinsky
如果你想删除它,也可以使用 -f 两次选项,就像 git help clean 所说的那样。即 git clean -dff - dmedvinsky
2
请称呼我为多虑的人,但我更喜欢使用 git clean -n 命令;非常仔细地查看输出结果,然后再运行 git clean -fd 命令。 - Tyler
你还可以使用 git status | grep "condition" | xargs rm - Gautam Sreekumar

1

你可以暂时将它们添加到你的.gitignore文件中,这样它们就不会出现在git status里,避免你不小心将它们添加到仓库中。

git rm 文件名是无法起作用的,因为这些文件还没有被添加到你的代码仓库中,所以没有什么可删除的。


0

我使用这种方法,对我很有效:

git status | grep file | xargs rm

0

这些文件未被跟踪,因此 git rm 无法使用(它是从 Git 控制中删除文件的命令)。你基本上有两个选择:

  • 忽略这些文件。阅读 gitignore。你可以将忽略模式添加到一个 .gitignore 文件中,然后提交并与同事共享,或者在每个仓库的 .git/info/exclude 中,或者在每个用户的 .config/git/ignore 文件中。

  • 删除这些文件。当你不使用 Git 时,任何工具都可以用来删除文件。此外,Git 还提供了 git clean 来帮助你完成这个任务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接