git clean

文章目录

  • [1. 简介](#1. 简介)
  • [2. 格式](#2. 格式)
  • [3. 选项](#3. 选项)
  • [4. 示例](#4. 示例)
    • [4.1 预览将要删除的文件(推荐)](#4.1 预览将要删除的文件(推荐))
    • [4.2 删除未跟踪的文件](#4.2 删除未跟踪的文件)
    • [4.3 删除被 `.gitignore` 忽略的文件](#4.3 删除被 .gitignore 忽略的文件)
    • [4.4 交互式删除](#4.4 交互式删除)
    • [4.5 排除特定文件](#4.5 排除特定文件)
  • [5. 注意](#5. 注意)
    • [5.1 `git clean` vs `git reset` 对比](#5.1 git clean vs git reset 对比)
    • [5.2 必须先加 `-f` 才能执行](#5.2 必须先加 -f 才能执行)
    • [5.3 被 `.gitignore` 忽略的文件默认不会被删除](#5.3 被 .gitignore 忽略的文件默认不会被删除)
    • [5.4 常用别名设置](#5.4 常用别名设置)
  • [6. 小结](#6. 小结)
  • 参考文献

1. 简介

git clean 用于删除工作区中未被 Git 跟踪的文件和目录。这些文件通常是编译产物、临时文件或 IDE 生成的文件。

典型场景:

  • 清理编译生成的 .o、.exe 等文件
  • 删除未跟踪的临时文件或日志
  • 恢复到干净的工作区状态

2. 格式

bash 复制代码
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] [<pathspec>...​]

注意,未指定<pathspec>默认为当前目录。

3. 选项

bash 复制代码
-d
  递归删除目录(包括空目录)

-e, --exclude=<pattern>
  排除符合指定模式的文件(即使匹配 -x)

-f, --force
  强制执行(Git 要求必须使用 -f 才能删除,防止误删)

-i, --interactive
  交互式模式,逐个确认删除

-n, --dry-run
  模拟执行,显示将要删除的文件,但不实际删除(推荐先预览)

-q, --quiet
	安静地,只报告错误,但不要报告成功删除的文件。

-x
  删除被 `.gitignore` 忽略的文件(默认不会删除)

-X
  只删除被 `.gitignore` 忽略的文件(保留未被忽略的文件)

4. 示例

4.1 预览将要删除的文件(推荐)

bash 复制代码
# 查看哪些未跟踪文件会被删除
git clean -n

# 同时查看未跟踪的目录
git clean -n -d

4.2 删除未跟踪的文件

bash 复制代码
# 删除所有未跟踪的文件(不删除目录)
git clean -f

# 删除未跟踪的文件和目录
git clean -fd

# 删除未跟踪的文件和目录(包括空目录)
git clean -fd

4.3 删除被 .gitignore 忽略的文件

bash 复制代码
# 同时删除未跟踪文件和被忽略的文件
git clean -fx

# 只删除被忽略的文件(保留未被忽略的未跟踪文件)
git clean -fX

4.4 交互式删除

bash 复制代码
# 逐个确认删除
git clean -i

4.5 排除特定文件

bash 复制代码
# 删除所有未跟踪文件,但保留 .env 文件
git clean -f -e .env

5. 注意

5.1 git clean vs git reset 对比

命令 操作对象 作用
git clean 未跟踪的文件 删除未被 Git 跟踪的文件
git reset --hard 已跟踪的文件 丢弃已跟踪文件的修改
git checkout . 已跟踪的文件 恢复已跟踪文件到最近提交状态

完整清理工作区:

bash 复制代码
# 丢弃所有已跟踪文件的修改
git reset --hard HEAD

# 删除所有未跟踪的文件和目录
git clean -fd

5.2 必须先加 -f 才能执行

bash 复制代码
# ❌ 错误:Git 拒绝执行
git clean
# error: clean.requireForce true

# ✅ 正确:必须加 -f
git clean -f

可以通过配置关闭此保护(不推荐):

bash 复制代码
git config --global clean.requireForce false

5.3 被 .gitignore 忽略的文件默认不会被删除

bash 复制代码
# 默认不会删除被忽略的文件
git clean -f

# 要删除被忽略的文件,必须加 -x
git clean -fx

5.4 常用别名设置

bash 复制代码
git config --global alias.cleanf "clean -fd"
git config --global alias.cleanx "clean -fdx"

# 使用别名
git cleanf
git cleanx

6. 小结

需求 命令 说明
预览将要删除的文件 git clean -n 推荐先执行,避免误删
删除未跟踪的文件 git clean -f 不删除目录
删除未跟踪的文件和目录 git clean -fd 递归删除目录
同时删除被忽略的文件 git clean -fdx 彻底清理(⚠️ 慎用)
只删除被忽略的文件 git clean -fX 保留未被忽略的未跟踪文件
交互式删除 git clean -i 逐个确认
排除特定文件 git clean -f -e .env 保留 .env 文件

一句话总结 :git clean 删除未跟踪的文件和目录,必须加 -f 才能执行 。删除前务必先用 -n 预览,避免误删重要文件。删除被 .gitignore 忽略的文件需加 -x。


参考文献

Git - git-clean Documentation

相关推荐
全栈陈序员13 小时前
【Git】从入门到精通(一)—— Git简介:什么是版本控制系统
大数据·git·elasticsearch
大猫会长18 小时前
git笔记
git
克里斯蒂亚诺更新20 小时前
git引入其他分支并且合并
git
全栈陈序员20 小时前
【Git】从入门到精通(二)—— Git安装与初次配置
数据仓库·git
XLYcmy20 小时前
实验报告分析评价文档——《第四次阶段汇报:模型产物的仓库瘦身、云端部署与评测链路打通》评析
git·llm·cpu·gpu·反编译·反汇编·safetensors
全栈陈序员20 小时前
【Git】从入门到精通(三)—— 创建第一个Git仓库
大数据·git·elasticsearch
全栈陈序员21 小时前
【Git】从入门到精通(四)—— Git三大区域:工作区、暂存区与版本库
大数据·git·elasticsearch
YIN_尹21 小时前
【git原理与使用】git基本操作及底层原理(一)
java·git·elasticsearch
AI 编程助手GPT1 天前
GPT 改完配置别直接覆盖:用 git diff 审查两份文件
git·gpt
叼烟扛炮1 天前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习