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

Git pre-commit钩子如何获取用户Y/N确认以控制提交流程?

Git钩子中实现用户Y/N选择控制提交

完全可以在Git钩子中获取用户的Y/N选择,以此控制提交流程。pre-commit本质是可执行脚本(通常是Shell脚本),只要终端支持交互,就能通过标准输入接收用户输入。

实现示例

下面是一个在pre-commit钩子中集成ruff检查+用户确认的Shell脚本示例:

#!/bin/sh

# 运行ruff代码检查
echo "Running ruff code check..."
ruff check --fix .

# 询问用户是否继续提交
read -p "是否继续提交?(Y/N): " choice

# 根据用户输入决定是否允许提交
case "$choice" in
  Y|y )
    echo "继续提交..."
    exit 0  # 返回0允许Git执行提交
    ;;
  N|n )
    echo "已取消提交"
    exit 1  # 返回非0阻止Git提交
    ;;
  * )
    echo "输入无效,已取消提交"
    exit 1
    ;;
esac

关键说明

  • 脚本开头必须指定解释器(#!/bin/sh或#!/bin/bash),并且要给脚本添加执行权限:chmod +x .git/hooks/pre-commit
  • 如果只想在ruff检测到问题时才询问用户,可以在ruff检查后判断其退出码,比如:
    ruff check --fix .
    if [ $? -ne 0 ]; then
      read -p "ruff检测到问题,是否继续提交?(Y/N): " choice
      # 后续判断逻辑同上
    fi
    
  • 注意:部分GUI Git工具可能不支持终端交互,这种情况下该逻辑会失效,仅在命令行环境下能正常工作。

内容的提问来源于stack exchange,提问作者user2384330

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 16:28:10