關於git遠程被覆蓋的問題


有同事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再次提交即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM