记录一次git找回代码的经历

背景

有一天,突然要上线一个项目。

依稀记得这个项目是在疫情之前开发的,他安静的躺在我项目的某个分支下面。

开发完成之后公司迁移过几次git远程仓库。

这些代码几乎快要淡出我的记忆。

我看了一下远程似乎没有找到我要的分支。

然后,看了一下我本地的分支,并没有找到。

然后我有些慌了。。。

过程

首先我要查找我之前删除过的分支,执行以下命令

git reflog
image-20200610133725777.png

这里有一些之前切换分支信息。

我要根据我之前提交代码时间大致筛选出一些head。

也许在那里能找得到一些线索

 # 将上面的列表中检出一个新的分支 第一个1279是新分支的名称 后一个是需要检出来源分支
 git branch 1279 HEAD@{1279}
 # 切换到检出的分支
 git checkout 1279
 # 查看当前分支的提交记录
 git log
image-20200610141058203.png

然而,这个分支最后一次提交是2020年2月,查看这个分支的合并记录后,再使用工具查看这个分支的合并记录

image-20200610142120015.png

上面根本没有我之前写代码提交的影子。

这个时候,依稀记得刚刚上班的时候,因为自己误操作(这里还有剧情,具体省略),删除了本地项目文件夹。

当前所有的分支,都是在线上master分支检出的。

因为,我当时的代码没有上线,所以master上也不会有代码的提交记录。

此时,我陷入了绝望。。。

就在,我准备开始估算重新写需要花费多少时间时。

突然,我脑海里闪过一个念头

我们之前有个本地机器,之前我们作为测试环境使用。

那台机器上拥有我们之前测试用的代码,以及所有的提交到测试分支的git记录。

同样的方法,我定位到了我需要的heade,

# 查看当前分支的提交记录
git log

image-20200610145052916.png
# 找到需要定位的点,从哪个点检出分支
git branch myLostBranch ccf4b6d037ccafd6bdf7a8508b04c038a6ad2c9c

至此,只需要将分支myLostBranch 推到远程仓库,然后下载到我本地。

大功告成!

后续,我需要手动将代码合并到我需要的分支上。因为,这些代码已经滞后很久了~

反思

  • 本地代码及时提交远程仓库
  • 除非万不得已,不要删除本地项目文件夹,(这里主要不要删除git操作记录)
  • 最好使用git rebase 代替git merge
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容