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
相关推荐
ficker138 小时前
git常用命令
git
kevin_cat13 小时前
微信群机器人-备份文件发送通知
git·bash·企业微信
程序媛Dev17 小时前
50.4k Star!我用这个神器,在五分钟内搭建了一个私有 Git 服务器!
运维·服务器·git
澈轩20 小时前
Git 用得好,下班走得早
git
人间造梦工厂21 小时前
Git Bash 别名
git
画个太阳作晴天1 天前
解决 Android Studio 中 build 目录已被 Git 跟踪后的忽略问题
git
wjs0401 天前
Git常用的命令
java·git·gitlab
原野风霜3241 天前
Git使用总结
git
青草地溪水旁1 天前
Git Bash 中 Git 命令的实用主义指南
git·bash
至善迎风1 天前
版本管理系统与平台(权威资料核对、深入解析、行业选型与国产平台补充)
git·gitee·gitlab·github·svm