【问题标题】:Why am I getting "Error failed to push some refs"?为什么我收到“错误未能推送一些参考”?
【发布时间】:2018-11-16 06:15:18
【问题描述】:

我正在使用带有 Gerrit 的 Git,并尝试使用以下命令推送更改

 git push origin HEAD:refs/for/master

失败并显示以下错误消息

计数对象:54,完成。 Delta 压缩最多使用 4 个线程。 压缩对象:100% (23/23),完成。书写对象:100% (54/54), 4.56 KB | 0 字节/秒,完成。总计 54(增量 20),重复使用 0 (增量 0)远程:解决增量:100%(20/20)远程:处理 更改:参考:1,远程完成:错误:[041a9f9] 缺少更改 ID 提交消息页脚远程:远程:提示:自动插入 Change-Id,安装钩子:remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 urid@gerrit.ext.net.something.com:hooks/commit-msg ${gitdir}/hooks/ remote: 然后修改commit: remote: git commit --amend 远程:到 ssh://gerrit.ext.net.something.com:29418/Project/FolderName ! [远程拒绝] HEAD -> refs/for/master([041a9f9] 缺失 提交消息页脚中的更改 ID)错误:未能将一些参考推送到 'ssh://username@gerrit.ext.net.something.com:29418/Project/FolderName'

所以正如上面的错误消息中提到的,我在命令下面运行

--git-dir); scp -p -P 29418 urid@gerrit.ext.net.something.com:hooks/commit-msg ${gitdir}/hooks/

输出是

提交消息
100% 4682 23.0KB/s 00:00

所以这意味着钩子在我运行命令之后正确下载到我的项目工作目录中

git commit --amend

它显示正确的Change-Id: I55862204ef71f69bc88c79fe2259f7cb8365699a,正如documents 中提到的,它仅在最后一行。

但我仍然无法推送我试图从这个question 获得帮助的更改,但仍然失败并显示相同的消息。

更新 1 这是

的输出
$ git log

提交 10690fb1b829981852855aecaab0dfd7aaf9997f (HEAD -> master) 作者:作者姓名

日期:2018 年 6 月 6 日星期三 18:42:25 +0530

SUREREQ-6877:Support of PATCH and OPTIONS

Change-Id: Ic7f36b90832078afa740b1138cb35829456f389d

提交 041a9f9deeae886c9771995a1463d40ca2d3fa3c 合并:e265b88b 7f2ec936 作者:作者姓名日期:Wed Jun 6 17:33:48 2018 +0530

Merge branch 'master' of ssh://gerrit.ext.net.nokia.com:29418/SURE/sure-sw

提交 e265b88b6194f65dedbf070b2be7f6c7018f6dec 作者:作者姓名
日期:2018 年 6 月 6 日星期三 16:59:58 +0530

SUREREQ-6877:Support of PATCH and OPTIONS

Change-Id: I82382926d5acd8f9101bd3fc7bbb33bae85672da

commit 7603b20691b59de2f086ca5633314f89bcc963ab 作者:作者姓名
日期:2018 年 6 月 6 日星期三 16:53:04 +0530

SUREREQ-6877:Support of PATCH and OPTIONS

Change-Id: I9312ebbe3d346ff97ca996c2219f204a55d1b9ac

commit 305fd46084f2a230f96b316f814ebf0eabd849c2 作者:作者姓名
日期:2018 年 6 月 6 日星期三 16:52:24 +0530

SUREREQ-6877:Support of PATCH and OPTIONS

Change-Id: I011e3e3c22954774e99462c585a54cf9a0aad428

commit 8b1059922745a605851f4a9bd6cae3193a85c62c 作者:作者姓名
日期:2018 年 6 月 6 日星期三 16:49:15 +0530

SUREREQ-6877:Support of PATCH and OPTIONS

Change-Id: Ic9d9e7e787f8a826f18f361cf0c20930c42bf04b

commit 7f2ec936f4133988194b14dca910fb921a6946be (origin/master, 原点/头)

【问题讨论】:

    标签: git gerrit


    【解决方案1】:

    似乎问题不在最后一次提交中。问题(缺少的 Change-Id)可能出在父提交上。执行git log 命令并检查您的提交历史记录,寻找任何没有Change-Id 的新提交。请记住:所有新提交都必须具有唯一的 Change-Id。如果是这种情况,您需要使用 git rebase -i 命令将 Change-Id 添加到提交中。

    【讨论】:

    • 我没有添加它,但我检查了它是否显示了正确的 id 和用户名。
    【解决方案2】:

    您提交 041a9f9deeae886c9771995a1463d40ca2d3fa3c 是一个合并提交,它没有更改 ID。这可能是在本地创建的,Git 不会在合并提交时运行 commit-msg 挂钩。您需要确保先解决此问题,然后才能提交更改。

    【讨论】:

      【解决方案3】:

      尝试git pull origin -r master 将缺少Change-Id 的合并提交展平。合并提交是多余的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-25
        • 2021-08-07
        • 2020-12-30
        • 1970-01-01
        • 2021-03-26
        • 2017-12-07
        • 2023-03-30
        • 2021-09-15
        相关资源
        最近更新 更多