当前位置: > 其它学习 > Git >

Gitlab高级应用——代码回滚

时间:2019-02-01 16:10来源:未知 作者:IT
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)
------分隔线----------------------------