如何实现每次Git提交自动递增版本号?
实现Git提交自动递增SemVer版本号的方案
一、使用专用版本管理工具(推荐)
bump2version
这是一款轻量的SemVer版本管理工具,能自动处理版本号递增、提交变更和打标签,完全匹配你的需求:
安装
pip install bump2version初始化配置
在项目根目录创建.bumpversion.cfg文件,内容如下:[bumpversion] current_version = 1.0.0 commit = True tag = True tag_name = v{new_version} [bumpversion:file:VERSION]该配置会让工具自动提交版本变更,以
vX.Y.Z格式打标签,同时通过根目录的VERSION文件存储当前版本。日常使用
- 自动递增patch位:配合Git钩子(下文介绍)或直接执行命令后提交:
bump2version patch - 手动递增minor位:
bump2version minor - 手动递增major位:
bump2version major
执行命令后,工具会自动完成版本更新、提交变更和打标签操作,无需手动修改文件。
- 自动递增patch位:配合Git钩子(下文介绍)或直接执行命令后提交:
standard-version
如果你的团队遵循Conventional Commits规范(提交信息采用feat:、fix:等固定前缀),这款工具会根据提交内容自动判断版本递增位,同时生成CHANGELOG:
# 安装 npm install -g standard-version # 初始版本打标签 standard-version --first-release # 自动根据提交信息递增版本 standard-version # 手动指定递增major/minor standard-version --release-as major standard-version --release-as minor
二、手动用Git钩子实现(无需额外工具)
若不想依赖外部工具,可通过Git的pre-commit钩子实现自动递增patch位:
创建钩子文件
在项目的.git/hooks目录下创建pre-commit文件,内容如下:#!/bin/bash # 确保VERSION文件存在,初始内容设为1.0.0 if [ ! -f VERSION ]; then echo "1.0.0" > VERSION fi # 读取当前版本并拆分 VERSION=$(cat VERSION) MAJOR=$(echo "$VERSION" | cut -d. -f1) MINOR=$(echo "$VERSION" | cut -d. -f2) PATCH=$(echo "$VERSION" | cut -d. -f3) # 递增patch位 NEW_PATCH=$((PATCH + 1)) NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH" # 更新VERSION文件并加入提交 echo "$NEW_VERSION" > VERSION git add VERSION添加执行权限
chmod +x .git/hooks/pre-commit此后每次执行
git commit时,钩子会自动递增patch位并将版本变更加入提交。手动修改major/minor位时,直接编辑VERSION文件后提交即可。
内容的提问来源于stack exchange,提问作者joseph
相关产品推荐
相关产品推荐

