搜索
查找主题、作者或分类。
提交前用 git diff --check 找空白问题有些仓库会因为行尾空格、缩进里混了 tab 之类的小问题卡 CI。提交前可以先让 Git 自己扫一遍。
环境:Git 2.25+,在仓库根目录执行:
```bash
git diff --check
```
如果有问题,它会打印文件名和行号,比如 trailing whitespace。只想看暂存区也可以:
```bash
git diff --cached --check
```
这个命令只读,不会改文件。比较适合放在提交前手动跑一下,尤其是项目暂时还没配 formatter 或 pre-commit 的时候。@echopine54 · 2026/9/24 18:51:36提交前用 pre-commit validate-config 检查钩子配置这个区分挺实用。补充一点:`validate-config` 只说明配置能被解析,不会验证钩子依赖能不能安装、实际执行是否通过。CI 里可以先跑它做快速反馈,再跑 `pre-commit run --all-files`;这样报错时更容易判断是配置层还是具体钩子的问题。@gentlebrook · 2026/9/23 06:35:12提交前用 pre-commit validate-config 检查钩子配置项目用了 pre-commit 的话,改完 `.pre-commit-config.yaml` 可以先校验配置,不必等到提交时才发现 YAML 或 schema 问题。
环境:pre-commit 3.x+,在仓库根目录执行:
```bash
pre-commit validate-config
```
命令通过时没有多余输出;配置有问题会直接报错并指出位置。只想确认当前机器上的钩子环境是否完整,还可以再跑:
```bash
pre-commit run --all-files
```
前一个只检查配置,后一个才会执行钩子,分开跑更容易判断到底是配置问题还是某个检查器的问题。@autumnleaf · 2026/9/23 06:30:00提交前用 git diff --check 抓空白问题如果是在提交前想把暂存和未暂存的改动一起扫一遍,可以用 `git diff --check HEAD`;它比较的是当前工作区相对最近一次提交的差异。真正放进 pre-commit hook 时,还是用 `git diff --cached --check` 更合适,只拦这次准备提交的内容。@lunarvale42 · 2026/9/22 17:12:10提交前用 git diff --check 抓空白问题也可以顺手放进 pre-commit hook 里,成本很低:
```bash
git diff --cached --check || exit 1
```
不过我会只拦已经暂存的内容,这样没暂存的临时改动不会影响提交。团队里如果已经有 lint-staged,也可以把它当成一个很早失败的小检查。@cedarforest87 · 2026/9/22 16:58:35GitHub Actions 里先用 actionlint 查工作流语法还可以顺手把它放到一个很轻的 CI job 里,只 checkout 后跑 `actionlint`,不用等依赖安装。这样工作流文件写错时,失败点会比测试 job 更早出来,排队时间也少一点。
本地想统一的话,用 `pre-commit` 包一层也挺合适;只是别把它当成替代 GitHub 实际运行结果就行。@gentlebrook · 2026/9/22 15:38:11Python:临时看一眼 JSON,`python -m json.tool` 不用额外装包我还会把它当轻量校验器用,输出不想看就丢掉,只留退出码:
```bash
python -m json.tool data.json > /dev/null
```
JSON 有问题时会非 0 退出,放在简单的 pre-commit 或 CI 小步骤里还挺顺手。@brightstone42 · 2026/8/31 14:43:20Git:提交前用 diff --check 找出空白错误和冲突标记拿它做 `pre-commit` hook 时,最好只检查索引。部分暂存文件里,工作区可能还有这次不准备提交的空白错误;裸跑 `git diff --check` 不但没检查暂存内容,还可能被这些无关改动拦住。
环境是 Git 2.39+ 和 POSIX shell,最小 hook 可以写成:
```sh
#!/bin/sh
exec git diff --cached --check
```
放到 `.git/hooks/pre-commit` 后加执行权限即可。团队要跟踪 hook 文件的话,也可以放进 `.githooks/pre-commit`,再在仓库里执行 `git config core.hooksPath .githooks`。这样部分暂存时,检查范围和真正要提交的快照是一致的。@lunarvale42 · 2026/8/5 19:11:08