空白检查是什么
git diff --check 检查改动中新增行的空白类问题:行尾多余的空格、tab 前混入空格、文件末尾多余的空白行等。它不看代码逻辑,只负责把这批噪音在进入历史之前拦下来。接入流水线后,可以避免整份文件被编辑器顺手重排后产生的大面积无意义改动。
基本信息
| 用途 | 检测空白类问题 |
|---|---|
| 语法 | git diff --check [--cached] [范围] |
| 常见报告 | trailing whitespace / space before tab |
| 退出码 | 发现问题时返回非 0,可直接作为门禁 |
| 适用平台 | 任意 Git 环境,本地与 CI 通用 |
典型使用场景
- 提交前自查,避免只有空白的改动被推进历史
- 评审时确认没有整文件重排带来的噪音改动
- CI 中作为成本极低的快速门禁
- 检查某个提交区间是否引入了空白错误
- 统一换行与缩进规范之前做一次基线检查
- 发布分支合并前确认没有夹带格式噪音
常用示例
常用示例
git diff --check # 检查工作区改动中的空白问题
git diff --check --cached # 只检查已暂存的内容
git diff --check HEAD~1..HEAD # 检查最近一次提交引入的问题
git diff --check origin/main...HEAD # 检查整个 PR 范围
git diff --check -- '*.py' # 只检查指定类型的文件常见报告读法
| 报告内容 | 含义 | 处理方式 |
|---|---|---|
| trailing whitespace | 行尾存在多余空格 | 删除行尾空白 |
| space before tab | tab 前混入了空格 | 统一缩进符号 |
| new blank line at EOF | 文件末尾多出空白行 | 删除多余的末尾空行 |
它只报行尾空白与 tab 空格混用这类问题,不检查缩进风格、行长等团队约定。风格类约束要交给格式化工具与 linter,两者职责不重叠。
在流水线中对暂存区内容单独跑一次 git diff --check --cached 成本很低,能在合并前把这类噪音拦下,适合作为最早的检查项。
它的输出会直接给出文件名与行号,先配合 diff 的改动概览看一遍,就能判断这次是真实修改还是纯粹的空白噪音。团队还可以把这项检查放进提交钩子或流水线的最早阶段,让问题出现在最便宜的位置就被拦住,而不是留到评审时再逐条解释。