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

相关推荐
kymjs张涛16 小时前
零一开源|前沿技术周刊 #15
前端·javascript·面试
reacx16 小时前
# 第三章:状态管理架构设计 - 从 Zustand 到 React Query 的完整实践
前端
古夕16 小时前
Vue3 + vue-query 的重复请求问题解决记录
前端·javascript·vue.js
不知名程序员第二部16 小时前
前端-业务-架构
前端·javascript·代码规范
Bug生产工厂16 小时前
React支付组件设计与封装:从基础组件到企业级解决方案
前端·react.js·typescript
小喷友16 小时前
阶段三:进阶(Rust 高级特性)
前端·rust
华仔啊16 小时前
面试官:请解释一下 JS 的 this 指向。别慌,看完这篇让你对答如流!
前端·javascript
Strayer16 小时前
Tauri2.0打包构建报错
前端
小高00716 小时前
💥💥💥前端“隐藏神技”:15 个高效却鲜为人知的 Web API 大起底
前端·javascript
flyliu16 小时前
再再次去搞懂事件循环
前端·javascript