使用glab changelog generate显示“no changes”,求助排查问题
解决glab changelog generate返回"No changes"的问题
一、先搞懂glab changelog的核心逻辑
- 默认基于当前分支生成变更日志,核心是对比「指定标签」和「当前HEAD提交」之间的范围。你指定了
-v 1.0.0,但如果仓库没这个标签、或者标签之后没有符合规则的提交,就会显示"No changes"。 - 只有带
Changelog:trailer的提交才会被纳入,且trailer的取值(比如feature/changed)要和配置文件里的分类对应上。
二、一步步排查你的问题
1. 检查标签是否存在
先执行git tag查看仓库里有没有1.0.0标签:
- 如果没有,先创建并推送标签:
git tag -a 1.0.0 -m "Release 1.0.0" git push origin 1.0.0
- 如果已经有
1.0.0标签,确认你的测试提交是在这个标签之后提交的——glab只会取指定标签之后到当前HEAD的提交。
2. 确认提交trailer与配置匹配
你的git log显示提交里有Changelog: feature,格式是对的,但要确保.gitlab/changelog_config.yml里有对应的分类。比如配置文件里要包含:
categories: - title: Features labels: - feature
如果配置里没对应上,提交不会被识别。
3. 手动指定提交范围(可选)
如果默认范围不对,可手动指定起始和结束点:
glab changelog generate -v 1.0.0 --from <旧标签/提交哈希> --to HEAD
比如刚打了1.0.0标签,之后提交了测试代码,就用--from 1.0.0 --to HEAD。
三、新仓库的标准配置流程
- 初始化changelog配置:在仓库根目录创建
.gitlab/changelog_config.yml,参考示例:
categories: - title: Features labels: - feature - title: Changed labels: - changed - title: Fixed labels: - fixed template: | {% for category in categories %} ## {{ category.title }} {% for entry in category.entries %} - {{ entry.title }} ({{ entry.author }}) {% endfor %} {% endfor %}
- 规范提交格式:需要纳入changelog的提交必须带
Changelog:trailer,两种方式都可以:
# 命令行指定trailer git commit -m "feat: 添加用户登录功能" --trailer "Changelog: feature" # 手动在提交信息末尾添加 git commit -m "feat: 添加用户登录功能 Changelog: feature"
- 标签与发布流程:
- 完成一批功能后打版本标签:
git tag -a v1.0.0 -m "发布v1.0.0" - 推送标签到远程:
git push origin v1.0.0 - 生成changelog:
glab changelog generate -v v1.0.0 - 将生成的内容追加到
CHANGELOG.md,提交并推送。
- 完成一批功能后打版本标签:
四、验证提交是否被识别
先执行glab changelog list查看当前分支下符合条件的提交,如果能看到你的测试提交,说明规则没问题,再重新生成即可。
内容的提问来源于stack exchange,提问作者Norbert von Panthen
相关产品推荐
相关产品推荐

