vscode本身不安装gpg签名,需配置git的gpg提交参数并确保其能正确访问本地git和gpg环境;关键步骤包括:确认git路径正确、在vscode终端手动启动gpg-agent、设置user.signingkey和commit.gpgsign为true、验证签名是否生效。

VSCode 本身不“安装 GPG 签名”,它只是调用系统 Git 和 GPG 工具链来完成签名;真正要配的是 Git 的 GPG 提交配置,且 VSCode 必须能正确访问到你本地的 git 和 gpg 环境。
确认 Git 正在使用你手动安装的版本
VSCode 内置终端默认用非登录 shell 启动,常导致 gpg-agent 未加载、gpg 命令找不到或路径错乱。最常见表现是:git commit -S 在终端里成功,但在 VSCode Source Control 视图中点提交却报 error: gpg failed to sign the data 或静默失败。
- 打开 VSCode 终端,运行
which git,确认输出类似/usr/local/bin/git(macOS)或/usr/bin/git(Ubuntu),而不是/snap/bin/git或系统旧版(如 Ubuntu 自带的 2.25) - 在 VSCode 设置中搜索
git.path,手动填入你期望的git路径;若留空,VSCode 可能 fallback 到不可靠的内置或系统路径 - 重启 VSCode —— 配置变更后不重启,
git.path不生效
让 VSCode 终端加载 gpg-agent
Ubuntu/macOS 下,gpg-agent 默认只在登录 shell 中自动启动。VSCode 终端没继承这个环境,git commit -S 就会卡住或报 No pinentry。
- 在 VSCode 终端中执行一次:
gpgconf --launch gpg-agent,这会显式启动 agent 并设置好GPG_AGENT_INFO环境变量 - 为避免每次重启都要手动跑,把以下内容加到你的 shell 配置文件(如
~/.zshrc或~/.bashrc)中:
if [ -z "$GPG_AGENT_INFO" ]; then export GPG_TTY=$(tty) gpgconf --launch gpg-agent export GPG_AGENT_INFO fi
source ~/.zshrc,再验证 echo $GPG_AGENT_INFO 是否有输出检查并设置 Git 的 signingkey 和 gpg.program
Git 需明确知道用哪个密钥、调哪个 gpg 二进制。不同系统上 gpg 路径可能不同(如 macOS 上 Homebrew 安装的是 /usr/local/bin/gpg,Ubuntu 是 /usr/bin/gpg),填错就签名失败。
- 运行
gpg --list-secret-keys --keyid-format LONG,找到sec行末尾那串 40 位字符(如ABC1234567890DEF...),这就是你要设的user.signingkey - 运行
which gpg确认路径,然后执行:
git config --global user.signingkey ABC1234567890DEF... git config --global commit.gpgsign true git config --global gpg.program /usr/bin/gpg
gpg2(已弃用),也不要漏掉 --global —— VSCode 提交走的是全局配置,不是仓库级验证签名是否真被 VSCode 使用
别只信 GitHub/GitLab 页面上显示 “Verified” 就算完。VSCode 提交界面是否真的触发了签名,得看本地日志和行为。
- 在 VSCode 中提交前,先在终端运行:
git config --get user.signingkey和git config --get commit.gpgsign,确保两者都返回预期值 - 提交后立即运行:
git log --show-signature -n 1,输出中必须包含Good signature from ...,而非Can't check signature: No public key - 如果签名成功但 GitHub 不显示 Verified,说明公钥没上传 —— 运行
gpg --armor --export ABC123... | pbcopy(macOS)或gpg --armor --export ABC123... | xclip -selection clipboard(Linux),然后粘贴到 GitHub Settings → SSH and GPG keys 页面
最容易被忽略的是:VSCode 启动时不会自动读取你 shell 配置里的 gpg-agent 启动逻辑,哪怕你已经配置了 ~/.zshrc。它依赖终端首次加载时的环境快照,所以改完配置必须彻底关闭所有 VSCode 窗口再重开,不能只 reload window。











