之前在分享文章的时候有人说我们 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 push
, Github 就会认为你就是邮箱对应的用户,就会把 Github 对应邮箱的账号作为贡献者加到你的代码仓库贡献者列表了。
Github这个设计算漏洞吗
算,也不算。
因为 Git 的设计本身就如此,Github 也没办法直接改掉这个设计。而且,你也只是在你自己的仓库里小打小闹,问题不大,而且这个提交也不会触发任何和该邮箱相关的一些通知事件,所以其邮箱本人也是毫不知情,也没有被邮件通知打扰。
但是吧,毕竟就这么稀里糊涂的被其他人加到贡献者里了,也不太好。(我的代码仓库底下说明了,贡献者列表是闹着玩的)
Github加入了GPG签名
Github 在很早就引入了 GPG 签名机制,允许用户使用 GPG 密钥对提交进行签名,从而保证提交记录的完整性和真实性。
但是,这个 GPG 签名机制并不会改变 Github 的贡献者机制,也就是说,如果你的提交记录没有 GPG 签名,Github 也会认为你是提交者,只不过没有 GPG 签名而已。
Github 如何确认邮箱提交者通过认证?
提交公钥
如何生成 GPG 公私钥,你可以在网络上搜索其他的教程。你只需要将你的 GPG 公钥填写到这里:github.com/settings/gp...
提交代码
此时就完成了用户的 GPG 签名验证,但如果需要直接拒绝 git push
,你需要在这里开启一下:
如果不开启的话,用户不签名依然能 git push
,只是会打上一个 未签名
的标签而已。
总结
今天分享的东西有点无聊,就这样吧~
Bye~