误删了分支,怎么找回之前提交的代码

805 阅读1分钟

前言

前两天,我同事跑过来问我他之前拜托我的需求是不是没做,生产上现在有一点快照的问题,我一脸懵逼,心想咋可能有需求没做呢。后来,两个人对了一下,还真是有修改的内容被遗漏了,没有上到生产。

过程是我同事有一点前端的需求想让我协助下,他把分支的给我了,我拉取了他的分支,改完了内容,本地提交代码到远端,但是同事那段时间很忙,忘了建合并到 releasepr,导致这部分内容并没有被发到生产。

我自己平时删除本地分支和远程分支的习惯,一般迭代结束之后,我就会把自己的分支删除。

问题就来了,同事的本地分支虽然没删,但他也没有拉取我提交的代码,代码就这样没了嘛???

git 有个命令叫 git reflog,这个命令很强大

image.png

比如我现在同步一下 varlet 源仓库的最新代码,可以通过这个命令看到我的操作记录

image.png

方案

我现在有个 test-git 仓库,我创建了一个 feat-test 分支,来添加一个记录

image.png

image.png

然后,现在我把本地和远端的分支都删除

image.png

可以看到本地和远端的分支都没了,我们来把那次提交的内容恢复下

查找提交的commit hash

git reflog

image.png

基于commit hash切出来一个分支

git checkout xxx

image.png

可以看到这个分支的历史记录

image.png

重命名分支

git switch -c xxx

image.png

结尾

若有不当之处,欢迎指正。