目錄
一、問題描述
小白花費一週時間做了git log如下所示6個功能。
commit的信息就是做了6個功能,每個功能對應一個commit的提交,分別是feature-1 到 feature-6”,然後執行強制回滾,git reset --hard 2216d4e。回滾到了feature-1上,並且回滾的時候加了--hard,導致之前feature-2 到 feature-6的所有代碼全部弄丟了,現在git log上顯示如下:
小白還在這個基礎上新添加了一個commit提交,信息叫feature-7,
現在情況就是feature-2到feature-6內容不見,還多了個feature-7,請問如何把丟失的代碼feature-2 到 feature-6全部恢復回來,並且feature-7的代碼也要保留呢?
二、解決
使用命令:git reflog 和git cherry-pick
首先,在git終端輸git reflog,就會展示出所有你之前git操作。
git reflog
記好兩個值:4c97ff3和cd52afc,他們分別是feature-7和feature-6的hash碼。然後執行回滾,回到feature-6上:
git reset --hard cd52afc
好了,現在feature-6之前的代碼已經恢復,剩下就來加上feature-7,執行git cherry-pick命令,我們之前已經知道feature-7的hash碼爲4c97ff3。期間可能有衝突,按提示解決即可。
git cherry-pick 4c97ff3
最終,問題得以解決,git log結果如下: