海南网站推广建设,韩国化妆品网站模板,哈尔滨市香坊区建设局网站,网站开发技术大学教材本来想叫《GitHub骚操作》的#xff0c;发现相关的文章已经有很多#xff0c;而且和我本章要讲的内容完全不同#xff0c;所以就换了这个也算贴切的标题。起因之前写过一篇文章《VM Manager 插件分享》#xff0c;事后我发现有个地方不对劲#xff01;看之前文章标题大家应… 本来想叫《GitHub骚操作》的发现相关的文章已经有很多而且和我本章要讲的内容完全不同所以就换了这个也算贴切的标题。起因之前写过一篇文章《VM Manager 插件分享》事后我发现有个地方不对劲看之前文章标题大家应该都能猜到这是一篇分享我自己开发的插件的文章内容比较简单没有什么问题问题是出在这个项目上。我自己有两个 GitHub 账号一个用于个人学习和测试(hzh-test)另一个用来做分享(hzh-cocong)。在以前我本地用的一直都是 hzh-test 这个账号。VM Manager 这个插件是放在 hzh-cocong 上的我在一开始开发的时候直接用 HTTPS 地址克隆项目(git clone https://github.com/hzh-cocong/VM-Manager.git)结果如大家所料代码无法 push 到 GitHub 仓库因为 push 用的是 hzh-test 身份而这个项目是属于 hzh-cocong 所有的。于是我设置了本地项目的 user.name 和 user.email发现还是无法提交搞了很久都没成功最后无奈改成 SSH 方式才提交成功。(以前是弄过 SSH 的只是没完全懂又觉得麻烦所以习惯用 HTTPS 的方式)就这样项目愉快地上线了文章也发出去了。虽然没什么人看但毕竟是自己发布的第二篇文章所以我还是很关注的没事我就会去看看有没有人 start 或者 fork。很遗憾一个人也没有 ?。在这个过程中我偶然发现一个问题请看下图。这个项目我不是用的 hzh-cocong 的身份创建和开发的吗怎么多了个 hzh-test而且除了最开始的提交后面的提交都是 hzh-test。真是逆天了还能不能愉快地玩耍了一番研究后我发现了 GitHub 不为人知的秘密缘由相信不少人第一次用 GitHub 都是去网上搜索教程而网上的教程第一步大都要我们先设置 user.name 和 user.email 这两个全局变量。于是自然而然地我们会把这些变量和我们的 GitHub 身份联系在一起。我这个本地 VM Manager 项目默认用的也是全局配置(虽然前面说到我做了修改不过后面又改回来了)所以在 Git 的历史提交记录中其记录的是 hzh-test而在项目提交时所做的密码验证或者 SSH 配置其实只是在确认用户身份(hzh-cocong)和 user.name 和 user.email 没有任何关系。前面说到我修改了 user.name 和 user.email 仍然无法提交就是这个原因。(HTTPS 方式克隆的第一次提交是要输入用户名和密码的这里也可以看出其是和项目配置无关的不然怎么还要输入用户名直接输密码不就行了。)其实如果是使用 HTTPS 克隆项目的话在第一次使用 GitHub 并在提交时输入 GitHub 的用户名和密码后Git 就会把密码保存在本地钥匙串中(这里说的是 MacWindows 好久没用了应该也是一样的)之后的每一次提交都是直接从钥匙串中获取不需要重新输入密码。所以我之前切换 GitHub 身份不一定非要使用 SSH直接修改钥匙串中的用户名和密码或者删除钥匙串内容(下次提交会重新提示输入用户名和密码)就可以切换身份了。秘密问题终于水落石出了这是由于 GitHub 上的提交记录显示的是我们配置的 user.email 对应的用户而非真实提交的用户。那这样的话如果我把本地的 user.name 和 user.email 修改成别人的岂不是能够伪造出一个“人人为项目做贡献”的假象答案是“是的”。不过这里有个前提你得知道别人的邮箱是什么。网上搜索了一下很轻松地就找到了方法。这里有详细的教程有兴趣大家可以去看一下在 GitHub 公开仓库中隐藏自己的私人邮箱地址这里我简单说明一下。随便寻找一个 GitHub 项目查看最近的提交记录点击查看更改的内容如https://github.com/hzh-test/test/commit/1b8650e55e1a0eb7b1c3c004144587178945593f在地址末位加上 .patch如https://github.com/hzh-test/test/commit/1b8650e55e1a0eb7b1c3c004144587178945593f.patch这样我们就拿到了别人的邮箱(这个是可以屏蔽的个人觉得没必要网上大多也都没有屏蔽)。有了邮箱就好办了我们直接用以下命令设置项目。$ git config --local user.name walterlv$ git config --local user.email xxxxxxqq.com接下来所有的提交就都是用的我们设置的本地用户名和邮箱于是就有了下面这张图。(我和 walterlv 完全不认识)虽然我们自己操作的项目可以伪造贡献者信息但是对于被伪造的用户是没有任何影响的其个人主页并不会说在最近有参与别人的项目。GitLab 我试了一下在 Git Log 中是有作用的不过它在网页上用的是真实提交的用户所以不会有 GitHub 这个问题。思考到这里秘密不再是秘密。细细想来其实这也只能是自娱自乐罢了不过我觉得还是挺有意思的。严格来说这不是 GitHub 的问题因为这是 Git 本身拥有的功能所以不应该算是一个问题但总是让人觉得有点别扭不知道大家怎么看参考链接在 GitHub 公开仓库中隐藏自己的私人邮箱地址(https://blog.walterlv.com/post/remove-personal-emails-from-public-repos.html)吕毅