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