咦,你的Git仓库贡献者里怎么有这么多大佬???

之前在分享文章的时候有人说我们 AirPower4T 这个开源项目的 Git 仓库为什么有这么多大佬参与了贡献:

今天出一期如何操作的教程吧~(确实挺无聊的)

Github 贡献者机制

因为 Git 分布式设计的原因,其本身没有账号机制,而是使用本地配置的 邮箱 作为贡献者的唯一标识,昵称作为 Git 提交记录中显示的用户名称:

bash 复制代码
git config --global user.email "admin@hamm.cn"
git config --global user.name "Hamm"

Github 的底层也是使用了 Git ,所以虽然 Github 有了账号机制,但如何和 Git 的用户关联,就只能使用 邮箱 作为唯一标识了。

如果对应的邮箱没有注册 Github 的话,Github会生成一些默认的邮箱地址和头像昵称来 蒙混过关
哦对了,Github 也会为一些机器人Bot设置一些乱七八糟的邮箱来避免和真实的邮箱重复,导致贡献列表混乱。

所以我们只需要在本地将本地配置的 邮箱 设置为 Github 上相同的邮箱账号上,这样 Github 就能识别出这个 Git 提交记录的贡献者了。

如何找到其他人的邮箱?

Git 的每一次提交都会包含提交者的邮箱和昵称,于是我们可以找到其他人的开源仓库,克隆下来看一下提交记录即可找到了。

比如这就看到了 你们都认识的 那个不懂Vue的男人:

接下来,你就可以通过 git config 将这个邮箱设置为你的 Git 邮箱账号,接下来你的提交记录就会绑定这个邮箱了。

然后,你一 git pushGithub 就会认为你就是邮箱对应的用户,就会把 Github 对应邮箱的账号作为贡献者加到你的代码仓库贡献者列表了。

Github这个设计算漏洞吗

算,也不算。

因为 Git 的设计本身就如此,Github 也没办法直接改掉这个设计。而且,你也只是在你自己的仓库里小打小闹,问题不大,而且这个提交也不会触发任何和该邮箱相关的一些通知事件,所以其邮箱本人也是毫不知情,也没有被邮件通知打扰。

但是吧,毕竟就这么稀里糊涂的被其他人加到贡献者里了,也不太好。(我的代码仓库底下说明了,贡献者列表是闹着玩的)

Github加入了GPG签名

Github 在很早就引入了 GPG 签名机制,允许用户使用 GPG 密钥对提交进行签名,从而保证提交记录的完整性和真实性。

但是,这个 GPG 签名机制并不会改变 Github 的贡献者机制,也就是说,如果你的提交记录没有 GPG 签名,Github 也会认为你是提交者,只不过没有 GPG 签名而已。

Github 如何确认邮箱提交者通过认证?

提交公钥

sequenceDiagram GPG--)GPG: 生成公钥 GPG-)用户: 保存公私钥 用户->>Github: 提交公钥

如何生成 GPG 公私钥,你可以在网络上搜索其他的教程。你只需要将你的 GPG 公钥填写到这里:github.com/settings/gp...

提交代码

sequenceDiagram 用户--)用户: 提交前私钥签名 用户->>Github: 带签名提交代码 Github--)Github: GPG公钥验证签名 Github-)用户: 确认允许或拒绝PUSH

此时就完成了用户的 GPG 签名验证,但如果需要直接拒绝 git push,你需要在这里开启一下:

如果不开启的话,用户不签名依然能 git push ,只是会打上一个 未签名 的标签而已。

总结

今天分享的东西有点无聊,就这样吧~

Bye~

相关推荐
fanruitian3 小时前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo3 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk3 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
2501_944525545 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
李白你好5 小时前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端
极智-9966 小时前
GitHub 热榜项目-日榜精选(2026-02-02)| AI智能体、终端工具、视频生成等 | openclaw、99、Maestro等
人工智能·github·视频生成·终端工具·ai智能体·电子书管理·rust工具
刘一说6 小时前
Vue 组件不必要的重新渲染问题解析:为什么子组件总在“无故”刷新?
前端·javascript·vue.js
徐同保7 小时前
React useRef 完全指南:在异步回调中访问最新的 props/state引言
前端·javascript·react.js
刘一说8 小时前
Vue 导航守卫未生效问题解析:为什么路由守卫不执行或逻辑失效?
前端·javascript·vue.js
一周七喜h8 小时前
在Vue3和TypeScripts中使用pinia
前端·javascript·vue.js