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
相关推荐
sulikey18 分钟前
从零配置一个规范的 Python Git 仓库(适用于 Gitee / GitHub)
git·python·pycharm·gitee·github
学渣676563 小时前
【面向小白】git rebase全面总结,什么时候用rebase
git
小龙报4 小时前
《算法每日一题(1)--- 第31场蓝桥算法挑战赛》
c语言·开发语言·c++·git·算法·学习方法
222you7 小时前
idea整合Git
git
今禾10 小时前
Git完全指南(下篇):Git高级技巧与问题解决
前端·git·github
Molesidy12 小时前
【Git】【TortoiseGit】TortoiseGit安装与基础使用
git
lichong95119 小时前
Git 检出到HEAD 再修改提交commit 会消失解决方案
java·前端·git·python·github·大前端·大前端++
222you21 小时前
Git仓库推送到GitHub
git·github
你的人类朋友1 天前
hotfix分支的使用
git·gitlab·github
小蜜蜂爱编程1 天前
gerrit的部署与配置关联到不同服务器上的git仓库
运维·服务器·git·gerrit