在使用IDEA的reset時,會出現本地代碼雖然回退了,但是遠程代碼庫並未回退到對應的版本。簡單說,本地回退了,遠程庫未回退。這時候我們就需要使用命令行操作方式了。
1、在log上找到要恢復的版本號
使用git log查看需要恢復到的版本號。拿到git log version版本號。
git log
git log
|
2、在客戶端執行如下命令(執行前,先將本地代碼切換到對應分支)
git reset --hard version版本號
git reset --hard xxx版本號
|
3、強制push到對應的遠程分支(如提交到dev分支)
git push -f -u origin dev
git push -f -u origin dev
|
注意:現在到服務器上看到的代碼就已經被還原回去了。
這種操作存在兩個問題,服務器上的代碼雖然被還原了;
問題1:若有多人在使用同一個庫,他們本地的代碼版本依然是比服務器上的版本高的。如果別人再重新提交代碼的話,你回退(reset)的操作就白操作了。
解決方法1:讓別人把本地的高版本分支先刪掉,然後重新從服務器上拉取分支。
問題2:若有多人在使用同一個庫,如果執行了步驟3 '強制push到對應的遠程分支'會導致別人已經提交的代碼被刪除。所以慎用強制push這個命令。。。
解決方法2:使用另外一種方法,不過我沒有遇到。所以先放着到時候補上。當然最好的辦法是開發不回退,儘量測試通過了再提交代碼。