這是工作中遇到的問題,記錄下來,也友善自己後面檢視操作步驟,也友善各位遇到這個問題,不至于卡太久。
首先切換到主分支,這裡以圖中ejob項目為例。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiNx8FesU2cfdGLwczX0xiRGZkRGZ0Xy9GbvNGLwIzXlpXazxSP9cmYwVzVa5WNXlVQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2gTNwIWY0cjM3AjMjdzN4MDNzQjMwITY2MGN4UWMmhzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
切換到主分支後,打開ejob項目的git曆史記錄。
例如圖中,從目前位置準備復原到指定位置,右鍵選擇
Reset Current Branch to Here...
。(注意:操作前要确認代碼有沒有備份,其他分支或者本地有沒有,别到時候復原後,代碼沒了,沒備份就難搞了)
點選後會出現一個彈窗,選擇
Hard
。隻有選擇hard才會删掉之前所有的記錄。
點選
Reset
後,就會發現git的曆史記錄,復原位置之前的記錄都不見了。
因為GitLab會保護主分支,如果我們直接push,是會出問題的,是以我們應該先關掉GitLab中,對ejob項目主分支的保護。
打開GitLab的ejob項目頁面,選擇
Setting
。
然後選擇
Protected branches
,點選
Unprotect
,就會把主分支的保護删除掉。(可以恢複,放心操作)
點選後,那條保護沒了,說明操作成功。
因為當我們使用git的push操作時,git會預設pull把遠端的内容拉取下來,是以我們需要通過指令
git push -f
推到主分支,加上-f就push的時候就不會進行pull操作。但是由于IDEA的push是沒有-f的操作,是以我們是需要通過指令來執行的。
然後回到IDEA中,打開底部Terminal視窗(直接打開項目的檔案夾,右鍵點選Git Bash Here也是可以的),然後進入ejob項目的檔案夾。
輸入
git push -f
送出。
然後我們就可以到GitLab的ejob項目主分支看曆史記錄,如果送出記錄最新到我們現在的復原位置,那麼說明復原成功。
然後我們再把主分支的保護開啟。
選中
master
後,點選
Protect
恢複對主分支的保護。
到此為止,就完成對主分支的復原。