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

如何通过Makefile一键执行Git打标签并自动升级版本号?

我来帮你搞定这个自动版本号递增+一键发布的需求!结合你现有的Git操作脚本,我们可以在Makefile里通过解析现有Git标签来自动计算下一个版本号,完美整合所有流程。下面是完整的实现方案:

完整Makefile代码

# 获取当前最新的Git标签,如果仓库还没有标签则默认v0.0.0
CURRENT_TAG := $(shell git describe --abbrev=0 --tags 2>/dev/null || echo v0.0.0)
# 去掉版本号前缀的"v",拆分出主版本、次版本、补丁版本
VERSION := $(subst v,,$(CURRENT_TAG))
MAJOR := $(word 1,$(subst ., ,$(VERSION)))
MINOR := $(word 2,$(subst ., ,$(VERSION)))
PATCH := $(word 3,$(subst ., ,$(VERSION)))
# 递增补丁版本号
NEW_PATCH := $(shell echo $$(($(PATCH)+1)))
NEW_TAG := v$(MAJOR).$(MINOR).$(NEW_PATCH)

# 定义release伪目标,避免和同名文件冲突
.PHONY: release
release:
	@echo "🔖 版本升级:$(CURRENT_TAG) → $(NEW_TAG)"
	# 执行你原有的提交推送流程
	git add .
	git commit -m "$(m)"
	git push origin master
	# 打新标签并推送到远程仓库
	git tag -a $(NEW_TAG) -m "Release $(NEW_TAG)"
	git push origin $(NEW_TAG)

关键逻辑解释

  1. 自动获取当前版本:用git describe --abbrev=0 --tags拉取仓库最新的标签,如果是第一次发布(还没有任何标签),就默认从v0.0.0开始,第一次执行会直接生成v0.0.1,正好匹配你的示例需求。
  2. 版本号拆分与递增:通过subst和word命令把版本号拆成MAJOR.MINOR.PATCH三部分,然后自动把补丁号+1,生成全新的版本标签。
  3. 一键整合所有流程:把你原来的add/commit/push master和新增的打标签、推送标签步骤串联起来,一次命令完成所有操作。

使用方法

直接在终端执行以下命令,替换引号里的内容为你的提交说明即可:

make release m="修复支付流程bug"

扩展:支持次版本/主版本升级

如果需要偶尔升级次版本(比如从v0.0.5到v0.1.0)或者主版本(v0.9.9到v1.0.0),可以在Makefile里添加额外的目标:

.PHONY: minor-release
minor-release:
	@NEW_MINOR=$$(($(MINOR)+1)); \
	echo "🔖 版本升级:$(CURRENT_TAG) → v$(MAJOR).$$NEW_MINOR.0"; \
	git add .; \
	git commit -m "$(m)"; \
	git push origin master; \
	git tag -a v$(MAJOR).$$NEW_MINOR.0 -m "Release v$(MAJOR).$$NEW_MINOR.0"; \
	git push origin v$(MAJOR).$$NEW_MINOR.0

.PHONY: major-release
major-release:
	@NEW_MAJOR=$$(($(MAJOR)+1)); \
	echo "🔖 版本升级:$(CURRENT_TAG) → v$$NEW_MAJOR.0.0"; \
	git add .; \
	git commit -m "$(m)"; \
	git push origin master; \
	git tag -a v$$NEW_MAJOR.0.0 -m "Release v$$NEW_MAJOR.0.0"; \
	git push origin v$$NEW_MAJOR.0.0

使用时执行make minor-release m="新增用户中心模块"或者make major-release m="正式版v1.0发布"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:47:28