You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:11:36