Git:如何删除所有未跟踪的文件?


39

我正在使用Git进行版本控制。现在,我想在本地计算机上删除存储库中所有未跟踪的文件。

我可以用

git status

列出这些文件,但是如何删除所有这些文件?


1
难道您只是将所有文件检出到您的计算机的另一位置,然后删除旧版本吗?
Nifle 2011年

1
当然可以,但是没有更简单的方法吗?
RoflcoptrException 2011年

Answers:


54

如果忽略它,请使用git clean -xf。您可以这样做,git clean -df但这也会删除未跟踪的目录。使用-n的干式运行。

看到清理未跟踪


3
-x忽略忽略..
UpAndAdam

8
-xf将删除忽略的文件,这可能不是您想要的。使用-nf并继续小心。请参阅:stackoverflow.com/questions/61212/...
Mr_and_Mrs_D

2
记住,这可能会删除您的环境/ IDE文件夹(例如.vagrant或.idea(phpstorm))
timhc22 2014年

1
小心!gitignored文件将被永久清除。-100
Sepehr


5

用户互动方式:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y

-i表示交互式
-f表示文件
-d表示目录

注意: 添加-n--dry-run仅检查其作用。


3

关于git clean -f未跟踪的文件和目录,有一个微妙的值得一提的地方。如果您有一个未跟踪的目录,其中包含git clean -f一些尚未被跟踪的文件,那么将不会删除这些未跟踪的文件。

换句话说,并非git clean -f所有情况都将删除所有未跟踪的文件。更好的解释git clean -f是,它会删除不在未跟踪目录中的所有未跟踪文件。

git clean -f -d 必须用于删除未跟踪目录中的未跟踪文件,并且似乎也无法删除所有未跟踪文件,而不删除仅包含未跟踪文件的未跟踪目录。

使用git clean -f -d -n真正看到你想要做的恢复您的工作目录会是什么,没有任何未跟踪文件的内容。然后用git clean -f -d做。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.