目录
一、问题描述
小白花费一周时间做了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结果如下: