前言
前两天,我同事跑过来问我他之前拜托我的需求是不是没做,生产上现在有一点快照的问题,我一脸懵逼,心想咋可能有需求没做呢。后来,两个人对了一下,还真是有修改的内容被遗漏了,没有上到生产。
过程是我同事有一点前端的需求想让我协助下,他把分支的给我了,我拉取了他的分支,改完了内容,本地提交代码到远端,但是同事那段时间很忙,忘了建合并到 release 的 pr,导致这部分内容并没有被发到生产。
我自己平时删除本地分支和远程分支的习惯,一般迭代结束之后,我就会把自己的分支删除。
问题就来了,同事的本地分支虽然没删,但他也没有拉取我提交的代码,代码就这样没了嘛???
git 有个命令叫 git reflog,这个命令很强大
比如我现在同步一下 varlet 源仓库的最新代码,可以通过这个命令看到我的操作记录
方案
我现在有个 test-git 仓库,我创建了一个 feat-test 分支,来添加一个记录
然后,现在我把本地和远端的分支都删除
可以看到本地和远端的分支都没了,我们来把那次提交的内容恢复下
查找提交的commit hash
git reflog
基于commit hash切出来一个分支
git checkout xxx
可以看到这个分支的历史记录
重命名分支
git switch -c xxx
结尾
若有不当之处,欢迎指正。