提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
git clean
是 Git 中用于清理工作区的命令,主要用于删除未被 Git 跟踪的文件(即未被添加到版本控制的文件)。这些文件通常是临时文件、编译产物、缓存或误创建的文件。以下是对 git clean 的详细介绍:
一、命令介绍
安全预览模式(推荐先使用)
bash
git clean -n
-
作用:模拟删除操作,显示哪些文件会被删除,不会真正执行删除。
-
示例输出 :
Would remove new_file.txt Would remove temp/untracked_folder/
执行删除操作
bash
git clean -f
- 作用:删除所有未跟踪的文件(不包括被忽略的文件)。
- 注意:此操作不可逆,删除后文件无法恢复!
递归删除文件夹
如果未跟踪的文件包含文件夹,使用:
bash
git clean -fd
- 作用:删除所有未跟踪的文件和文件夹。
包含被忽略的文件(谨慎使用)
如果需要删除.gitignore
中指定的被忽略文件,使用:
bash
git clean -fx
- 风险:可能会删除项目运行所需的临时文件(如编译产物、缓存等)。
终极清理(谨慎使用)
bash
git clean -fdx
- 作用:删除所有未跟踪的文件、文件夹,包括被忽略的文件。
- 场景:彻底重置工作区,仅保留Git已跟踪的文件。
建议工作流
- 先使用
git clean -n
预览要删除的文件。 - 确认无误后,使用
git clean -fd
删除未跟踪的文件和文件夹。 - 如果需要包含被忽略的文件,再添加
-x
参数。
注意 :删除前请确保这些文件确实不需要保留,尤其是使用-x
参数时,避免误删重要文件。
二、参数说明
上述 git clean
命令中,参数的缩写及含义如下:
-n
缩写 :--dry-run
作用 :模拟删除操作,仅显示会被删除的文件,不实际执行删除。
用途:预览清理效果,避免误删。
-f
缩写 :--force
作用 :强制删除未跟踪的文件。
注意:
- Git 配置中需设置
clean.requireForce = true
(默认开启)。 - 若未使用
-f
,命令会报错。
-d
缩写 :--directory
作用 :递归删除未跟踪的文件夹。
该参数不可单独使用否则执行命令报错:
fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; ref using to clean
要与-f
组合使用,用于递归删除文件和文件夹
-x
缩写 :无(直接用 -x
)
作用 :删除被忽略的文件 (即 .gitignore
中指定的文件)。
该参数不可单独使用否则执行命令报错:
fatal: clean.requireForce defaults to true and neither -i, -n, nor -f given; ref using to clean
要与-f
组合使用,用于删除被忽略的文件
组合参数
-
-fd
- 强制删除未跟踪的文件和文件夹(不含被忽略的文件)。
-
-fx
- 强制删除未跟踪的文件和被忽略的文件(不含文件夹)。
-
-fdx
- 终极清理:强制删除未跟踪的文件、文件夹及被忽略的文件。
- 场景:彻底重置工作区,仅保留 Git 已跟踪的文件。
经验证,组合参数顺序可交换即:
-fd
与-df
效果是一样的
-fx
与-xf
效果是一样的
-fdx
与-fxd
与 -dfx
与-dxf
与 -xfd
与-xdf
这几个效果也是一样的
另外,默认设置中-d
和-x
以及-xd
不可单独使用,这三个要配合-f
使用
总结表格
参数 | 缩写 | 作用 | 风险等级 |
---|---|---|---|
-n |
--dry-run |
预览删除操作 | 低 |
-f |
--force |
强制删除未跟踪文件 | 中 |
-d |
--directory |
删除未跟踪的文件夹 | 中 |
-x |
无 | 删除被忽略的文件 | 高 |
-fdx |
组合 | 删除所有未跟踪/被忽略的文件和文件夹 | 极高 |
建议 :先使用 git clean -n
预览,再根据需要添加 -f
、-d
、-x
参数。
三、自己使用说明
在工作区新建一个文件夹,在文件夹里面新建一个文件,git clean -n 不显示任何文件,表明此时执行 git clean -f不会执行任何操作,如果在工作区直接添加文件,git clean -n 会显示这个文件,表明此时执行git clean -f会删除添加的文件,git clean -f删除的是git clean -n显示的文件,而git clean -f 无法删除在新建的文件夹中新建的文件