! [remote rejected] HEAD -> Change-Id must be in message footer

8 阅读1分钟

一、问题?

! [remote rejected] HEAD -> refs/for/development (commit 39bf57d: Change-Id must be in message footer)

二、 解决方案(amend 改坏时用)

如果 amend 操作不方便,退回这条提交、重新生成合规 Change-Id:

1、第一步:
# 退回提交,代码保留在暂存区
git reset --soft HEAD~1
# 重新提交,钩子会自动在末尾生成Change-Id
2、第二步:
git commit
# 提交之后,git窗口不能操作,进入了 **Vim 编辑器**(git commit/amend 默认弹窗)
3、第三步:
  1. 先进入编辑模式(能输入文字)

按键盘:i左下角会出现 -- INSERT --,此时就可以正常输入提交描述。

2.写规范 commit 文案(适配 Gerrit,Change-Id 放最后)

在最顶部空白行输入示例:

//必须的
docs: update integration-guide document

//没有Change-Id,可以不写,描述必须写
Change-Id: Ixxxxxxxxxxxxxxxxxxxxxx

要求:正文写完空一行,最后一行单独放 `Change-Id: xxx`

## 我的例子(在最顶部空白行输入):
[TICKET-ID]:ARTCNCONX-10008 [DESCRIPTION]:ContentProvider修改文档
  1. 写完保存退出(关键)
  • 按左上角 Esc 退出编辑模式(INSERT 消失)
  • 输入冒号 :,再输入 wq,回车
:wq

-   `w` = write 保存
-   `q` = quit 退出
  1. 完整操作流程一步到位
  • i → 进入输入模式,写提交日志
  • 写完按 Esc
  • 输入 :wq + 回车 → 保存关闭,回到 git 命令行
  1. 不想修改、放弃本次编辑

如果不想改提交信息,直接退出不保存:

:q!
4、第四步:
//再次推送
git push origin HEAD:refs/for/development

三、提交信息格式一定要遵守:

plaintext

标题/修改说明
可选详细正文

Change-Id: Ixxxxxx

Change-Id 必须单独在最后一行,上方空一行,否则 Gerrit 推送依然会拒绝。