配置
邮箱
Settings -> Access -> Emails
- 邮箱的作用:
- 登录 Github
- 归属于 Github 账户邮箱地址的提交将绑定你的账户(即能识别为你的账户的提交)
- 各种通知
- 可以设置多个邮箱,一个主邮箱
- 可以设置保护你的邮箱地址,并阻止邮箱地址为你的邮箱地址的提交,如果开启后者,你需要设置邮箱地址为 @users.noreply.github.com 后缀的那个,如下,我的公开邮箱地址是 37324769+sean2077@users.noreply.github.com

SSH Key
配置多个 SSH Key
有些情况你需要多套 SSH Key,如你在公司电脑上,提交到 Github 的需要一套 name、email 和 SSH Key,而提交到 Github 则需要另一套 name、email 和 SSH Key。
GPG 签名
为什么需要签名
Git 提交签名(Signed Commits)主要用于提高代码安全性和可信度,常见原因如下:
- 证明作者身份
签名提交后,只有拥有对应密钥的人才能生成该签名。这样可以证明这条提交确实是你本人(或你的密钥持有者)所做,防止他人伪造你的提交。
提交很容易伪造
在不启用签名的情况下,Git 的提交者信息(
user.name和user.email)是用户本地配置的字符串,你可以随意填写任何名字和邮箱,比如:bash
git config user.name "Linus Torvalds" git config user.email "torvalds@linux-foundation.org"然后你提交的代码,别人看到的就是这个名字和邮箱,没有任何验证机制。
- 防止篡改
签名是对 commit 内容的加密摘要。任何人如果试图修改提交内容,签名都会失效,GitHub/其它平台会标记为“Unverified”。保证代码在传输和协作过程中没有被恶意篡改。
- 增加可信度
在开源项目、企业内部审计等场景,签名提交能让团队或外部用户确信代码的来源和完整性,减少供应链攻击风险。
- 合规/安全要求
很多企业或开源项目要求所有贡献者都使用签名提交,以满足安全合规要求(如 ISO、SOC2、GDPR 等)。
- 自动化和审计
部分 CI/CD 流程会检查 commit 是否已签名,只有通过验证的提交才能进入生产环境。这也是实现自动化安全审计的基础。
Note
你可以在 GitHub 上看到 “Verified” 标志,这说明提交已通过签名验证,增强了信任。
GPG 的作用
-
加密/解密 用于对文件或消息进行加密和解密,保证数据的机密性。例如,发送加密邮件,只有持有私钥的人才能解密内容。
-
签名/验证 用于数字签名,证明内容的真实性和完整性。例如,给 Git 提交或软件包签名,别人可以验证内容确实由你发布且未被篡改。
-
密钥管理 GPG 还负责生成、导入、导出和撤销密钥。
GPG 既能加密,也能签名。你可以只用它签名(比如 Git commit),也可以用它加密和签名(比如邮件、文件)。它是通用的加密和签名工具,并不是专门只做签名。
GPG 签名设置流程
Note
Git 版本要求: Git 2.0+(建议使用最新版本) GPG 版本要求: GPG 2.2+(建议使用最新版本)
以下是常见的 GPG 签名设置流程:
生成 GPG 密钥
如果你还没有 GPG 密钥,可以通过命令行生成:
gpg --full-generate-key按提示选择密钥类型(一般选 RSA 和 RSA),然后设置密钥长度(推荐 4096),最后输入你的姓名、邮箱和密码。
Note
注意设置邮箱最好和 git 配置的邮箱一致,否则签名会失败。
获取 GPG 公钥
生成密钥后,使用以下命令获取你的公钥:
gpg --list-secret-keys --keyid-format LONG
gpg --armor --export <你的 GPG key ID>Note
你可以用以下命令来查看你本地 GPG 密钥的 key ID:
gpg --list-secret-keys --keyid-format LONG输出类似于:
/Users/youruser/.gnupg/secring.gpg - sec rsa4096/3AA5C34371567BD2 2023-08-29 [SC] 1234567890ABCDEF1234567890ABCDEF12345678 uid Your Name <youremail@example.com> ssb rsa4096/ABCDEF1234567890 2023-08-29 [E]其中,
rsa4096/3AA5C34371567BD2,斜杠后的部分(如 3AA5C34371567BD2)就是你的 GPG key ID。如果你有多个密钥,会显示多行。选择你用于 GitHub 签名的那一行即可。
将 GPG 公钥添加到 GitHub
- 登录 GitHub,进入 Settings > SSH and GPG keys 页面。
- 点击 New GPG key,粘贴上一步导出的公钥内容,保存。
配置 Git 使用你的 GPG 密钥
设置你的 Git 用户邮箱与密钥一致:
git config --global user.email "你的邮箱"设置默认签名密钥:
git config --global user.signingkey <你的 GPG key ID>开启自动签名提交:
git config --global commit.gpgsign true验证签名提交
提交时,Git 会自动用你的 GPG 密钥进行签名。你也可以手动签名:
git commit -S -m "你的提交信息"推送到 GitHub 后,提交记录会显示 “Verified” 标记。
注意事项:
- 你的 GPG 密钥邮箱需和 GitHub 账号邮箱一致。
- Windows 用户建议用 Git Bash 或 WSL。
- 如果遇到
gpg: signing failed: ...错误,可以检查环境变量或者 GPG 代理设置。
如需更详细教程可参考 GitHub 官方文档。