Gerrit常见问题解决

由于要做代码审核,公司部分项目从gitlab上迁移到了gerrit系统上,很多人在使用中会经常出现以下问题,这里记录下。

问题:从gitlab上克隆了代码,并且已经进行了修改提交,但是代码只能推送到gerrit上,这时候该怎么办呢?

操作方法

1.把项目工程下的.git/config文件中的url的值修改为gerrit上的ssh地址; 
这里写图片描述

即把上图中红线标识部分改为下图中红线标识部分

这里写图片描述

2.见 缺少Change id 操作方法

问题:缺少Change 
在gerrit上克隆代码的时候,忘了选择Clone with commit-msg hook,因此克隆下来的项目里没有生成changeid 的钩子程序。但是此时克隆下来的代码已经进行了修改提交,推送到gerrit审核时会发生缺少change id的错误,导致代码不能推到gerrit上。

如图所示:

这里写图片描述 
操作方法

此时可手动添加钩子程序,并回退重新提交即可,操作如下:

1.把I:\Departments\Shanghai\SmartECU\Testing\Shared\TianQi目录下的commit-msg程序复制到项目工程目录的.git/hooks目录下

2.回退提交,在git bash 执行命令:git reset –soft HEAD~n(有几次提交n就为几)

3.重新提交,在git bash执行命令:git commit -m “msg”,msg为提交说明信息,此时重新提交后,观察到会有change id 生成

4.推送到gerrit: 在git bash执行命令:git push origin HEAD:refs/for/远程分支名

若不需要在gerrit上审核,则不用进行以上操作,直接使用git push origin HEAD:refs/heads/远程分支名推动即可。

问题:推送到gerrit上的change出现can not merge 
将对代码做的修改提交到gerrit系统上后,有时候会出现can not merge的情况,此时代码不能合并进入远程仓库,在Reviewing界面会如下图所示:

这里写图片描述

这种情况出现的原有两个:

1.提交的代码与远程别人的提交(已经合入远程仓库)有冲突。

”’或者”’

2.修改的基础落后于远程仓库中的代码,没有更新到最新。

操作方法 
1. 此时先点击页面上的rebase按钮,并且在弹出的框里勾选change parent revison。

这里写图片描述 
这里写图片描述 
2. 点击rebase。表示先rebase远程最新的代码更新。

若此时仍然出现Cannot merge,则表示有冲突,解决方法如下:

1. 同步远程最新的代码,在git bash中执行命令:git pull --rebase
2. 在所有冲突的文件中,解决冲突。(请仔细看命令行的提示)
3. 重新提交代码,并保证与原始Change-Id一致: 在git bash 中执行命令: git commit --amend
4. 在出现的文本编辑器中,修改提交信息。(若不需要修改就直接保存按:q退出)
5. 再次推送到gerrit: git push origin HEAD:refs/for/远程分支名
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值