git - 缺少提交消息中的 Change-Id 时出现 Gerrit 错误

标签 git gerrit

我在远程存储库中设置了一个分支,并在该分支上进行了一些提交。 现在我想将远程分支 merge 到远程主控上。

我的操作大致如下:

  1. 收银台
  2. checkout 大师
  3. merge 分支并修复 merge 错误
  4. promise
  5. 推送原点 HEAD:refs/for/master

但是在第5步得到错误信息:

remote: Resolving deltas:   0% (0/12)

remote: ERROR: missing Change-Id in commit message
...

remote: Change-Id: I55862204ef71f69bc88c79fe2259f7cb8365699a

To ssh://prc@test.gerrit.xxx.com:29418/hello_git
 ! [remote rejected] HEAD -> refs/for/master (missing Change-Id in commit message)

最佳答案

检查您的提交的描述中是否有 Change-Id: ...。每个提交都应该有它们。

如果不是,请使用 git rebase -i 改写提交消息并添加适当的 Change-Id(通常这是已审核提交的第一个版本的 SHA1)。

为了将来,您应该安装 commit hook,它会自动添加所需的 Change-Id。

在仓库目录下执行scp -p -P 29418 username@your_gerrit_address:hooks/commit-msg .git/hooks/ 或从下载它们 http://your_gerrit_address/tools/hooks/commit-msg 并复制到 .git/hooks

现在 git commit --amend --no-edit 插入该行。

关于git - 缺少提交消息中的 Change-Id 时出现 Gerrit 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8845658/

相关文章:

Git:在 merge 期间获取我们/他们的文件内容

Github认为 merge 后分支不同

git - 组合 commitizen + husky 时无法提交 : nvm is not compatible with the "npm_config_prefix" environment variable

prolog - 如果标签大于 0,Gerrit 允许提交(序言规则)

git - 将具有多个分支和标签的现有 git repo 导入 gerrit

git - 如何在 Windows 上设置 git ssh 的多个身份?

git - 你如何为 Jenkins 管道提取 git 提交者信息

gerrit - 提交新补丁集时重置 Gerrit 上的代码审查分数

git - 是否可以在一台服务器上运行 gerrit/phabricator(代码审查),在另一台服务器上运行 git 存储库?他们同步了吗?

gerrit - 更改默认的 gerrit commit-msg