误删Git本地分支后,可通过reflog找回:先用git reflog --all | grep定位被删分支的最后提交哈希,验证后用git branch重建;若reflog失效,则用git fsck --lost-found扫描dangling commit恢复。

Mac终端下误删Git本地分支后,只要reflog尚未过期(默认保留30–90天),就能精准找回最后一次提交哈希并重建分支——关键在立刻执行git reflog --all,而非只查当前分支日志,否则目标记录根本不会出现。
用reflog定位被删分支的最后提交
打开Mac终端,进入项目根目录,立即运行:git reflog --all | grep "branch: deleted\|moving from.*your-branch-name",把your-branch-name替换成你实际删掉的分支名,例如feature/login。
macOS系统原生支持grep,无需额外安装工具;若分支名含特殊字符或大小写不一致(如Feature/Login vs feature/login),需分别尝试匹配,因为reflog严格区分大小写。
找到类似abc1234 HEAD@{5}: branch: deleted: refs/heads/feature/login或def5678 HEAD@{12}: checkout: moving from feature/login to main这样的行——【前面那个哈希值(如abc1234)就是你要恢复的关键提交ID】。
这一步不能跳过验证:运行git show abc1234,确认作者、时间、文件变更是否与你记忆中的最后一次提交吻合。若报错fatal: bad object abc1234,说明该哈希已失效,需回退到上一条reflog记录重试。
安全重建分支,避免工作区冲突
方法一:使用git branch(推荐,最稳妥)
执行git branch feature/login abc1234,其中abc1234替换为你确认有效的完整哈希(至少12位)。
方法二:使用git switch -c(Git ≥ 2.23)
运行git switch -c feature/login abc1234,语义更清晰,但本质仍是创建新分支指针。
在 OpenClaw 中管理 GitHub 仓库、Pull Request、Issue 与工作流。适用于审查 PR、管理 Issue、自动化 GitHub Actions、同步仓库等场景。
【切勿使用git checkout -b】——它会强制切换工作区,若当前有未暂存修改,极易触发冲突警告甚至覆盖风险;而git branch仅新建指针,完全不影响当前状态。
如果原分支曾设置远程跟踪(如origin/feature/login),建完后补一句:git branch --set-upstream-to=origin/feature/login feature/login,否则后续git push会提示“no upstream branch”。
reflog找不到时启用fsck兜底扫描
第一步:立即停止所有Git写操作,包括git status——某些配置下它会触发auto-gc,加速对象清理。
第二步:运行git fsck --lost-found,等待扫描完成。输出中筛选含dangling commit def5678的行。
第三步:对每个可疑哈希快速验证:git log --oneline -n 3 def5678,比对提交时间、作者和消息关键词是否匹配你删掉的分支。
第四步:确认无误后执行git branch recovered-feature def5678,分支名建议加-recovered后缀,避免与现有分支重名冲突。

















