一、问题?
! [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、第三步:
- 先进入编辑模式(能输入文字)
按键盘:
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修改文档
- 写完保存退出(关键)
- 按左上角
Esc退出编辑模式(INSERT消失)- 输入冒号
:,再输入wq,回车
:wq
- `w` = write 保存
- `q` = quit 退出
- 完整操作流程一步到位
- 按
i→ 进入输入模式,写提交日志- 写完按
Esc- 输入
:wq+ 回车 → 保存关闭,回到 git 命令行
- 不想修改、放弃本次编辑
如果不想改提交信息,直接退出不保存:
:q!
4、第四步:
//再次推送
git push origin HEAD:refs/for/development
三、提交信息格式一定要遵守:
plaintext
标题/修改说明
可选详细正文
Change-Id: Ixxxxxx
Change-Id 必须单独在最后一行,上方空一行,否则 Gerrit 推送依然会拒绝。