使用 GPG 对 Git 提交进行签名,可以证明该提交确实是你本人提交的。这在团队协作和代码审核中非常有用,GitHub/GitLab 等平台也会显示 “Verified” 标签。
🧩 一、检查是否已安装 GPG
gpg --version
如果未安装,可使用以下命令安装:
Ubuntu/Debian:
sudo apt install gnupg
CentOS/RHEL:
sudo yum install gnupg
macOS:
brew install gnupg
🔐 二、生成 GPG 密钥
gpg --full-generate-key
根据提示选择:
-
密钥类型: 选择默认(RSA and RSA)
-
密钥长度: 建议使用
4096
-
有效期限: 如
1y
(一年),或0
(永久有效) -
名字和邮箱: 建议与 Git 使用的保持一致
-
密码: 用于保护私钥,强烈建议设置
📋 三、查看你的 GPG 密钥 ID
gpg --list-secret-keys --keyid-format=long
你需要记下你的ID,假设为ABCDEF1234567890
(这就是你的 GPG key ID)
⚙️ 四、配置 Git 使用该密钥
git config --global user.signingkey ABCDEF1234567890
设置默认使用 GPG 签名提交:
git config --global commit.gpgsign true
指定 GPG 程序(系统上用哪个就配置哪个):
git config --global gpg.program gpg
# 或者
git config --global gpg.program gpg2
🧪 五、测试是否能签名
echo "test" | gpg --clearsign
如果提示你输入密码并生成了签名文本,就表示配置成功。
🖥️ 六、解决 GPG 无法输入密码的问题
有些终端环境下 GPG 无法弹出密码输入窗口,可指定 pinentry
程序:
vim ~/.gnupg/gpg.conf
增加一行:
pinentry-mode loopback
然后
gpgconf --kill gpg-agentgpgconf --launch gpg-agent
🌐 七、将 GPG 公钥添加到 GitHub(或 GitLab)
导出公钥:
gpg --armor --export ABCDEF1234567890
复制输出内容,添加到:
-
GitHub: https://github.com/settings/keys
-
GitLab: 用户头像 → Settings → GPG Keys
🔎 八、调试排错常用命令
-
查看当前 Git 配置:
-
git config --list | grep gpg
-
临时跳过 GPG 签名提交:
git commit --no-gpg-sign
-
永久关闭签名提交:
git config --global commit.gpgsign false