本地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`
複製代碼
相關文章
相關標籤/搜索