有同事A和B,git遠程版本為A0,兩個人的本地項目已經跟遠程同步。同事A先向git提交了3次,A1、A2、A3。git遠程版本為A0、A1、A2、A3。同事B也向git提交了1次B1,但是同事B提交項目時忘了先拉取pull,再推送push,導致同事A的提交被覆蓋。此時git遠程版本變成A0、B1。怎么辦呢?
git提供了一個方法叫版本回退。
git reset --hard xxxxx //xxxxxx表示git的版本號
首先確保我們有master權限,我們現在想回退到A3這個版本,假定A3的版本號為c12345。打開Git Bash,輸入
git reset --hard c12345
繼續輸入git log,查看當前版本,可以看到,版本已經回退到A3這個版本。但是這僅僅是本地項目回退了,我們需要本地遠程同步,進行強制推送,繼續輸入
git push -f
這時候大部分會報你沒有權限推送之類的信息,這是因為這項目是受保護的。要想強制推送,必須先解除保護。打開git遠程項目界面,選擇“setting”-"repository"。’下拉到以下界面,點擊“Unprotect”,解除對項目的保護。再重新git push -f即可。強制推送后,應該把該項目重新設置為保護狀態。
至此,版本回退完成。同事B再次提交即可。