我希望使用 shell 命令从 git 中未跟踪的文件中删除特定文件。但正如我所搜索的,只有像这样的解决方案
-f - force,
-d - directories too,
-x - remove ignored files too.
让我们将文件视为gitignore.gitignore,每当我尝试使用命令git rm gitignore.gitignore来解决这个问题时,我都会失败。希望得到任何预期结果。
如果文件没有被 git 跟踪,那么删除它就不是 git 的工作。只需使用普通的 shell 命令,例如
rm
而不是 git rm
。
如果您想删除所有未跟踪的文件,您可以执行
git clean
。
可能只需要一个
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 -- .
您可以通过以下方式使用带有
-i
标志的交互模式
git clean -id
(
d
也适用于目录),然后您可以选择按a
迭代文件和文件夹,并选择您想要删除和不想删除的内容。
如果您的工作树中有任何文件并且您想删除它,您将使用
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
这是正确答案 git 恢复