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

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

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

Github 贡献者机制

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

bash 复制代码
git config --global user.email "[email protected]"
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~

相关推荐
zfyljx3 分钟前
五子棋html
前端·css·html
蓑笠翁0011 小时前
Python异步编程入门:从同步到异步的思维转变
linux·前端·python
桃林春风一杯酒2 小时前
Cannot Run Git: Cannot identify version of Git executable: no response
git
~菜鸟笔记~3 小时前
Git笔记
笔记·git
程序员小杰@3 小时前
✨WordToCard使用分享✨
前端·人工智能·开源·云计算
larntin20023 小时前
vue2开发者sass预处理注意
前端·css·sass
Enti7c3 小时前
利用jQuery 实现多选标签下拉框,提升表单交互体验
前端·交互·jquery
10000hours4 小时前
【Git】【commit】查看未推送的提交&查看指定commit的修改内容&合并不连续的commit
git
江畔独步4 小时前
Git 基础操作系列2: 本地项目上传至git仓库(gitee / gitlab / github)
git·gitee·gitlab
SHUIPING_YANG4 小时前
在Fiddler中添加自定义HTTP方法列并高亮显示
前端·http·fiddler