git reflog 时光穿梭机

目录

一、问题描述

二、解决


一、问题描述

小白花费一周时间做了git log如下所示6个功能。

git reflog 时光穿梭机_第1张图片

commit的信息就是做了6个功能,每个功能对应一个commit的提交,分别是feature-1 到 feature-6”,然后执行强制回滚,git reset --hard 2216d4e。回滚到了feature-1上,并且回滚的时候加了--hard,导致之前feature-2 到 feature-6的所有代码全部弄丢了,现在git log上显示如下:

git reflog 时光穿梭机_第2张图片

 小白还在这个基础上新添加了一个commit提交,信息叫feature-7,

git reflog 时光穿梭机_第3张图片

现在情况就是feature-2到feature-6内容不见,还多了个feature-7,请问如何把丢失的代码feature-2 到 feature-6全部恢复回来,并且feature-7的代码也要保留呢?

二、解决

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

首先,在git终端输git reflog,就会展示出所有你之前git操作。

git reflog

git reflog 时光穿梭机_第4张图片

记好两个值:4c97ff3和cd52afc,他们分别是feature-7和feature-6的hash码。然后执行回滚,回到feature-6上:

git reset --hard cd52afc

git reflog 时光穿梭机_第5张图片

好了,现在feature-6之前的代码已经恢复,剩下就来加上feature-7,执行git cherry-pick命令,我们之前已经知道feature-7的hash码为4c97ff3。期间可能有冲突,按提示解决即可。

git cherry-pick 4c97ff3

最终,问题得以解决,git log结果如下:

git reflog 时光穿梭机_第6张图片

你可能感兴趣的:(git reflog 时光穿梭机)