訪問個人博客git
使用 git 進行項目的版本控制時,確定會遇到回滾版本的狀況,回滾有兩種,一種是本地倉庫回滾,另一種是遠程倉庫回滾。如下詳細講解兩種回滾方式,本文主要講解遠程回滾,以及常見使用誤區。測試
<!--more-->spa
本地倉庫回滾
本地回滾就很簡單,只是要撤銷 commit 信息便可。能夠直接使用 Reset HEAD進行回滾。
版本控制
HEAD^ 是還原到上一個版本,HEAD^^ 是還原到上上一個版本。 Reset Type 有三種:blog
mixed 默認方式,只保留源碼,回退commit和index信息 soft 回退到某個版本,只回退了commit的信息,不會恢復到index file一級。若是還要提交,直接commit hard 完全回退,本地源碼也會變成上一個版本內容開發
錯誤的遠程倉庫回滾方式
遠程倉庫代碼回滾,若是上 Google 上一搜,基本出來的答案都是使用 Reset HEAD 加上 git push -f 強制提交的方式。get
我本地測試了一下,若是有兩我的同時在這條分支上開發,其中一我的 小 A 若是使用這種方式進行回滾了遠程倉庫代碼,另一我的 小 B 此時本地仍是回滾以前的代碼,小 B 那裏就會出現本地代碼版本高於遠程分支版本的狀況,此時若小 B 進行了 push 操做,以前小 A 回滾的代碼就又會被推送到遠程的倉庫了。除非小 B 在回滾後,將其本地倉庫的版本也進行回滾。才能保證不會把回滾的代碼從新 push 回遠程倉庫,可是若是開發人員多,就沒法保證全部開發人員的本地分支都回滾!源碼
所以,不要使用 git push -f 這種方式來強制回滾遠程倉庫代碼!博客
正確的遠程倉庫回滾方式
如圖所示,如今須要將遠程倉庫回滾到 dev-103 此次提交點。it
選中 dev-103 這一行,右鍵選擇 Revert
這裏提示須要 commit
commit 以後,push 到遠程倉庫中。最終結果以下:
新增了一條提交記錄,查看代碼已經被回滾了
其餘開發人員若是進行了 pull,其本地倉庫也被正確回滾到了 dev-103 提交點,就無需再擔憂回滾的代碼又被從新 push 到遠程倉庫啦。
搞定,收工!