[gerrit场景教程] gerrit "missing Change-Id"

本文详细介绍了在使用Gerrit时遇到missing Change-Id问题的解决方案,包括通过`commit-msg`文件、`amend`选项、`reset`方法以及交互式`rebase`来生成或找回Change-Id。同时,文章还探讨了Gerrit的Change-Id机制、Git的hook机制,以及如何利用这些机制来更好地理解和操作代码提交。
摘要由CSDN通过智能技术生成

本系列是为公司写的 git & gerrit 场景使用手册的一篇.

套路部分为解决问题的步骤,心法部分为所用到的知识点的梳理.


场景:


你用 git push 向 gerrit 提交了待审核代码,一切都很顺利,你脑袋里冒出了"代码头上加了'佛祖保佑'果然有效"的想法.

此时 git 打印出如下提示,你的内心OS同步打印 "心情 -5" :

remote: Resolving deltas: 100% (14 /14 )
remote: Processing changes: refs: 1, done   
remote: ERROR: missing Change-Id in commit message footer
remote:
remote: Hint: To automatically insert Change-Id, install the hook:
remote:   gitdir=$(git rev-parse --git- dir ); scp -p -P 29418 liux@gerrit.xxxxx.com:hooks /commit-msg ${gitdir} /hooks/
remote: And then amend the commit:
remote:   git commit --amend
remote:
To ssh : //liux @121.xx.xx.xx:29418 /kaiba_admin_yunying .git
  ! [remote rejected] HEAD -> refs /for/master (missing Change-Id in commit message footer)
error: failed to push some refs to 'ssh://liux@121.xx.xx.xx:29418/sample_project.git'

 



套路:


大前提: commit-msg 文件必须已经在该项目中存在.


使用ls命令检查该文件是否存在:

$ cd project_dir
$ ls .git /hooks/commit-msg

如果该文件不存在,则按照 git push 时产生的提示信息,获取该文件:

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

上面的命令可以直接从 git push 产生的错误信息中复制出来.

如果要手敲该命令,别忘了把用户名换成自己的.


方法一: 使用 amend 选项生成 Change-Id:


如果缺失 Change-Id 的是最后一个 (head) commit, 使用以下命令即可解决问题:

$ git commit --amend

该命令会打开默认的 commit message 编辑器,一般是 vi

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值