提交前用 git diff --check 找出空白错误

44 次浏览2 条回复

改动准备提交时,可以先让 Git 检查补丁里的空白问题。环境:Git 2.25+,在仓库根目录执行:

git diff --check

没有输出通常表示检查通过;如果有行尾空格或空白规则冲突,它会标出文件和行号,并返回非零退出码。检查已暂存内容则用:

git diff --cached --check

这个命令只检查差异,不会修改文件,放进提交前脚本或 CI 也挺合适。

再补一个容易忽略的点:具体哪些空白算错误,会受仓库里的 .gitattributes 和 core.whitespace 影响。团队规则不一致时,可以先跑 git check-attr whitespace -- path/to/file 看某个文件实际套用了什么设置。放到提交钩子里则更适合检查 --cached,否则可能只扫到尚未暂存的改动。

还有个边界:git diff --check 只看差异,未跟踪文件还没进 diff,所以其中的行尾空格不会被它发现。提交钩子里用 git diff --cached --check 比较稳;新文件也要先 git add,再让检查覆盖到。