合并提交没有更改 ID?

merge commit does not have change id?

我很难将一个分支重置为另一个分支。将它与 ours 策略合并后,我尝试通过 gerrit 进行推送。我收到类似 "missing change id" 的错误。默认情况下,合并提交没有更改 ID。我试图下载用于自动更改 id 的 commit-msg 挂钩。但它对 Windows 没有帮助。知道如何在合并提交中添加更改 ID 吗?

情况:您有一个提交需要推送到 gerrit,但该提交没有 change-id,gerrit 不会接受它。

解决方案:

  1. 从 gerrit 下载 commit-msg 钩子

    $ scp -p -P 29418 TimCastelijns@server.timcastelijns.nl:hooks/commit-msg tims-project/.git/hooks/
    

    请将端口号、服务器地址和项目名称替换为您自己的。另外,根据您在终端中的当前位置更改 tims-project/.git/hooks/ 的路径。钩子必须进入 <project_dir>/.git/hooks/.

  2. 转到您的 repo 文件夹并修改合并提交

    $ cd tims-project/
    $ git commit --amend
    

    在修改时弹出的编辑器中,会显示当前提交及其提交信息。 这里什么都不做。只需退出并保存编辑器。由于 commit-msg 钩子是一个 post-commit 钩子,任何提交(创建或修改)都会自动分配一个 change-id。

  3. 推送到 gerrit

    $ git push origin HEAD:refs/for/master
    

    如果需要,用你自己的替换分支和远程。