You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否从GitHub的origin/master恢复本地分支未推送的提交?

找回丢失的Feature分支提交

嘿,我之前也碰到过类似的糟心事,先给你理清楚核心问题和解决办法:

本地提交是否存在于GitHub?

首先明确:只有当你之前把这些feature分支的提交push到过GitHub远程仓库时,它们才会存在于GitHub上。如果这些feature分支你从来没执行过git push origin feature-xxx,那这些提交只保存在原来的本地仓库里——要是原来的机器彻底挂了没法恢复数据,那这些提交大概率找不回来了。

但如果你确实push过,只是新克隆的仓库里没显示这些分支,那它们肯定还在GitHub上,只是你没拉取到本地而已。

找回提交的具体步骤

1. 先确认GitHub上的远程分支

首先在新克隆的仓库里,先拉取所有远程仓库的最新信息:

git fetch origin

然后查看所有远程分支:

git branch -r

这个命令会列出所有GitHub上存在的分支,比如origin/feature-your-branch-name。如果能看到你丢失的feature分支对应的远程分支,那接下来就简单了。

2. 将远程分支拉到本地

如果找到了目标远程分支,直接切换到该分支即可(Git会自动在本地创建对应的分支并跟踪远程分支):

git checkout feature-your-branch-name

或者你也可以手动创建本地分支并关联远程分支:

git checkout -b feature-your-branch-name origin/feature-your-branch-name

执行完后,本地就会恢复这个feature分支的所有提交了。

3. 极端情况:尝试找回未显式push的提交(成功率低)

如果上述步骤里没找到对应的远程分支,还有一种极小概率的可能:这些提交曾经被push过,但后来分支被删除了,或者提交处于“悬空”状态。你可以试试拉取GitHub的reflog记录(不过GitHub默认不会长期保留这些):

git fetch origin +refs/reflog/*:refs/reflog/*

然后查看本地的reflog:

git reflog

看看有没有相关的提交记录,如果有,可以通过提交哈希值创建分支:

git checkout -b feature-recovered <commit-hash>

但要注意,这个方法的成功率非常低,因为GitHub通常不会存储用户本地的reflog信息,除非有特殊的仓库设置。

后续建议

为了避免再遇到这种情况,建议即使是未完成的feature分支,也定期push到GitHub远程仓库(可以创建私人分支,或者用GitHub的私有仓库),这样相当于给代码做了云端备份,哪怕本地出问题也能轻松恢复。

内容的提问来源于stack exchange,提问作者Zac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:47:54