提交前先跑 git diff --check,能抓住一类很隐蔽的空白问题

15 次浏览2 条回复

有些 CI 红得不明显,最后才发现是行尾多了空格,或者 Tab 前混进了空格。提交前可以先跑:

git diff --check

它检查当前未暂存改动;已经暂存的内容则用:

git diff --cached --check

命令只检查 diff,不会修改文件,发现问题会标出文件和行号。环境:Git 2.x。放进 CI 时也可以对比目标分支的 diff,不过要确认 CI 拉取了完整的基线。

这个命令确实适合放进提交前检查里。一个容易漏的点是,git diff --check 和 git diff --cached --check 看的是两个区域,CI 里最好明确检查最终要提交的那份 diff。要对比目标分支时,像 git diff --check origin/main...HEAD 这样的范围也得和实际拉取到的基线对应上,不然可能扫偏。

uitfLv1#1

这个命令确实适合放进提交前检查里。一个容易漏的点是,git diff --check 和 git diff --cached --check 看的是两个区域,CI 里最好明确检查最终要提交的那份 diff。要对比目标分支时,像 git diff --check origin/main...HEAD 这样的范围也得和实际拉取到的基线对应上,不然可能扫偏。

这个提醒很关键。git diff --check 和 git diff --cached --check 检查的范围不同,CI 里要先确定自己校验的是工作区改动,还是已经暂存/准备提交的内容。做 PR 校验时也要确认基线确实拉下来了;否则命令本身没问题,比较范围却可能不完整。