Skip to content

Tag 命令

Tag 管理相关的命令详解。

📋 命令列表

命令别名说明
gw tags [prefix]gw ts列出 tag
gw tag [prefix]gw t创建 tag
gw tag:delgw td删除 tag
gw tag:updategw tu修改 tag
gw tag:cleangw tc清理无效 tag

📋 列出 Tag

基本用法

bash
# 列出所有 tag
gw tags
gw ts

# 按前缀过滤
gw ts v
gw ts release-

输出示例

bash
$ gw ts
📋 所有 tags (按时间倒序):

v1.2.0    Release v1.2.0    2 days ago
v1.1.0    Release v1.1.0    1 week ago
v1.0.0    Initial release   2 weeks ago

 3 tags

🏷️ 创建 Tag

基本用法

bash
# 交互式创建
gw tag
gw t

# 指定前缀
gw t v
gw t release-

创建流程

  1. 选择前缀(如果有多个)
  2. 选择版本类型
  3. 输入 tag 消息
  4. 确认创建

示例流程

bash
$ gw t
🏷️  创建 tag

? 选择 tag 前缀:
 v (最新: v1.2.0)
  release- (最新: release-1.0.0)
  + 使用新前缀

? 选择版本类型:
 patch v1.2.1
  minor v1.3.0
  major v2.0.0
  alpha v1.2.1-alpha.1
  beta v1.2.1-beta.1
  rc v1.2.1-rc.1

? 输入 tag 消息: Release v1.2.1 - Bug fixes

 Tag 创建成功: v1.2.1
 Tag 已推送: v1.2.1

🗑️ 删除 Tag

基本用法

bash
gw tag:delete
gw td

删除流程

bash
$ gw td
🗑️  删除 tag

? 选择要删除的 tag:
 v1.2.0 (2 days ago)
  v1.1.0 (1 week ago)
  v1.0.0 (2 weeks ago)

? 确认删除 tag v1.2.0?
 是,删除本地和远程
  仅删除本地
  取消

 本地 tag 已删除: v1.2.0
 远程 tag 已删除: origin/v1.2.0

✏️ 修改 Tag

基本用法

bash
gw tag:update
gw tu

修改流程

bash
$ gw tu
✏️  修改 tag

? 选择要修改的 tag:
 v1.2.0 Release v1.2.0 (2 days ago)
  v1.1.0 Release v1.1.0 (1 week ago)

当前消息: Release v1.2.0
? 输入新的 tag 消息: Release v1.2.0 - Bug fixes and improvements

 Tag 消息已更新: v1.2.0
 已推送到远程

🧹 清理无效 Tag

基本用法

bash
gw tag:clean
gw tc

什么是无效 Tag

无效 tag 是指那些不包含有效版本号的标签,通常是由于脚本错误或配置问题产生的,例如:

  • vnull - 版本号为 null
  • vundefined - 版本号为 undefined
  • v - 空版本号
  • 其他不符合版本规范的标签

清理流程

bash
$ gw tc
🧹 清理无效 tag

检测到以下无效 tag:

vnull
  提交: abc1234 (2 days ago)
  作者: John Doe
  消息: Release vnull

vundefined
  提交: def5678 (1 week ago)
  作者: Jane Smith
  消息: Release vundefined

? 是否删除这些无效 tag?
 是,删除本地和远程
  取消

 本地 tag 已删除: vnull
 远程 tag 已删除: origin/vnull
 本地 tag 已删除: vundefined
 远程 tag 已删除: origin/vundefined

 已清理 2 个无效 tag

安全性

  • 只会删除明确不包含数字的标签
  • 删除前会显示详细信息供确认
  • 支持仅删除本地或同时删除远程
  • 不会影响正常的版本标签

🔧 版本类型详解

标准版本

类型说明示例
patch补丁版本,Bug 修复1.0.0 → 1.0.1
minor次版本,新功能1.0.0 → 1.1.0
major主版本,破坏性变更1.0.0 → 2.0.0

预发布版本

类型说明示例
alpha内部测试版1.0.0 → 1.0.1-alpha.1
beta公开测试版1.0.0 → 1.0.1-beta.1
rc发布候选版1.0.0 → 1.0.1-rc.1

预发布版本升级

当前版本为预发布版本时,可以:

bash
# 当前: v1.2.1-beta.1
? 选择版本类型:
 pre v1.2.1-beta.2    # 升级预发布版本
  release v1.2.1           # 转为正式版本
  patch v1.2.2           # 跳过当前,升级 patch
  minor v1.3.0           # 跳过当前,升级 minor
  major v2.0.0           # 跳过当前,升级 major

🎯 前缀检测

工具会自动检测仓库中已有的 tag 前缀:

常见前缀

  • v - 最常用,如 v1.0.0
  • release- - 如 release-1.0.0
  • @scope/ - 如 @myapp/1.0.0
  • 自定义前缀

初始化仓库

如果仓库没有任何 tag:

bash
$ gw t
🏷️  创建 tag

当前仓库没有 tag,请输入前缀 (如 v): v

? 选择初始版本号:
 v0.0.1
  v0.1.0
  v1.0.0
  自定义...

📝 Tag 消息规范

推荐格式

Release v1.2.0

## 新功能
- 添加用户登录功能
- 支持多语言切换

## Bug 修复
- 修复数据加载失败问题
- 优化内存使用

## 其他
- 更新依赖版本
- 改进文档

简洁格式

Release v1.2.0 - Bug fixes and improvements

🔄 与其他命令配合

与 release 命令

bash
# 1. 更新版本号
gw release

# 2. 创建对应 tag
gw tag

与 commit 命令

bash
# 1. 提交最后的更改
gw commit

# 2. 创建发布 tag
gw tag

🚀 最佳实践

版本发布流程

  1. 完成开发 - 确保所有功能完成
  2. 运行测试 - 确保代码质量
  3. 更新文档 - 更新 CHANGELOG 等
  4. 提交更改 - 使用 gw c 提交
  5. 创建 tag - 使用 gw t 创建版本标签
  6. 发布版本 - 推送到生产环境

语义化版本

遵循 Semantic Versioning 规范:

  • MAJOR - 不兼容的 API 修改
  • MINOR - 向下兼容的功能性新增
  • PATCH - 向下兼容的问题修正

预发布策略

1.0.0-alpha.1  → 内部测试
1.0.0-alpha.2  → 修复问题
1.0.0-beta.1   → 公开测试
1.0.0-beta.2   → 修复反馈
1.0.0-rc.1     → 发布候选
1.0.0          → 正式发布

Released under the MIT License.