最近使用git時, 造成了遠程庫代碼需要回滾到之前版本的情況,為了解決這個問題查看了很多資料。
問題產生原因: 提交了錯誤的版本到遠程庫。
以下是解決的方法, 供大家參考:
1.對本地代碼庫進行回滾
git log 查看提交歷史,找出要回滾到的commit-id git reset --hard commit-id :回滾到commit-id git reset --hard HEAD~3:將最近3次的提交回滾
2.遠程代碼庫回滾
進行這一步的時候遇到了困難,嘗試了多種方法, 查看很多資料都提到使用git push -f 進行強推, 來覆蓋遠程倉庫代碼, 但是公司使用了gerrit代碼審查軟件, 會對代碼審查后然后再手動去合入, 導致這個方法失效了。
最終采用了如下方法
git checkout the_branch 切換分支
git pull
git branch the_branch_backup 備份一下這個分支當前的情況
git reset --hard the_commit_id 把the_branch本地回滾到the_commit_id
git push origin :the_branch 刪除遠程 the_branch
git push origin the_branch //用回滾后的本地分支重新建立遠程分支
git push origin :the_branch_backup //如果前面都成功了,刪除這個備份分支
由於使用了gerrit,gerrit中心庫是個bare庫,將HEAD默認指向了master,因此master分支是不能進行刪除操作的,所以在操作過程中創建了一個新的分支,把回滾后的代碼提交到新建的分支上, 再合入到master分支上,這樣遠程庫的代碼回滾就完成了。
如有問題,歡迎交流。