通过 Gitlab 找回远程、本地都删除的Commit

背景介绍

  最近我们的DevOps平台做了一次升级,从安全方面考虑增加了一个检查规则:非特殊情况下,每次发版时代码中必须包含上一次发布的Commit,这个是为了规避曾经出现过的“代码合并过程中丢失功能”的问题。

  今天我们的一个内部项目上到DevOps平台时就出现了问题,当时的一个功能发布在relase/x分支下,发布后没有及时合并到master分支。然后我做了一次分支清理,原本是想把本地的分支都清理掉,结果IDE也自动把远程分支删除完了,这就尴尬了,相当于上次发布的commit就丢失了。

 

解决办法

  先想办法找到上一次发布commit时的SHA,然后通过 "New Branch" 功能创建分支即可恢复(Commit恢复后对应的Tag也会自动恢复),如下图所示:  

 

   看来Gitlab内部还是保存了各个历史版本的,非常赞!

 

后记

  一般在项目中除了分支合并漏会导致丢失commit外,使用Squash功能也会出现(有时候为了整合多次提交信息,会通过Squash把多个Commit合并成一个Commit,看起来会更加整洁),当出现这种情况后就可以通过上面的方法来恢复。

 

posted @ 2021-06-24 16:25  odirus  阅读(708)  评论(0编辑  收藏  举报