返回顶部
u

unfuck-my-git-state修复Git状态

Diagnose and recover broken Git state and worktree metadata with a staged, low-risk recovery flow. Use when Git reports detached or contradictory HEAD state, phantom worktree locks, orphaned worktree entries, missing refs, 0000000000000000000000000000000000000000 hashes, or branch operations fail with errors like already checked out, unknown revision, not a valid object name, or cannot lock ref.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 0.2.1
安全检测
已通过
2,247
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

unfuck-my-git-state

unfuck-my-git-state

在不扩大影响范围的前提下恢复仓库。

核心规则

  1. 1. 先做快照。不要直接尝试操作。
  2. 在强制操作前优先使用非破坏性修复。
  3. 在备份完成前将 .git/ 视为生产数据。
  4. 手动编辑 .git/HEAD 前先使用 git symbolic-ref。
  5. 每次修复后,先运行验证再继续。

快速工作流

  1. 1. 捕获诊断信息:
bash bash scripts/snapshotgitstate.sh .
  1. 2. 使用 references/symptom-map.md 按症状路由。
  2. 生成非破坏性命令计划:
bash bash scripts/guidedrepairplan.sh --repo .
  1. 4. 应用最小的匹配操作手册。
  2. 运行 references/recovery-checklist.md 验证关卡。
  3. 仅在关卡失败时升级处理。

显式路由:
bash
bash scripts/guidedrepairplan.sh --list
bash scripts/guidedrepairplan.sh --symptom phantom-branch-lock

回归测试框架

在修改脚本逻辑前使用一次性模拟测试:

bash
bash scripts/regression_harness.sh

运行单个场景:

bash
bash scripts/regression_harness.sh --scenario orphaned-worktree

操作手册 A:孤立工作树元数据

症状:

  • - git worktree list 显示一个不再存在的路径。
  • 工作树条目包含无效或零哈希值。

步骤:
bash
git worktree list --porcelain
git worktree prune -v
git worktree list --porcelain

如果仍有陈旧条目,备份 .git/ 并删除 .git/worktrees/ 下的特定陈旧文件夹,然后重新运行 prune。

操作手册 B:幻影分支锁定

症状:

  • - git branch -d 或 git branch -D 失败,提示已被工作树使用。
  • git worktree list 似乎与分支所有权不一致。

步骤:
bash
git worktree list --porcelain

找到使用该分支的工作树,将该工作树切换到另一个分支或分离 HEAD,然后在主仓库中重试分支操作。

操作手册 C:分离或矛盾的 HEAD

症状:

  • - git status 意外显示分离 HEAD。
  • git branch --show-current 和 git symbolic-ref -q HEAD 不一致。

步骤:
bash
git symbolic-ref -q HEAD || true
git reflog --date=iso -n 20
git switch

如果分支上下文未知,从当前提交创建救援分支:
bash
git switch -c rescue/$(date +%Y%m%d-%H%M%S)

然后在调查后重新连接到目标分支。

操作手册 D:缺失或损坏的引用

症状:

  • - unknown revision、not a valid object name 或 cannot lock ref。

步骤:
bash
git fetch --all --prune
git show-ref --verify refs/remotes/origin/
git branch -f origin/
git switch

在强制设置分支指针前,使用 reflog 恢复仅本地存在的提交。

最后手段:手动修复 HEAD

仅在备份 .git/ 后执行。

首选方法:
bash
git show-ref --verify refs/heads/
git symbolic-ref HEAD refs/heads/

当 symbolic-ref 无法使用时回退方案:
bash
echo ref: refs/heads/ > .git/HEAD

立即运行验证关卡。

验证关卡(必须通过)

运行 references/recovery-checklist.md 中的检查。最低标准:

  • - git status 正常退出,无致命错误。
  • git symbolic-ref -q HEAD 与目标分支匹配。
  • git worktree list --porcelain 无缺失路径且无零哈希值。
  • git fsck --no-reflogs --full 无新增严重错误。

升级路径

  1. 1. 归档 .git:
bash tar -czf git-metadata-backup-$(date +%Y%m%d-%H%M%S).tar.gz .git
  1. 2. 从远程仓库全新克隆。
  2. 使用 reflog 和 cherry-pick 从旧克隆中恢复未推送的工作。
  3. 记录失败模式并为自动化添加防护措施。

自动化钩子

在构建工作树工具(iMi、脚本、机器人)时,强制执行:

  • - 前置快照和状态验证
  • 操作后验证关卡
  • HEAD/引用不一致时硬停止
  • 破坏性命令前明确用户确认

资源

  • - 症状路由器:references/symptom-map.md
  • 验证检查清单:references/recovery-checklist.md
  • 诊断快照脚本:scripts/snapshotgitstate.sh
  • 引导式计划生成器:scripts/guidedrepairplan.sh
  • 一次性回归测试框架:scripts/regression_harness.sh

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 unfuck-my-git-state-1776350352 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 unfuck-my-git-state-1776350352 技能

通过命令行安装

skillhub install unfuck-my-git-state-1776350352

下载

⬇ 下载 unfuck-my-git-state v0.2.1(免费)

文件大小: 11.41 KB | 发布时间: 2026-4-17 16:12

v0.2.1 最新 2026-4-17 16:12
- Documentation (README.md) updated for clarity and workflow guidance.
- No changes to code or core logic—documentation only.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部