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

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