git 程式碼庫回滾
git程式碼庫回滾: 指的是將程式碼庫某分支退回到以前的某個commit id
【原生代碼庫回滾】:
git reset --hard commit-id :回滾到commit-id,講commit-id之後提交的commit都去除
git reset --hard HEAD~3:將最近3次的提交回滾
【遠端程式碼庫回滾】:
這個是重點要說的內容,過程比本地回滾要複雜
應用場景:自動部署系統釋出後發現問題,需要回滾到某一個commit,再重新發布
原理:先將本地分支退回到某個commit,刪除遠端分支,再重新push本地分支
操作步驟:
1、git checkout the_branch
2、git pull
3、git branch the_branch_backup //備份一下這個分支當前的情況
4、git reset --hard the_commit_id //把the_branch本地回滾到the_commit_id
5、git push origin :the_branch //刪除遠端 the_branch
6、git push origin the_branch //用回滾後的本地分支重新建立遠端分支
7、git push origin :the_branch_backup //如果前面都成功了,刪除這個備份分支
如果使用了gerrit做遠端程式碼中心庫和code review平臺,需要確保操作git的使用者具備分支的push許可權,並且選擇了 Force Push選項(在push許可權設定裡有這個選項)
另外,gerrit中心庫是個bare庫,將HEAD預設指向了master,因此master分支是不能進行刪除操作的,最好不要選擇刪除master分支的策略,換用其他分支。如果一定要這樣做,可以考慮到gerrit伺服器上修改HEAD指標。。。不建議這樣搞