1

我正在处理本地存储库的一个问题,我发现这个错误已在 kernel.org 存储库中修复。

所以现在我正试图从 kernel.org 分支中提取此修复程序并将cherry-pick其提取到我的本地 gerrit。我正在尝试维护来自 kernel.org 分支的提交的提交消息。

当我尝试在本地 gerrit 上推送此修复程序时,我遇到以下错误:

To ssh://<username>@123.321.12.1:1234/mirror-sec/asdfgt/hjks
 ! [remote rejected] <branch> -> refs/for/<branch> (not Signed-off-by author/committer/uploader in commit message footer)
error: failed to push some refs to 'ssh://<username>@123.321.12.1:1234/mirror-sec/asdfgt/hjks'

以下是我遵循的步骤:

  1. 已运行git remote add 'tag' git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
  2. 已运行git fetch 'tag'
  3. 在中搜索提交git log 'tag'/master
  4. 精心挑选所需的特定提交 ID:git cherry-pick <commit-id>
  5. 已运行git commit --amend,以获取樱桃挑选的提交 ID 的新更改 ID
  6. git push很高兴将更改提交到本地 gerrit :git push ssh://<username>@123.321.12.1:1234/mirror-sec/asdfgt/hjks <branch>:refs/for/<branch>

当我按照上述步骤操作时,我遇到了上述错误。

有什么我做错了吗?我忽略的任何信息都会有很大帮助。

谢谢。

4

2 回答 2

2

对于其他人来说,你可以试试这个答案:

git commit --amend -s
于 2020-04-03T13:58:55.263 回答
1

Gerrit 中的项目可以配置为要求在提交消息的页脚中签名,以强制每个更改都由作者、提交者或上传者签名。如果一个项目需要 Signed-off-by 并且提交消息页脚不包含它,则 Gerrit 拒绝推送此错误消息的提交。

通过拥有 Forge Committer 的访问权限可以绕过此策略。

发生此错误的原因可能不同

如果您无权伪造提交者身份:

提交消息页脚中缺少 Signed-off-by 提交消息页脚中包含 Signed-off-by ,但它既不是来自作者、提交者也不是上传者

作者、提交者或上传者的签名包含在提交消息中,但不包含在页脚中(最后一段)

为了能够推送您的提交,您可以修改您的提交并添加已签名的离线或在本地 gerrit 中使用伪造提交者选项

于 2014-09-26T05:10:48.310 回答