求助:解决GitHub提交时的Unverified错误与DCO错误
解决GitHub提交的Unverified与DCO错误
一、修复Unverified提交状态
Unverified状态是因为提交身份未被GitHub验证,按以下步骤处理:
- 检查本地Git邮箱配置:运行
git config user.email,确保该邮箱已添加并完成验证(GitHub设置路径:设置 → Emails),未添加的话先完成添加和验证流程。 - 若邮箱正确仍显示Unverified,需配置GPG签名提交:
- 生成GPG密钥:执行
gpg --gen-key,全程使用与GitHub关联的邮箱完成配置。 - 导出公钥:
gpg --armor --export 你的关联邮箱,复制输出的公钥文本。 - 在GitHub设置 → SSH and GPG keys → New GPG key,粘贴公钥并保存。
- 配置Git使用该密钥签名:先通过
gpg --list-secret-keys --keyid-format LONG获取密钥ID,再执行git config --global user.signingkey 你的GPG密钥ID。 - 开启全局自动签名:
git config --global commit.gpgsign true,后续所有提交都会自动签名。
- 生成GPG密钥:执行
二、修复DCO错误
DCO(开发者来源证书)错误是因为提交信息缺少Signed-off-by: 姓名 <邮箱>签名行,分场景处理:
单个未通过的提交
- 执行
git commit --amend --no-edit -s,该命令会在原有提交信息末尾自动添加签名行,保留提交内容不变。 - 强制推送到远程分支:
git push --force-with-lease(多人协作分支需先确认无他人修改)。
多个未通过的提交
- 执行
git rebase -i HEAD~N(N为需要修正的提交数量),在弹出的编辑器中,将需要修改的提交前的pick替换为edit,保存退出。 - 对每个进入编辑状态的提交,执行
git commit --amend --no-edit -s,完成后运行git rebase --continue,直到所有提交处理完毕。 - 最后强制推送:
git push --force-with-lease。
避免后续DCO错误
每次提交时添加-s参数,示例:git commit -s -m "修复XX功能";或者配置Git自动添加签名行:
- 创建
.gitmessage文件(路径可自定义,比如~/.gitmessage),写入内容:
Signed-off-by: $(git config user.name) <$(git config user.email)>
- 执行
git config --global commit.template ~/.gitmessage,后续提交时会自动加载该模板添加签名行。
内容的提问来源于stack exchange,提问作者Jatin
相关产品推荐
相关产品推荐

