使用gerrit git push 报错:missing Change-Id in commit message footer

使用gerrit后,提交代码会出现如下截图问题:


解决办法:

第一步:把上面那条gitidir复制下来在命令行执行:

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

第二步:执行下面的命令会添加change_id

  git commit --amend

step3:然后推送代码到服务器上

  git push origin HEAD:refs/for/dev

上面这个情况主要针对本地刚下载的仓库第一次提交会出现这个情况,只需要执行一次,以后再该仓库提交就不用执行了,说白了就是这个commit-msg是局部的,只对当前仓库生效


还有另外一种情况,也是大家遇到比较多的(我就是这种情况),就是执行了上面的命令,再push时还是一样的错,这个时候,你就要检查下是否其他提交没有change_id,因为gerrit要求每个提交都要有change_id。意思是你之前commit并没有change_id,需要reset之前的commit 重新提交

方法:

执行 git log :

从上而下,我们用commitid1,commitid2,commitid3表示截图中的三个提交,很明显,第二个提交commitid2没有change_id,这个时候我们可以git reset --soft commitid3来软回退到异常节点的前一个正常的节点,这个操作相当于撤销了最后的git commit -s的操作,add过的代码还在索引库(可以去了解下git reset --soft),具体操作如下:

(1) git reset --soft commitid3

(2) git status 可以看到绿色的已经add过的文件(即commitid1和commitid2的改动)

(3) git commit -m #添加评论,保存退出后会生成change_id

(4) git log 可以看到已经有了change_id

(5) git push origin HEAD:refs/for/工作分支


搞定!!!


分享至
2020-07-14 发布 ┊ 1383 人浏览 ┊ 0 人评论 ┊ 来源:原创 ┊ 收藏
返回顶部