【注意:如果提交的錯誤代碼較少,可以在本地修改成 commit之前的正確代碼樣子,然后再提交一次即可。不用麻煩的操作回滾。】
開發人員錯誤將代碼提交到gitlab的遠程dev分支,回滾方法如下:
1、本地回滾
進入git bash,進入該工程目錄:
leichen@N MINGW64 ~ $ cd c: leichen@N-5C MINGW64 /c $ cd git_home leichen@N-5C MINGW64 /c/git_home $ cd zntp leichen@N-5C MINGW64 /c/git_home/zntp (dev) $ git log commit 095d0ada370c32ace4fd2ebcd4372beea9a64f77 Author: MirGao <Mir_Gao15517374303@163.com> Date: Fri Nov 23 16:50:28 2018 +0800 實現接口數量7個 commit b8b9fa09775a511d522e584a3be6817c9de7e43b Author: PC-20180625CLEK\Administrator <18510942269@163.com> Date: Mon Oct 15 14:58:07 2018 +0800 bug修改
確認回滾到版本“commit” = b8b9fa09775a511d522e584a3be6817c9de7e43b,bug修改;操作方法如下:
leichen@N-5CG724557J MINGW64 /c/git_home/***** (dev)
$ git reset --hard b8b9fa09775a511d522e584a3be6817c9de7e43b
HEAD is now at b8b9fa0 bug修改
切換分支: git checkout dev
至此版本回退完畢,但是此時如果提交到遠程,注意:這只是本地撤消,如果已經push到服務器了,則此操作只回退了本地,服務器不受影響,下次git push要求先運行git pull,又將服務器的merge記錄下載到本地了。其實不能達到遠程回退的要求。
2、遠程回退
登陸gitlab服務器,進入項目對應的目錄底下操作。此操作相當危險,在操作一定要先將相應項目的目錄整個打包備份;然后進入到項目文件夾中操作:
cd /data/gitlab/repositories/alibaba/*******.git git checkout dev #此時會報錯:fatal: This operation must be run in a work tree #原因在於:git配置了環境變量,命令無法識別到作用的工程名稱,所以需要加上--work-tree參數 git --work-tree=/data/gitlab/repositories/alibaba/zntp.git reset --hard b8b9fa09775a511d522e584a3be6817c9de7e43b HEAD is now at b8b9fa0 bug修改 #即可實現代碼回滾 #git --work-tree的用法:[--work-tree=<path>]
遠程回退完畢。