保护发布标签是什么
保护发布标签是在平台上把发布用标签设为受保护引用:限制谁能创建、删除与覆盖标签,防止发布点被误改或误删。它与签名标签配合使用——保护解决谁能动,签名解决谁创建的,两者共同保证发布点既难篡改又可验证。定期盘点历史标签同样重要。
基本信息
| 目的 | 限制发布标签的写权限 |
|---|---|
| 规则形式 | 按通配(如 v*)与角色配置允许或拒绝 |
| 平台入口 | GitHub:仓库 Tags 设置;GitLab:Protected tags |
| 覆盖范围 | 新老标签都要纳入评估 |
| 核对命令 | git ls-remote --tags 查看远端现状 |
| 配合签名 | 保护加签名标签,来源可验证 |
典型使用场景
- 正式发布流程:只有发布机器人或维护者能推 v 开头标签
- 防止误删:历史发布点连管理员误操作也拦一道
- 合规要求:发布记录需可证明未被篡改
- 与 CI 配合:打标签触发的发布流水线只认受保护标签
- 迁移清理:停用旧命名后,用保护规则冻结旧前缀防止继续新增
核对示例
核对示例
git ls-remote --tags origin | head # 查看远端标签现状
git tag -l 'v*' --sort=-v:refname | head # 本地按版本序查看
git verify-tag v2.4.0 # 验证标签签名是否有效平台配置入口
| 平台 | 入口 | 常见规则 |
|---|---|---|
| GitHub | 仓库 Settings 的标签保护 | 按模式放行角色 |
| GitLab | Protected tags | 按通配与权限级别 |
| 自建 | 引用权限或服务端钩子 | update 钩子兜底 |
只保护新标签会漏掉历史标签:历史发布点仍可能被改写,覆盖范围要按现状评估后一次性配置到位。
自动化发布账号需要有限豁免:放行范围越小越好,用专用机器人账号而不是个人的管理员权限;豁免操作保留审计记录。