背景介紹
最近我們的DevOps平台做了一次升級,從安全方面考慮增加了一個檢查規則:非特殊情況下,每次發版時代碼中必須包含上一次發布的Commit,這個是為了規避曾經出現過的“代碼合並過程中丟失功能”的問題。
今天我們的一個內部項目上到DevOps平台時就出現了問題,當時的一個功能發布在relase/x分支下,發布后沒有及時合並到master分支。然后我做了一次分支清理,原本是想把本地的分支都清理掉,結果IDE也自動把遠程分支刪除完了,這就尷尬了,相當於上次發布的commit就丟失了。
解決辦法
先想辦法找到上一次發布commit時的SHA,然后通過 "New Branch" 功能創建分支即可恢復(Commit恢復后對應的Tag也會自動恢復),如下圖所示:

看來Gitlab內部還是保存了各個歷史版本的,非常贊!
后記
一般在項目中除了分支合並漏會導致丟失commit外,使用Squash功能也會出現(有時候為了整合多次提交信息,會通過Squash把多個Commit合並成一個Commit,看起來會更加整潔),當出現這種情況后就可以通過上面的方法來恢復。
