咦,你的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~

相关推荐
负责的蛋挞18 分钟前
异步HttpModule的实现方式
java·服务器·前端
AC赳赳老秦26 分钟前
防火墙规则批量配置实战:OpenClaw 自动生成模板、批量下发与合规性校验全解析
java·开发语言·人工智能·python·github·php·openclaw
丹宇码农3 小时前
把 HLS 字幕玩出花:zwPlayer 如何让 M3U8 视频支持全文搜索、翻译与码率自适应
前端·javascript·音视频·hls·视频播放器
2501_943782353 小时前
【共创季稿事节】猜数字游戏:二分法思维与交互式反馈
前端·游戏·microsoft·harmonyos·鸿蒙·鸿蒙系统
GV191rLvq3 小时前
基于Socket实现的最简单的Web服务器【ASP.NET原理分析】
服务器·前端·asp.net
吠品3 小时前
LangChain 里 tool_call_id 为空?一次 MCP 工具集成的排查记录
前端
微信开发api-视频号协议4 小时前
企业微信二次开发中的文件系统设计:媒体资源、临时文件与业务附件
前端·微信·企业微信·媒体·ipad·微信开放平台
柒和远方4 小时前
Phase 7.4 学习博客:为什么多 API 项目需要 Swagger / OpenAPI
前端·后端·架构
张龙6874 小时前
拼多多开放平台对接踩坑实录:从 CLIENT_ID 配置到 MD5 签名算法的完整填坑指南
前端