核心定位
unfuck-my-git-state 是一套面向 Git 仓库灾难恢复的专业级诊断修复工具,针对 detached HEAD、phantom worktree locks、orphaned entries、无效哈希、引用锁定失败等复杂故障场景提供结构化救援流程。
核心用法
工具采用"快照优先、分阶段验证"的安全哲学:
1. 诊断阶段:运行 snapshot_git_state.sh 捕获完整元数据,建立可回溯基线
2. 路由阶段:依据 symptom-map.md 匹配症状到具体剧本(Playbook A-D)
3. 修复阶段:执行 guided_repair_plan.sh 生成的最小化非破坏性命令序列
4. 验证阶段:通过 recovery-checklist.md 门禁检查,失败则触发升级路径
显著优点
- 风险可控:强制快照备份、禁止"试试看"式盲目操作,将
.git/视为生产数据 - 结构化决策:症状→剧本→命令的显式路由,消除猜测和 Stack Overflow 驱动编程
- 防御性验证:每步操作后强制检查点,确保状态可观测
- 回归测试:
regression_harness.sh支持 disposable simulation,脚本逻辑变更前可安全验证 - 自动化友好:内置 preflight/post-operation hooks,适合集成到 CI/CD 和机器人工作流
潜在局限
- 依赖本地脚本生态:需配套
scripts/和references/目录结构,非单文件可移植方案 - 学习曲线:术语体系(phantom lock、orphaned worktree)对初级用户有一定门槛
- 远程场景有限:主要覆盖本地仓库元数据修复,大规模团队协作冲突需配合流程规范
- 非万能:明确划定"Last Resort"边界,极端损坏场景建议归档后重新克隆
适合人群
- 频繁使用 Git worktree 的高级开发者
- 维护复杂多分支 CI/CD 流水线的 DevOps 工程师
- 需要为团队建立 Git 灾难响应 SOP 的技术负责人
- 编写 Git 自动化工具(bots、CLI wrappers)的开发者
常规风险
| 风险点 | 说明 |
|--------|------|
| 数据丢失 | 未执行快照即强制修复可能加剧损坏 |
| 验证跳过 | 绕过 `recovery-checklist.md` 门禁可能遗留潜伏故障 |
| 并发冲突 | 多 worktree 环境下分支所有权竞争需人工协调 |
| 自动化误用 | 脚本钩子若未配置用户确认,可能意外执行 destructive 命令 |
安全等级 S+ 的来源依据:强制备份策略、非破坏性优先原则、完整的验证门禁和升级路径设计。