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
相关推荐
Carry34515 小时前
不清楚的 .gitignore
前端·git
番茄灭世神1 天前
Git入门使用学习
git·gitee·软件工程·计算机专业入门
南_山无梅落1 天前
团队协作高频Git实用手册(项目实战版)
git·团队开发
就叫飞六吧1 天前
git提取当前分支指定文件历史版本
git
数字游民95271 天前
网站备案全流程回放(腾讯云)
人工智能·git·github·腾讯云·网站备案·waytoopc
Albert Edison1 天前
【Git】多人协作一(同一分支下)
git·vscode·svn·github
学好statistics和DS1 天前
Git 同步冲突
大数据·git·elasticsearch
德彪稳坐倒骑驴2 天前
Git常用命令
git
无限进步_2 天前
【C语言&数据结构】对称二叉树:镜像世界的递归探索
c语言·开发语言·数据结构·c++·git·算法·visual studio
qq_5470261792 天前
Git 使用指南
git