从origin/master新建分支导致本地未推送提交丢失,咨询原因及恢复方案
问题原因
- 你的提交并没有丢失,只是当前工作区指向的分支不是本地master分支,所以看不到对应提交记录。
- 你执行
git checkout origin/master时,Git会进入*游离头(detached HEAD)*状态,该状态下的工作区指向远端origin/master的最新提交,和你本地master分支的提交互相独立。后续基于该状态创建新分支后,新分支的提交历史也完全基于远端origin/master,自然看不到本地master的3条未推送提交。
恢复方法
- 直接切回本地master分支即可查看所有提交:执行
git checkout master,随后可用git log命令验证3条未推送提交是否完整。 - 后续如果需要基于origin/master创建新分支,无需先切换到origin/master触发游离头状态,直接执行
git checkout -b 新分支名 origin/master即可,操作不会影响本地已有分支的内容。 - 如果存在误删本地master分支的极端情况,可通过Git引用日志恢复:执行
git reflog找到3条提交中最新一条的commit哈希值,再执行git branch master 对应的commit哈希值即可恢复完整的本地master分支。
内容的提问来源于stack exchange,提问作者Fluqz
相关产品推荐
相关产品推荐

