诊断并修复损坏的 Git 状态及工作树元数据,提供分阶段、低风险的恢复流程。适用于 Git 报告 HEAD 分离或矛盾、幽灵工作树锁、孤立工作树条目、引用缺失、全零哈希,或分支操作失败(如已检出、未知版本、对象名无效、无法锁定引用等错误)。
取消我的状态是一项面向实际任务的技能,主要用于恢复回放而不使爆炸半径变差;首先, 切勿“ 随便尝试 ”;
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
在不扩大故障影响范围的前提下恢复仓库状态。
.git/ 视为生产数据对待。.git/HEAD 前,应优先使用 git symbolic-ref。bash scripts/snapshot_git_state.sh .
references/symptom-map.md 进行归类定位。bash scripts/guided_repair_plan.sh --repo .
references/recovery-checklist.md 中定义的验证检查点。如需显式指定路径:
bash scripts/guided_repair_plan.sh --list bash scripts/guided_repair_plan.sh --symptom phantom-branch-lock
在修改脚本逻辑前,使用可丢弃的模拟测试进行验证:
bash scripts/regression_harness.sh
运行单个测试场景:
bash scripts/regression_harness.sh --scenario orphaned-worktree
症状:
git worktree list 显示一个已不存在的路径。操作步骤:
git worktree list --porcelain git worktree prune -v git worktree list --porcelain
若仍有陈旧条目残留,请先备份 .git/,然后手动删除 .git/worktrees/ 下对应的具体陈旧目录,再重新运行 prune。
症状:
git branch -d 或 git branch -D 报错:“already used by worktree”(已被工作树占用)。git worktree list 显示的分支归属与实际不符。操作步骤:
git worktree list --porcelain
定位正在使用该分支的工作树,在该工作树中切换至其他分支或分离 HEAD,随后回到主仓库重试分支操作。
症状:
git status 意外提示 “detached HEAD”。git branch --show-current 与 git symbolic-ref -q HEAD 输出结果不一致。操作步骤:
git symbolic-ref -q HEAD || true git reflog --date=iso -n 20 git switch
若无法确定当前分支上下文,可基于当前提交创建救援分支:
git switch -c rescue/$(date +%Y%m%d-%H%M%S)
待调查完成后,再重新关联至预期分支。
症状:
操作步骤:
git fetch --all --prune git show-ref --verify refs/remotes/origin/git branch -f origin/ git switch
在强制重置分支指针前,请务必利用 reflog 恢复本地未推送的提交。
仅在已完成 .git/ 备份后执行。
推荐方式:
git show-ref --verify refs/heads/git symbolic-ref HEAD refs/heads/
当 symbolic-ref 不可用时的备用方式:
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 不报告任何新增的关键性错误。.git 目录:tar -czf git-metadata-backup-$(date +%Y%m%d-%H%M%S).tar.gz .git
在构建工作树相关工具(iMi、脚本、机器人等)时,须强制落实以下约束:
references/symptom-map.mdreferences/recovery-checklist.mdscripts/snapshot_git_state.shscripts/guided_repair_plan.shscripts/regression_harness.sh