告诉 Git 可以删除未跟踪的文件

66

可能是重复的问题:
如何从git工作副本中删除未跟踪的文件?

是否有可能告诉git删除未跟踪的文件?主要是类似于重置的东西吗?

示例:

git checkout -- index.php <-- revert my file
git checkout -- master <-- this would revert the entire repo back to the last commit on master, removing (deleting) any and all untracked files as well as reverting committed ones.

我知道在shell上做这件事是很琐碎的。但是我想知道是否可以在Git中完成?


1
git checkout -- master 不会检出分支 master,而是会检出当前提交(HEAD)中名为 master文件 - knittl
2个回答

66

你需要使用git clean,但要加上-df以删除当前目录及其子目录下未被跟踪的文件。加上x可以包括被忽略的文件。

因此,要完全清除您的工作目录,只保留源代码控制中存在的内容,请执行以下命令:

git clean -xdf

点赞确实。http://git-scm.com/docs/git-clean - gp.
2
这是对问题的终极答案。被接受的答案清除了未跟踪目录的内部,但保留了目录本身。 - amertkara

61

您可能正在寻找git clean。这将删除所有未跟踪的文件。默认情况下,它会忽略(不删除).gitignore中的模式,但git clean -x也会清除这些文件。

git clean手册页面中得知:

   -x
       Don't use the ignore rules. This allows removing all untracked
       files, including build products. This can be used (possibly in
       conjunction with git reset) to create a pristine working directory
       to test a clean build.

3
我必须使用-f替代-x。似乎-x对我不起作用,出现了这个错误:fatal: clean.requireForce defaults to true and neither -i, -n nor -f given; refusing to clean - Hlung
3
看起来你的 Git 安装默认需要加上 -f 才能执行操作。因此你需要使用 git clean -f -x 命令。 - Greg Hewgill

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