Git Shell:我们如何从未跟踪的文件中删除特定文件

问题描述 投票:0回答:5

我希望使用 shell 命令从 git 中未跟踪的文件中删除特定文件。但正如我所搜索的,只有像这样的解决方案

-f - force, 
-d - directories too, 
-x - remove ignored files too.

让我们将文件视为gitignore.gitignore,每当我尝试使用命令git rm gitignore.gitignore来解决这个问题时,我都会失败。希望得到任何预期结果。

git shell gitignore
5个回答
30
投票

如果文件没有被 git 跟踪,那么删除它就不是 git 的工作。只需使用普通的 shell 命令,例如

rm
而不是
git rm

如果您想删除所有未跟踪的文件,您可以执行

git clean


5
投票

可能只需要一个

git clean -df
-n 可以方便地首先仔细检查你正在做什么。

NAME
       git-clean - Remove untracked files from the working tree

OPTIONS
       -d
           Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different Git repository, it is not removed by default. Use -f option twice if
           you really want to remove such a directory.

       -f, --force
           If the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or directories unless given -f, -n or -i. Git will refuse to delete
           directories with .git sub directory or file unless a second -f is given.

       -n, --dry-run
           Don't actually remove anything, just show what would be done.

但是,如果您有未提交的更改,则需要使用

git checkout -- .


5
投票

您可以通过以下方式使用带有

-i
标志的交互模式

git clean -id

d
也适用于目录),然后您可以选择按
a
迭代文件和文件夹,并选择您想要删除和不想删除的内容。


2
投票

如果您的工作树中有任何文件并且您想删除它,您将使用

git rm

直接来自doc

git-rm
- 从工作树和索引中删除文件

现在为什么要使用

git rm
而不是
rm
从工作树中删除文件

答案是 - 如果您只使用

rm
,则需要接着使用
git add <fileRemoved>
git rm
只需一步即可完成此操作。

您还可以使用 git rm --cached ,这将从索引中删除文件(将其暂存以便在下一次提交时删除),但将副本保留在本地文件系统中。

这部分取自https://stackoverflow.com/a/7434558

要删除未跟踪的文件,您可以使用

rm
来删除源树中包含的跟踪文件,您将使用
git rm


0
投票

这是正确答案 git 恢复

© www.soinside.com 2019 - 2024. All rights reserved.