Gitlab撤消merger和撤消commit原理及操作一致 步骤一:切换到需要回退的分支 git checkout qa 如果如下错误: fatal: This operation must be run in a work tree 则指定–work-tree参数,如下: git –work-tree=/data2/apps/gitlab/git-data/repositories/groupname/web-trade.git checkout qa 步骤二:查看需要回退至某个版对应的commitId. cd /Users/deng/git/web-trade [root@Jenkins web-trade.git]# git log commit 6a9aeb957caa1d860610f43b473983b36cf94ab0 Merge: 8cbc3d0 42694ed Author: xxxxx xxxx@xxxx.cn Date: Tue Apr 26 15:32:03 2016 +0800 Merge branch 'trade-web-v1.1.1.1' into 'master' Trade web v1.1.1.1 重复支付,退款捡起放开。 See merge request !38 日志解释说明: 此条是一次merge的完整日志,本次commitId为:6a9aeb957caa1d860610f43b473983b36cf94ab0 本次操作内容是将commitId: 42694ed 合并到commitId: 8cbc3d0上, 如果想要撤消此次merge,则需要回退至commitId: 8cbc3d0上。 Merge: 8cbc3d0 42694ed 后面接的Id是每次提交的commitId, 全称长度为32位,此处采用了简写,只列出前七位,后续的操作可以用简写也可以用全称。 步骤三:回退到此commitId【本地撤消】。 git reset --hard 8cbc3d0 注意:这只是本地撤消,如果已经push到服务器了,则此操作只回退了本地,服务器不受影响,下次git push要求先运行git pull,又将服务器的merge记录下载到本地了。 步骤四:回退到此commitId【远程撤消】 cd /data2/apps/gitlab/git-data/repositories/groupname/web-trade.git git reset --soft 8cbc3d0 登陆gitlab服务器,进入项目对应的目录底下操作。此操作相当危险,在操作一定要先将相应项目的目录整个打包备份 步骤五:确认结果 再次运行git log,可以看到,需要撤消的merge已经不再出现在日志列表中了。 (责任编辑:IT) |