.pre-commit-config.yaml配置错误导致无法推送到GitHub的问题
解决pre-commit-config.yaml的stages字段格式错误问题
错误根源
- pre-commit要求
stages字段必须是数组类型(YAML中用-开头的列表),不能是单个字符串 - 添加
-后出现块映射错误,通常是缩进不正确或YAML结构被破坏
正确的stages配置示例
以下是符合要求的YAML片段:
repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 hooks: - id: check-yaml stages: - commit - push # 可按需添加多个阶段,比如pull_request
关键注意点:
stages字段下的每个阶段必须单独一行,以-开头-的缩进要和同级的id字段对齐(保持整体YAML缩进一致,通常用2或4个空格)
R函数生成正确YAML的写法
用R的yaml包生成配置时,要将stages定义为向量(数组),而非单个字符串。示例代码片段:
library(yaml) # 构建配置结构 commit_hook_config <- list( repos = list( list( repo = "https://github.com/pre-commit/pre-commit-hooks", rev = "v4.4.0", hooks = list( list( id = "check-yaml", stages = c("commit", "push") # 用向量表示数组,生成YAML时自动转为列表格式 ), list( id = "check-json", stages = c("commit") ) ) ) ) ) # 写入文件(仅当文件不存在时) if (!file.exists(".pre-commit-config.yaml")) { write_yaml(commit_hook_config, ".pre-commit-config.yaml", indent = 2) }
本地验证配置
推送GitHub前,可通过pre-commit命令本地验证配置合法性:
pre-commit validate-config
配置正确时命令无输出;若有错误,会直接提示具体问题,方便提前修复。
内容的提问来源于stack exchange,提问作者tsv
相关产品推荐
相关产品推荐

