git遠程代碼庫回滾(webstorm下)
1. 場景
添加了一個文件【file-for-test.js】到git的控制下
進行了三次修改,並分別進行了三次commit,最后進行了一次push
git log結果如下圖:
【file-for-test.js】文件的內容如下圖:
現在希望,將遠程代碼庫下的【file-for-test.js】文件回滾到【//lyn test1】的版本
2. 操作步驟
2.1. 【Version Control】——【Log】
2.2. 右擊【//lyn test1】行,【Reset Current Branch to Here...】
2.3. 選擇【Hard】,點擊【Reset】
此時git log結果如下圖:
2.4. 關鍵步驟:設置force push
2.4.1. 【VCS】——【Git】——【Push】
2.4.2. 【Configure】
2.4.3. 勾選【Allow force push】,【OK】
2.5. 【VCS】——【Git】——【Push】
2.6. 勾選【Push Tags】,選擇【Current Branch】,選擇【Force Push】
2.7. 【Force Push】
2.8. OK
git log結果如下圖:
【file-for-test.js】文件的內容如下圖:
3. 特別注意
后來發現,使用本文所述方法,在以下場景會出現問題:
動作1:開發人員A push了一個錯誤的commit到遠程代碼庫
動作2:開發人員B pull了遠程代碼庫到其本地代碼庫中
動作3:開發人員B修改了一定的代碼,commit到其本地代碼庫中(與遠程代碼庫中不沖突)
動作4:開發人員A按照本文操作,回滾遠程代碼庫到push錯誤的commit之前的版本
動作5:開發人員B push本地代碼庫中的commit到遠程代碼庫中
就在此時,由於開發人員B的本代碼庫中有開發人員A錯誤的commit,所以開發人員B的push操作會先將本地代碼庫(有錯誤commit的版本)和遠程代碼庫(沒有錯誤commit的版本)進行merge,得到一個有錯誤commit的版本,再push到遠程代碼庫上。所以,你懂的。
故,結論:當出現需要遠程代碼庫回滾時,采用直接修改后再重新push的方法,不要采用本文所描述的方法