Git 配置 GPG 提交签名

使用 GPG 对 Git 提交进行签名,可以证明该提交确实是你本人提交的。这在团队协作和代码审核中非常有用,GitHub/GitLab 等平台也会显示 "Verified" 标签。


🧩 一、检查是否已安装 GPG

bash 复制代码
gpg --version

如果未安装,可使用以下命令安装:

Ubuntu/Debian:

bash 复制代码
sudo apt install gnupg

CentOS/RHEL:

bash 复制代码
sudo yum install gnupg
复制代码
macOS:
bash 复制代码
brew install gnupg

🔐 二、生成 GPG 密钥

bash 复制代码
gpg --full-generate-key

根据提示选择:

  1. 密钥类型: 选择默认(RSA and RSA)

  2. 密钥长度: 建议使用 4096

  3. 有效期限:1y(一年),或 0(永久有效)

  4. 名字和邮箱: 建议与 Git 使用的保持一致

  5. 密码: 用于保护私钥,强烈建议设置


📋 三、查看你的 GPG 密钥 ID

bash 复制代码
gpg --list-secret-keys --keyid-format=long
复制代码
你需要记下你的ID,假设为ABCDEF1234567890(这就是你的 GPG key ID)

⚙️ 四、配置 Git 使用该密钥

bash 复制代码
git config --global user.signingkey ABCDEF1234567890

设置默认使用 GPG 签名提交:

bash 复制代码
git config --global commit.gpgsign true

指定 GPG 程序(系统上用哪个就配置哪个):

bash 复制代码
git config --global gpg.program gpg

# 或者

bash 复制代码
git config --global gpg.program gpg2

🧪 五、测试是否能签名

bash 复制代码
echo "test" | gpg --clearsign

如果提示你输入密码并生成了签名文本,就表示配置成功。


🖥️ 六、解决 GPG 无法输入密码的问题

有些终端环境下 GPG 无法弹出密码输入窗口,可指定 pinentry 程序:

bash 复制代码
vim ~/.gnupg/gpg.conf
复制代码
增加一行:
bash 复制代码
pinentry-mode loopback

然后

bash 复制代码
 gpgconf --kill gpg-agent
 gpgconf --launch gpg-agent

🌐 七、将 GPG 公钥添加到 GitHub(或 GitLab)

导出公钥:

bash 复制代码
gpg --armor --export ABCDEF1234567890

复制输出内容,添加到:


🔎 八、调试排错常用命令

  • 查看当前 Git 配置:

bash 复制代码
git config --list | grep gpg
  • 临时跳过 GPG 签名提交:

    bash 复制代码
    git commit --no-gpg-sign
  • 永久关闭签名提交:

    bash 复制代码
    git config --global commit.gpgsign false
相关推荐
一袋米扛几楼982 小时前
【Git】规范化协作:详解 GitHub 工作流中的 Issue、Branch 与 Pull Request 最佳实践
前端·git·github·issue
尘埃落定wf2 小时前
# GitHub CLI:告别繁琐的 Git 命令,让开发更高效
git·github
恋喵大鲤鱼2 小时前
git clone
git·git clone
金牛IT4 小时前
Gogs 轻量级 Git 服务器搭建与使用
运维·服务器·git
Qres82115 小时前
Git安装记录
git
wj30558537816 小时前
Codex + Git 开发环境配置指南(WSL版)
linux·运维·git
楠枬19 小时前
Git 分支管理
git
奇怪的点21 小时前
git clone失败
git
WaiSaa21 小时前
Ubuntu配置Git免密操作
git·ubuntu·gitee
牛奶咖啡131 天前
Git实践——分支管理与标签管理及git个性化配置
git·禁用 fast forward·bug分支的创建与操作·远程分支的查看与推送·拉取仓库·推送指定分支到远程仓库·标签的创建与操作