test
我从分支上的 CI 触发的 sematic-release 收到错误
Command failed with exit code 128: git tag vX.XX.XX <commit id>
fatal: tag 'vX.XX.XX' already exists
当我推送未发布的无效代码时,问题就开始了,所以为了回滚我所做的更改git reset --hard <to-id-with-last valid version>
。
* commitB my invalid changes
|
* commitA - refactor: last publish working version # => v4.2.0
|
* commit0 - older code
|
复位后git reset --hard commitA
* commitA - refactor: last publish working # now failed
|
* commit0 - older code # => v4.1.0
|
代码看起来不错,但语义释放失败并出现错误:
Command failed with exit code 128: git tag v4.2.0 commitA
fatal: tag 'v4.2.0 ' already exists
我在文档中找到了适合这种情况的故障排除 -推送标签时参考已经存在错误:
语义发布读取发布分支历史记录中存在的 Git 标记,以确定最后发布的版本。然后它根据从那时起推送的提交确定下一个要发布的版本,并创建相应的标签。如果您的存储库中已经存在具有该名称的标签,Git 将抛出错误,因为标签在存储库中必须是唯一的。(...) 如果发布了具有该版本号的实际版本,您需要将直到该版本的所有提交合并到您的发布分支中。
版本v4.2.0
已发布,但现在没有。当我推送更新的代码时,它也会失败并出现同样的错误。
* commitC - chore: newer changes # failed
|
* commitA - refactor: # failed
|
* commit0 - older code # => v4.1.0
|
Command failed with exit code 128: git tag v4.2.0 commitC
fatal: tag 'v4.2.0' already exists
如果我能够使用下一版本 v4.3.0 或 4.2.1 发布此代码并跳过无效发布,则所有问题都可以解决。