远程拒绝推送并提交必须具有有效签名

Moj*_*ojo 6 git github

我在进行推送时收到此错误

git push
Enumerating objects: 13, done.
Counting objects: 100% (13/13), done.
Delta compression using up to 8 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 586 bytes | 195.00 KiB/s, done.
Total 7 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6), completed with 6 local objects.
remote: error: GH006: Protected branch update failed for refs/heads/master.
remote: error: Commits must have valid signatures.
To https://github.com/xxx-xxx-xxx
 ! [remote rejected]   master -> master (protected branch hook declined)
error: failed to push some refs to 'https://github.com/xxx-xxx-xxx'
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Mad*_*hat 17

GitHub 有一个分支保护设置,启用后将只允许将使用经过验证的签名签名的提交推送到分支。此设置位于 GitHub 上每个存储库的设置 -> 分支 -> 分支保护规则下。

\n

在此输入图像描述

\n

如果您无法控制存储库设置,则必须在推送到 GitHub 远程存储库之前签署您的提交。

\n

为了签署您的提交,如果您使用 GPG 密钥,则需要使用以下命令将 Git 配置为使用该密钥(替换keyID为您的 GPG 密钥 ID)。如果您没有安装\xe2\x80\x99t GPG 密钥,您可以生成一个带有gpg --gen-key.

\n
git config --global user.signingkey keyID\n
Run Code Online (Sandbox Code Playgroud)\n

-S然后,您可以通过添加如下标志来签署您的提交

\n
git commit -S -m "commitMessage"\n
Run Code Online (Sandbox Code Playgroud)\n

然后,您可以将提交推送到 GitHub 存储库。

\n

GitHub 有一个关于签名提交的文档,您可以参考。或者,您甚至可以参考有关签署您的工作的git 文档。GitHub 有关要求提交签名的文档位于此处

\n