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

git-commit-template中是否支持使用变量?如何实现变量自动替换功能?

实现Git Commit模板变量自动替换的方案

以下是无需额外第三方工具、基于Git原生能力的实现方案:

操作步骤

  • 第一步:进入项目的Git钩子目录
    执行命令:cd .git/hooks
  • 第二步:新建/编辑prepare-commit-msg钩子文件,写入如下脚本内容:
#!/bin/sh
# 提取当前分支名
BRANCH_NAME=$(git symbolic-ref --short HEAD)
# 匹配分支名中的工单编号,默认适配 feature/、fix/、bugfix/ 等前缀+工单编号的命名规则
TICKET=$(echo "$BRANCH_NAME" | grep -Eo '([A-Z]+-[0-9]+)' | head -n 1)

# 匹配到工单编号时执行变量替换
if [ -n "$TICKET" ]; then
  # 替换commit模板中的$TICKET变量
  sed -i.bak "s/\$TICKET/$TICKET/g" "$1"
  # 清理sed生成的临时备份文件
  rm -f "$1.bak"
fi
  • 第三步:给钩子文件授予可执行权限
    执行命令:chmod +x prepare-commit-msg
  • 第四步:配置commit模板(未配置过模板的情况下操作)
    把你的模板内容存为项目根目录下的.git-commit-template文件,内容示例:
    Fix issue lalala
    [Ticket]  http://url-from-ticket/$TICKET
    
    执行命令指定Git使用该模板:git config commit.template .git-commit-template

效果说明

后续你每次执行git commit唤起提交编辑页时,钩子会自动把模板里的$TICKET替换为当前分支的工单编号,比如分支为fix/DEV-001时就会自动替换为DEV-001。
如果你的分支命名规则不同,只需要调整脚本中grep后的正则表达式,即可适配你的工单编号匹配规则

全局生效配置

如果需要所有本地Git项目都生效,可以将该钩子放到Git全局模板目录:

  1. 执行命令设置全局模板目录:git config --global init.templatedir '~/.git-templates'
  2. 把编写好的prepare-commit-msg文件放到~/.git-templates/hooks/目录下即可,后续新clone/init的项目会自动加载该钩子,现有项目需要手动复制钩子到对应.git/hooks目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:15:05