Files
.pouch/skills/manage-release/references/recovery.md
T
2026-07-31 23:58:47 +08:00

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 阶段恢复。

清理规则

清理始终放在发布验证之后:

  1. 确认 worktree 没有修改、暂存或未跟踪文件。
  2. 确认分支提交已从远端 base 或已验证 tag 到达。
  3. 仅移除目标 linked worktree,不操作主 worktree,不使用 --force
  4. 删除本地分支前再次确认已合并。
  5. 删除本地或远端分支都必须有用户本次请求的明确授权;项目策略不能代替授权。
  6. 使用 git worktree prune --dry-run 查看陈旧记录;不要把 prune 当作普通清理步骤。

任何清理条件不满足时保留现场,并报告路径、分支、未提交状态和后续人工动作。