题目本来是这样的:如果一个实习生,他本地git的xxx分支被误删了, xxx分支代码没有被push到远程,如何找到之前xxx分支的提交记录和代码?
原题来自这里: 小蝌蚪系列:三年大厂面试官——二面题(偏难)
看着这题目有点意思,一顿操作猛如虎……
-
首先
clone
一份Git仓库代码下来,想动手实践的掘友可以直接用我的gitdemo
仓库地址:https://github.com/2oops/gitdemo.git
-
clone
下来之后,作下修改,然后add
并commit
到本地,如下图 -
注意上面是在xxx分支做的操作,现在
git branch -a
查看下分支,然后git checkout master
切换分支(注:如果没有commit
就去切换分支是会报错的,而且切换不了),切换完分支之后,我们强制删除这个xxx分支(可以试试git branch -d xxx
,你会发现什么?),如图 -
删除分支后,本地的更改的代码是没有了的,现在我们使用
git log -g
查看提交记录 (注意和git log -a
的区别) -
现在我们可以拿到xxx分支提交代码到本地的那条记录的hash值(暂且称之为A),然后执行
到这里我们可以看到之前xxx分支修改的代码已经找回来了。git branch recover-xxx A
(注意这里recover-xxx
是本地新建分支的名字,不是已删除的xxx分支,而且建议不要使用之前的分支名)
总结一下就两步:
1. 查看提交记录: `git log -g`
2. 找到提交的hash值A, `git branch new-branch A`