題目本來是這樣的:如果一個實習生,他本地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
,-d
刪不動),如圖
4.刪除分支後,本地的更改的代碼是沒有了的,現在我們使用git log -g
查看提交記錄 (注意和git log -a
的區別)
-
現在我們可以拿到xxx分支提交代碼到本地的那條記錄的hash值(暫且稱之爲A),然後執行
git branch recover-xxx A
(注意這裏recover-xxx
是本地新建分支的名字,不是已刪除的xxx分支,而且建議不要使用之前的分支名)
到這裏我們可以看到之前xxx分支修改的代碼已經找回來了。
總結一下:
1. 查看記錄: git log -a
2. 找到提交的hash值A, git branch new-branch A