本地git分支被误删,如何找到该分支的提交记录和代码?

题目原本是这样的:若是一个实习生,他本地git的xxx分支被误删了, xxx分支代码没有被push到远程,如何找到以前xxx分支的提交记录和代码?git

原题来自这里: 小蝌蚪系列:三年大厂面试官——二面题(偏难)github


看着这题目有点意思,一顿操做猛如虎……面试

  1. 首先clone一份Git仓库代码下来,想动手实践的掘友能够直接用个人gitdemo仓库地址:https://github.com/2oops/gitdemo.gitoop

  2. clone下来以后,做下修改,而后addcommit到本地,以下图 post

    image.png

  3. 注意上面是在xxx分支作的操做,如今git branch -a查看下分支,而后git checkout master切换分支(注:若是没有commit就去切换分支是会报错的,并且切换不了),切换完分支以后,咱们强制删除这个xxx分支(能够试试git branch -d xxx,你会发现什么?),如图 spa

    image.png
    image.png

  4. 删除分支后,本地的更改的代码是没有了的,如今咱们使用git log -g查看提交记录 (注意和git log -a的区别) 3d

    image.png

  5. 如今咱们能够拿到xxx分支提交代码到本地的那条记录的hash值(暂且称之为A),而后执行git branch recover-xxx A(注意这里recover-xxx是本地新建分支的名字,不是已删除的xxx分支,并且建议不要使用以前的分支名) code

    image.png
    到这里咱们能够看到以前xxx分支修改的代码已经找回来了。


总结一下就两步:cdn

1. 查看提交记录: `git log -g`
2. 找到提交的hash值A, `git branch new-branch A`
复制代码
相关文章
相关标签/搜索