首页/开发/Git 与协作速查/git diff --check 空白错误检查
Git 基础与命令88 条

git diff --check 空白错误检查

检查新增行中的空白问题(行尾空白、tab 前空格等);接入 CI 可把这类噪音拦在合并之前。

Git 与协作速查开发更新于 2026-10-13

空白检查是什么

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 tabtab 前混入了空格统一缩进符号
new blank line at EOF文件末尾多出空白行删除多余的末尾空行
它只报行尾空白与 tab 空格混用这类问题,不检查缩进风格、行长等团队约定。风格类约束要交给格式化工具与 linter,两者职责不重叠。
在流水线中对暂存区内容单独跑一次 git diff --check --cached 成本很低,能在合并前把这类噪音拦下,适合作为最早的检查项。
它的输出会直接给出文件名与行号,先配合 diff 的改动概览看一遍,就能判断这次是真实修改还是纯粹的空白噪音。团队还可以把这项检查放进提交钩子或流水线的最早阶段,让问题出现在最便宜的位置就被拦住,而不是留到评审时再逐条解释。

易错点

  • 发现问题后整份文件重新格式化提交,diff 里出现大量无关改动,评审无法定位真实变更
  • 把空白检查当成风格门禁,它并不检查缩进风格与行长,团队仍需其他工具
  • 流水线里不做这项检查,行尾空白会持续累积,后续大规模清理代价更高
  • 用编辑器批量去空白时连带改动了换行符,产生整文件差异,提交前应核对改动范围

数据来源与参考

  • Git 官方文档:git-diff(--check)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌