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

如何让release-it在CHANGELOG.md中避免提交记录重复?

解决release-it生成CHANGELOG时提交记录重复的问题

使用release-it结合@release-it/conventional-changelog生成CHANGELOG.md时,出现提交记录在多个版本下重复的问题(例如提交80e627c同时出现在1.2.0和1.1.0版本的记录中),期望每个提交仅归属对应版本,无重复记录。

复现步骤

mkdir ri && cd ri && npm init -y && git init
echo "node_modules" > .gitignore
npm i -D release-it @release-it/conventional-changelog
npm init release-it

配置信息(package.json)

"release-it": {
    "git": {
      "commitMessage": "chore: release ${version}"
    },
    "github": {
      "release": true
    },
    "npm": {
      "publish": false
    },
    "plugins": {
      "@release-it/conventional-changelog": {
        "infile": "CHANGELOG.md",
        "preset": {
          "name": "conventionalcommits",
          "type": [
            { "type": "feat", "section": "Features"},
            { "type": "fix", "section": "Bug Fixes"}
          ]
        }
      }
    } 
  }

测试命令(原导致重复的命令)

git add . && git commit -m "feat: add release it changelog generation"
npx release-it --no-git

touch extra-file

git add . && git commit -m "feat: add commit linting"
npx release-it --no-git --debug

问题原因

使用--no-git参数会跳过release-it的git相关操作(包括创建版本tag、提交release记录),而@release-it/conventional-changelog插件依赖git tag来划分不同版本对应的提交范围。没有版本tag作为边界时,每次生成CHANGELOG都会包含从项目初始到当前HEAD的所有符合条件的提交,导致旧提交重复出现在新版本的记录中。

解决方案

方法1:移除--no-git参数(推荐)

让release-it自动创建版本tag,插件会基于tag准确划分每个版本的提交范围:

# 第一次发布
git add . && git commit -m "feat: add release it changelog generation"
npx release-it

# 第二次发布
touch extra-file
git add . && git commit -m "feat: add commit linting"
npx release-it --debug

执行后,release-it会为每个版本创建对应的git tag(如v1.1.0、v1.2.0),CHANGELOG中每个提交只会归属到对应的版本下。

方法2:手动指定版本范围(仅当必须使用--no-git时)

如果不需要git tag,需在配置中添加ignoreRecommendedBump: true,并每次发布手动指定版本:

  1. 修改package.json中的插件配置:
"@release-it/conventional-changelog": {
  "infile": "CHANGELOG.md",
  "ignoreRecommendedBump": true,
  "preset": {
    "name": "conventionalcommits",
    "type": [
      { "type": "feat", "section": "Features"},
      { "type": "fix", "section": "Bug Fixes"}
    ]
  }
}
  1. 手动指定版本发布:
# 第一次发布为1.1.0
git add . && git commit -m "feat: add release it changelog generation"
npx release-it --no-git --version 1.1.0

# 第二次发布为1.2.0
touch extra-file
git add . && git commit -m "feat: add commit linting"
npx release-it --no-git --debug --version 1.2.0

这种方式需要手动管理版本号,容易出错,仅在特殊场景下使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:02:24