背景:
Git協作中,成員不可避免地會提交一些錯誤的版本,由於Git相比SVN引入了本地倉庫,操作會相對復雜,以下為姿勢分解
找一個源文件RspUtils.java,加上一行注釋 //測試回退git服務器版本,然后Commit並Push,現在的版本記錄如下(Mac版的SourceTree為例)
dd5f51f...就是有問題的版本,現在我們要回退到7a22c8f...版本,選中7a22c8f...版本,點擊右鍵,彈出選項
選中,Reset master to this commit,這個就是reset命令啦
選擇Hard模式,然后在當前主干上最新的版本記錄上點擊右鍵,繼續選擇Reset master to this commit
選擇Soft模式
commit + push就完成服務器上版本回退了,最終的版本記錄如下:
no message就是我最后commit的版本,由於沒寫注釋,工具自動加的(實際工作中不寫注釋或注釋寫得看不懂是很不好的習慣,必須堅決改正)
注意事項: 從第1個圖和最后一個圖可以看到,在第1個圖中,我有沒提交的記錄Uncommited Changes,經過reset hard之后丟失了,所以大家在回退版本時必須保持頭腦清醒,慎用reset hard
整個姿勢(原理)回顧:
reset - hard xxx 放棄本地的修改取服務器的覆蓋掉本地的
rest -soft xxx將本地的指針指向主干最新那個版本
commit
push