gerrit代码在submit后未能同步至gitlab的解决过程

2022-03-11  本文已影响0人  天草二十六_简村人

一、问题描述

最近几次直接对gitlab仓库进行代码提交,导致gerrit一直没有能够被同步最新的代码。我前后有试过两个办法,最后才算成功,特此记录下来前后的解决过程,可能对同样遇到该问题的同事有所帮助。

二、思路与步骤

把gitlab代码拷贝过来,重新提交至gerrit,如果没有提交.git文件,将会丢失提交记录。

1、gitlab代码是最新的,在代码工程中,将远程仓库地址修改为gerrit地址。

 git remote set-url origin ssh://xxx@192.168.5.169:29418/service/xxx-service\

2.1、提交代码

git push origin master:refs/for/master

提示

2.2、强制提交到gerrit的master分支,第一次我写错了分支,造成了新建了一个分支“orgin/master”。

git push --force origin master:orgin/master

发现提交成功,但是分支却多了"orgin/"。


企业微信截图_495cc604-c733-4f57-89fc-a30b63bcd9bc.png

2.3、需要开放限制:提交到master分支的保护权限

git push --force origin master:master

否则会报错提示如下:

xxx-service git:(master) git push --force origin master:master      
Total 0 (delta 0), reused 0 (delta 0)
remote: error: branch refs/heads/master:
remote: You need 'Push' rights with 'Force' flag set to do a non-fastforward push.
remote: User: xxxxxxx
remote: Contact an administrator to fix the permissions
remote: Processing changes: refs: 1, done    
To ssh://192.168.5.169:29418/service/xxx-service
 ! [remote rejected] master -> master (prohibited by Gerrit: not permitted: force update)
error: failed to push some refs to 'ssh://xxxxxxx@192.168.5.169:29418/service/xxx-service'

三、注意问题

1、想要让新的gitlab和旧的gerrit代码保持同步,必须要把gitlab的git提交记录二次提交到gerrit才行。

2、我第一次尝试过,只把gitlab的代码重新提交到gerrit,虽然代码是能提交上去,但是在submit的时候,无法将gerrit代码同步至gitlab。注意:一定要加上.git文件,也即git提交记录。

3、需要在提交至gerrit的时候,加上--force参数,否则它会提示你缺少Change-Id。

missing Change-Id in message footer

然后当你往手动创建Change-Id的方向去解决问题的时候,就越跑越偏了!!

git commit --amend
## 不要走这条路~~

4、验证代码是否为最新。提示你:no new changes,已经是最新的代码了!!

➜  xxx-service git:(master) git push origin HEAD:refs/for/master
Total 0 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done    
To ssh://192.168.5.169:29418/service/xxx-service
 ! [remote rejected] HEAD -> refs/for/master (no new changes)
error: failed to push some refs to 'ssh://xxxxxxx@192.168.5.169:29418/service/xxx-service'
上一篇 下一篇

猜你喜欢

热点阅读