Git 由于 Change-Id,推送失败

Git Push failed due to Change-Id

对我来说 Git 每当我尝试推送代码时,每次都会产生错误。使用以下命令

git push origin HEAD:refs/for/master

所以为了临时修复,我必须使用下面的命令

 git commit --amend

然后手动将 Change-Id 添加到另一个 Whosebug question,这样就可以推送代码了。

但是如果我下次尝试推送任何其他代码,它将再次失败并出现相同的错误(请看下面)

Counting objects: 63, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (39/39), done.
Writing objects: 100% (63/63), 5.94 KiB | 0 bytes/s, done.
Total 63 (delta 22), reused 28 (delta 4)
remote: Resolving deltas: 100% (22/22)
remote: Processing changes: refs: 1, done
remote: ERROR: [2a1ab5e] 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 subodhjoshi@gerrit.ext.net.google.com:hooks/commit-msg ${gitdir}/hooks/
remote: And then amend the commit:
remote:   git commit --amend
remote:
To ssh://gerrit.ext.net.google.com:29418/projectname/framework
 ! [remote rejected]   HEAD -> refs/for/master ([2a1ab5e] missing Change-Id in commit message footer)
error: failed to push some refs to 'ssh://gerrit.ext.net.google.com:29418/projectname/framework'

所以我试着添加一个这样的钩子

$ scp -p -P 29418 subodhjoshi@gerrit.ext.net.google.com:hooks/commit-msg  C:/GIT_Code_Base/unified-inventory/framework/framework/.git/hooks/
commit-msg                                    100% 4780    23.7KB/s   00:00

再次尝试推送,但以同样的错误告终。

我的问题是为什么每次我都必须在提交之前添加 change-Id?此问题的永久修复方法是什么?

Gerrit 消息不言自明,只需执行以下操作:

1) 进入本地仓库目录:

cd LOCAL-REPO-DIR

2) 安装 commit-msg 挂钩:

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

3) 修复您当前的提交:

git commit --amend

注意1:在第3步中,你不需要在提交中更改任何内容,只需运行 "git commit --amend" 命令,保存提交消息并退出。 Change-Id 将由 commit-msg 挂钩自动添加。执行 "git log" 检查是否正确添加了 Change-Id。

注意 2:从现在开始,每次创建提交时,Change-Id 都会由 commit-msg 挂钩自动添加。