3.0 KiB
3.0 KiB
中断恢复与安全清理
恢复原则
每次重入都从 Git 和代码托管平台读取状态,不依赖上一轮聊天结论。先记录准确的 base、head、PR/MR、merged commit、tag 和 release,再执行唯一缺失的下一步。
网络或平台调用返回超时、未知状态或非结构化错误时,先用只读命令刷新远端状态。不要把 重试当成默认动作;创建 PR/MR、合并、推 tag 和创建 release 都可能已经成功。
常见部分状态
| 当前状态 | 继续方式 | 禁止事项 |
|---|---|---|
| worktree 已创建,无改动 | 继续开发,或经授权移除干净 worktree | 不使用强制删除 |
| 本地发布分支已存在,没有 worktree | 核对版本身份、tip、upstream 和 base 后挂载现有分支 | 不用 -b 覆盖分支 |
| 分支已推送,没有 PR/MR | 确认 head/base 后创建一次 PR/MR | 不重复推送新分支 |
| PR/MR 已存在,未合并 | 复用 URL,刷新 checks、review 和冲突状态 | 不创建第二个 PR/MR |
| PR/MR 已合并,没有 tag | 获取 merged commit,在该 commit 上继续发布 | 不重新合并 |
| tag 已推送,没有 release | 验证 tag 后创建 Forge Release | 不创建替代 tag |
| release 已创建,验证未完成 | 读回 release、tag 和可见性 | 不直接声称发布完成 |
| 同名资源身份不匹配 | 停止并报告差异 | 不覆盖、关闭或删除未知资源 |
并发冲突
两个 Agent 或维护者可能同时准备相同版本。创建分支、PR/MR、tag 或 release 前都重新查询 目标是否存在。推 tag 前立即检查远端引用;push 因同名引用失败时保持失败,不要 force。
base 在开发期间前进时,让 PR/MR 和仓库规则决定是否需要更新分支。已经推送的发布分支 不在本 Skill 中重写历史;需要更新时优先创建普通提交,或交给平台的 update branch、 merge queue 和 auto-merge。任何 force push 都是硬停止条件。
回滚边界
- 未推送的本地版本提交可以在用户授权下修改或放弃,但不要覆盖其他工作。
- 已推送但未合并的 PR/MR 可以关闭,分支默认保留。
- 已合并变更通过新的 revert PR/MR 回滚,不重写 base 历史。
- 已发布 tag 默认不可变。tag 错误时停止,由维护者决定撤销发布或发布新版本。
- Forge Release 失败不回滚已经正确推送的 tag;从 release 阶段恢复。
清理规则
清理始终放在发布验证之后:
- 确认 worktree 没有修改、暂存或未跟踪文件。
- 确认分支提交已从远端 base 或已验证 tag 到达。
- 仅移除目标 linked worktree,不操作主 worktree,不使用
--force。 - 删除本地分支前再次确认已合并。
- 删除本地或远端分支都必须有用户本次请求的明确授权;项目策略不能代替授权。
- 使用
git worktree prune --dry-run查看陈旧记录;不要把 prune 当作普通清理步骤。
任何清理条件不满足时保留现场,并报告路径、分支、未提交状态和后续人工动作。