1. 程式人生 > >IDEA遠端倉庫版本回滾

IDEA遠端倉庫版本回滾

訪問我的部落格

使用 git 進行專案的版本控制時,肯定會遇到回滾版本的情況,回滾有兩種,一種是本地倉庫回滾,另外一種是遠端倉庫回滾。以下詳細講解兩種回滾方式,本文主要講解遠端回滾,以及常見使用誤區。

本地倉庫回滾

本地回滾就很簡單,只是要撤銷 commit 資訊即可。可以直接使用 Reset HEAD進行回滾。

HEAD^ 是還原到上一個版本,HEAD^^ 是還原到上上一個版本。
Reset Type 有三種:

mixed 預設方式,只保留原始碼,回退commit和index資訊
soft 回退到某個版本,只回退了commit的資訊,不會恢復到index file一級。如果還要提交,直接commit
hard 徹底回退,本地原始碼也會變成上一個版本內容

錯誤的遠端倉庫回滾方式

遠端倉庫程式碼回滾,如果上 Google 上一搜,基本出來的答案都是使用 Reset HEAD 加上 git push -f 強制提交的方式。

我本地測試了一下,如果有兩個人同時在這條分支上開發,其中一個人 小 A 如果使用這種方式進行回滾了遠端倉庫程式碼,另外一個人 小 B 此時本地還是回滾之前的程式碼,小 B 那裡就會出現原生代碼版本高於遠端分支版本的情況,此時若小 B 進行了 push 操作,之前小 A 回滾的程式碼就又會被推送到遠端的倉庫了。除非小 B 在回滾後,將其本地倉庫的版本也進行回滾。才能保證不會把回滾的程式碼重新 push 回遠端倉庫,但是如果開發人員多,就無法保證所有開發人員的本地分支都回滾!

因此,不要使用 git push -f 這種方式來強制回滾遠端倉庫程式碼!

正確的遠端倉庫回滾方式

如圖所示,現在需要將遠端倉庫回滾到 dev-103 這次提交點。

選中 dev-103 這一行,右鍵選擇 Revert

這裡提示需要 commit

commit 之後,push 到遠端倉庫中。最終結果如下:

新增了一條提交記錄,檢視程式碼已經被回滾了

其他開發人員如果進行了 pull,其本地倉庫也被正確回滾到了 dev-103 提交點,就無需再擔心回滾的程式碼又被重新 push 到遠端倉庫啦。

搞定,收工!