You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在开发容器中签署Git提交?解决GPG私钥缺失报错

容器内Git提交GPG签名失败(无秘钥)的解决办法

1. 确认GPG秘钥是否正确映射到容器

  • 本地Mac执行gpg --list-secret-keys --keyid-format=long,记录你的秘钥ID(比如sec rsa4096/ABCDE1234567890 202X-XX-XX [SC]中的ABCDE1234567890)
  • 进入容器后执行相同命令,检查是否能看到对应私钥。如果没有,检查devcontainer.json的挂载配置,确保包含:
    "mounts": [
      "source=${env:HOME}/.gnupg,target=/home/vscode/.gnupg,type=bind,consistency=cached"
    ]
    
    注意容器内用户目录要匹配(用vscode用户就挂载到/home/vscode/.gnupg,root用户则是/root/.gnupg)

2. 修复GPG目录/文件权限

Mac的.gnupg目录权限严格,挂载到容器后可能权限异常,执行以下命令修复:

sudo chown -R $(whoami):$(whoami) ~/.gnupg
chmod 700 ~/.gnupg
chmod 600 ~/.gnupg/*

然后重启容器内的GPG代理:

gpgconf --kill gpg-agent

3. 配置容器内Git使用正确签名秘钥

  • 替换成你的秘钥ID,执行:
    git config --global user.signingkey ABCDE1234567890
    
  • 确认Git用户邮箱和秘钥绑定邮箱一致:
    git config --global user.email "你的绑定邮箱@xxx.com"
    

4. 检查GPG代理设置

  • 容器内执行echo $GPG_AGENT_INFO,如果为空,手动启动代理:
    gpg-agent --daemon --enable-ssh-support --write-env-file ~/.gpg-agent-info
    source ~/.gpg-agent-info
    export GPG_AGENT_INFO
    
    可以把这几行添加到容器的~/.bashrc或~/.zshrc,实现启动自动加载

内容的提问来源于stack exchange,提问作者a06e

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:03:20