第一次使用Gerrit踩的坑,代码从Gerrit的git地址clone下来之后,修改代码commit也没有任何问题,直到push之后一直提示

Gerrit push [remote rejected] prohibited by gerrit: ref update access denied

参考网上在工程目录 GIT BUSH执行 git config remote.origin.push refs/heads/*:refs/for/* 之后又报另外一个错

!    refs/heads/master:refs/for/master    [remote rejected] ([5aee7c5] missing Change-Id in commit message footer)

就是我第一次commit版本没有change_id导致的

这时突然想起之前同事提醒我Gerrit的SSH KEY 注册,然后一波操作注册:

在GIT BUSH执行 ssh-keygen -t rsa -b 2048 -C "xxxxx@yyyyy.com" 最后在 C:\USER\xx\.ssh\ 目录下面可以发现俩文件 id_rsa 和 id_rsa.pub,前者是密钥,后者是公钥;

添加公钥到Gerrit:进入 Gerrit -> 页面右上角用户名那儿 -> settings -> SSH Publick key -> add key

注册好Gerrit之后,再按照上图的提示在GIT BUSH分别执以下命令行生成commit-msg文件

gitdir=$(git rev-parse --git-dir); scp -p -P 29418 xxx@x.x.x.x:hooks/commit-msg ${gitdir}/hooks/

git commit --amend 

然后就会自动生成commit-msg文件了(在项目的.git文件夹的hooks里面),这时再回idea commit提交就有change_id了

但是再执行PUSH操作还是会提示没有change_id

那是因为第一次commit因为没有注册Gerrit也没有生成commit-msg;怎么办呢?只能回退第一次的commit

可以回到IDEA 点开左下的Git->Log找到需要回退的版本右键Revert Commit  如果回退不成功那就到GIT BUSH执行强制回退版本,注意:强制回退本地修改的代码会直接没有了注意做好备份

(最后那长串可以通过 GIT BUSH执行 git log命令查看需要回退版本的 head)

$ git reset --hard 5aee7c52c3b569c44e75803cbdeef9313888830c^

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐