git reflog 時光穿梭機

目錄

一、問題描述

二、解決


一、問題描述

小白花費一週時間做了git log如下所示6個功能。

image

commit的信息就是做了6個功能,每個功能對應一個commit的提交,分別是feature-1 到 feature-6”,然後執行強制回滾,git reset --hard 2216d4e。回滾到了feature-1上,並且回滾的時候加了--hard,導致之前feature-2 到 feature-6的所有代碼全部弄丟了,現在git log上顯示如下:

image

 小白還在這個基礎上新添加了一個commit提交,信息叫feature-7,

image

現在情況就是feature-2到feature-6內容不見,還多了個feature-7,請問如何把丟失的代碼feature-2 到 feature-6全部恢復回來,並且feature-7的代碼也要保留呢?

二、解決

使用命令:git reflog 和git cherry-pick

首先,在git終端輸git reflog,就會展示出所有你之前git操作。

git reflog

image

記好兩個值:4c97ff3和cd52afc,他們分別是feature-7和feature-6的hash碼。然後執行回滾,回到feature-6上:

git reset --hard cd52afc

image

好了,現在feature-6之前的代碼已經恢復,剩下就來加上feature-7,執行git cherry-pick命令,我們之前已經知道feature-7的hash碼爲4c97ff3。期間可能有衝突,按提示解決即可。

git cherry-pick 4c97ff3

最終,問題得以解決,git log結果如下:

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章