git提交到github总是要输入密码_GitHub不为人知的秘密

本来想叫《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。很遗憾,一个人也没有 ?。

在这个过程中,我偶然发现一个问题,请看下图。

e4723e1f1ca010becf89877318a6395f.png

这个项目我不是用的 hzh-cocong 的身份创建和开发的吗?怎么多了个 hzh-test,而且除了最开始的提交,后面的提交都是 hzh-test。真是逆天了!还能不能愉快地玩耍了!

d5fd6f66eeb623aa56cbb8bf32253485.png

一番研究后,我发现了 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 就会把密码保存在本地钥匙串中(这里说的是 Mac,Windows 好久没用了,应该也是一样的),之后的每一次提交都是直接从钥匙串中获取,不需要重新输入密码。

3b97f75f62fb812dd3601171c5fddf66.png

所以我之前切换 GitHub 身份不一定非要使用 SSH,直接修改钥匙串中的用户名和密码,或者删除钥匙串内容(下次提交会重新提示输入用户名和密码),就可以切换身份了。

秘密

问题终于水落石出了,这是由于 GitHub 上的提交记录显示的是我们配置的 user.email 对应的用户,而非真实提交的用户。那这样的话,如果我把本地的 user.name 和 user.email 修改成别人的,岂不是能够伪造出一个“人人为项目做贡献”的假象?答案是“是的”。

不过这里有个前提,你得知道别人的邮箱是什么。网上搜索了一下,很轻松地就找到了方法。这里有详细的教程,有兴趣大家可以去看一下,在 GitHub 公开仓库中隐藏自己的私人邮箱地址,这里我简单说明一下。

随便寻找一个 GitHub 项目,查看最近的提交记录,点击查看更改的内容,如:https://github.com/hzh-test/test/commit/1b8650e55e1a0eb7b1c3c004144587178945593f

9a227b11b397a73849522e3b6cfe5089.png

在地址末位加上 .patch,如:https://github.com/hzh-test/test/commit/1b8650e55e1a0eb7b1c3c004144587178945593f.patch

ac8bd20e2ffe637a01e6cdc299ef55e8.png

这样,我们就拿到了别人的邮箱(这个是可以屏蔽的,个人觉得没必要,网上大多也都没有屏蔽)。有了邮箱就好办了,我们直接用以下命令设置项目。

$ git config --local user.name "walterlv"
$ git config --local user.email "xxxxxx@qq.com"

接下来所有的提交就都是用的我们设置的本地用户名和邮箱,于是就有了下面这张图。(我和 walterlv 完全不认识)

889746311a0c5c48e28570403aa3ee91.png

虽然我们自己操作的项目可以伪造贡献者信息,但是对于被伪造的用户是没有任何影响的,其个人主页并不会说在最近有参与别人的项目。GitLab 我试了一下,在 Git Log 中是有作用的,不过它在网页上用的是真实提交的用户,所以不会有 GitHub 这个问题。

思考

到这里,秘密不再是秘密。细细想来,其实这也只能是自娱自乐罢了,不过我觉得还是挺有意思的。严格来说,这不是 GitHub 的问题,因为这是 Git 本身拥有的功能,所以不应该算是一个问题,但总是让人觉得有点别扭,不知道大家怎么看?

参考链接

在 GitHub 公开仓库中隐藏自己的私人邮箱地址(https://blog.walterlv.com/post/remove-personal-emails-from-public-repos.html),吕毅

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis中大于号以及小于号的表达方式

mybatis使用的是xml格式的文件。使用>和<号的时候&#xff0c;会存在与xml的标签的规范冲突。 1.场景还原 在实际项目中&#xff0c;有很多需求需要通过设定一个具体的时间段来搜索或过滤所需的数据&#xff0c;今天笔者就mybatis中时间比较涉及到的大于&#xff0c;小于…

ug冲模标准件库_昆山兴模lt;携手gt;武汉益模,打通冲模“智能设计+精益管理”的最后一道关卡...

武汉益模科技股份有限公司是国内领先的工业互联网及智能制造的解决方案提供商&#xff0c;为模具、装备、军工、汽车、家电及等有柔性化生产需求的工厂提供专业的智能设计/信息化管理/智能加工/数字化工厂等工业软件、工业机器人自动化以及智能装备&#xff0c;拥有麦格纳、安波…

简述网络调研的作用_利用龙伯球透镜天线提升高铁4G网络覆盖

透镜天线&#xff0c;一种能够通过电磁波&#xff0c;将点源或线源的球面波或柱面波转换为平面波从而获得笔形、扇形或其他形状波束的天线。通过合适设计透镜表面形状和折射率 n&#xff0c;调节电磁波的相速以获得辐射口径上的平面波前。透镜天线吸收了许多光信息工程技术&…

SQLIntegrityConstraintViolationException: 异常解决

SQLIntegrityConstraintViolationException: Duplicate entry ‘xxx’ for key yyyzzz’异常解决 一. 异常现象 在做Java Web项目操作数据库添加数据的时候&#xff0c;突然发现曝出如下图所示异常&#xff1a; Caused by: java.sql.SQLIntegrityConstraintViolationExceptio…

一步怎么测量图片_测量不容易?15套测量仪器实操手册+自动计算表格,自学也可以...

测量不容易&#xff1f;15套测量仪器实操手册自动计算表格&#xff0c;自学也可以很多施工羡慕测量工资高&#xff0c;但是测量工资高也就意味着责任大&#xff0c;施工在休息的时候测量就下工地了&#xff0c;施工聚会的时候&#xff0c;测量在埋头苦算。如果施工想要干测量该…

Java 中判断一个字符串是否包含另外一个字符串的方法

方法一&#xff1a;indexOf(String s) 可以配合indexOf(String s)的使用&#xff0c;如果包含&#xff0c;返回的值是包含该子字符串在父类字符串中起始位置&#xff1b;如果不包含必定全部返回值为-1 public void test02() {String str1"张三";String str2"是…

速看!销冠高效给客户群发消息的秘诀

你是不是也有过这样的疑问&#xff1a;明明都是给客户群发消息&#xff0c;为什么别人的成交率那么高&#xff0c;自己却效果一般呢&#xff1f; 今天就给大家分享销冠常用的高效群发消息秘诀&#xff0c;让大家都能更好地与客户进行沟通&#xff0c;提高成交率&#xff01; …

不显示_电脑不显示桌面图标怎么办?

在现在这个社会时代中&#xff0c;人们对电脑的使用频率非常的高&#xff0c;电脑可以说已经成为了大家在生活中不可或缺的必备品。但是在使用电脑过程中的时候也都容易出现故障。那么&#xff0c;若碰上 电脑开机后只显示桌面的背景而没有任何程序和应用的情况&#xff0c;莫急…

Xshell 的基本使用

软件长这样 Xshell 链接地址 一、输入 ifconfig 查看 linux ip 地址 二、远程连接服务器 三、测试连接

Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释

Java中String类的concat方法 在了解concat&#xff08;&#xff09;之前&#xff0c;首先需要明确的是String的两点特殊性。 长度不可变值不可变 这两点从源码中对String的声明可以体现&#xff1a; private final char[] value ;其中final对应值的不可更改的特性&#xff1b…

大于小于优化_架构 - 以MySQL为例,详解数据库索引原理及深度优化

一、摘要本文以MySQL数据库为研究对象&#xff0c;讨论与数据库索引相关的一些话题。特别需要说明的是&#xff0c;MySQL支持诸多存储引擎&#xff0c;而各种存储引擎对索引的支持也各不相同&#xff0c;因此MySQL数据库支持多种索引类型&#xff0c;如BTree索引&#xff0c;哈…

c++byte数组和文件的相互转换_终于!word、excel、ppt文件相互转换技巧来了!

不知道大家在用Office软件的时候&#xff0c;有没有遇到过这样的问题。做了个Word文档总结&#xff0c;却需要转换成PPT上台汇报&#xff1b;做了个Word表格统计&#xff0c;却需要转换成Excel进行分析&#xff1b;做了个Excel图表分析&#xff0c;却需要放到Word或PPT上&#…

java多线程之ThreadLoal详解

一、ThreadLocal简介 多线程访问同一个共享变量时特别容易出现并发问题&#xff0c;特别是在多个线程需要对一个共享变量进行写入时。为了保证线程安全&#xff0c;一般使用者在访问共享变量时需要进行适当的同步 同步一般是通过加锁来实现的,但这对用户有一定要求,加重了使用…

JVM经典五十问

文章目录1.什么是JVM?内存管理2.能说一下JVM的内存区域吗&#xff1f;3.说一下JDK1.6、1.7、1.8内存区域的变化&#xff1f;4.为什么使用元空间替代永久代作为方法区的实现&#xff1f;5.对象创建的过程了解吗&#xff1f;6.什么是指针碰撞&#xff1f;什么是空闲列表&#xf…

增量更新同步_OneDrive增量更新功能正式推出 仅同步文件更改部分降低网络占用...

微软的云存储应用OneDrive目前用户量还是蛮多的&#xff0c;不过在功能更新方面OneDrive动作相对来说还是有些慢的。比如非常实用的增量更新功能直到最近微软才正式推出&#xff0c;现在所有个人和企业级用户都可以使用增量更新功能喽。增量更新功能还是有网友在 2014 年向微软…

Vue 封装的过渡与动画

一、作用&#xff1a;在插入、更新或移除DOM元素时&#xff0c;在合适的时候给元素添加样式类名 二、图示 三、写法&#xff1a; 元素进入的样式 v-enter | v-enter-active | v-enter-to元素离开的样式 v-leave | v-leave-active | v-leave-to使用 transition 包裹要过渡的元…

使用navicat for mysql 创建外键foreign keys时,总会自动创建索引indexs

使用navicat for mysql 创建外键foreign keys时&#xff0c;总会自动创建索引indexs。如果删除这个索引就会提示错误error 1553:cann’t drop index…:needed in a foreign key constraint。请教各位&#xff0c;该如何解决呢&#xff0c;不想要indexs 这个好像必须要吧 主键默…

固定 顶部_优质的阳光板温室的顶部应该如此安装,专业的人做专业的事

阳光板温室多为文洛型&#xff0c;多采用一跨多顶&#xff0c;外形现代&#xff0c;结构稳定&#xff0c;形式美观大方&#xff0c;视觉流畅&#xff0c;保温性能卓越&#xff0c;透光率适中&#xff0c;多雨槽&#xff0c;大跨度&#xff0c;排水量大&#xff0c;抗风能力强&a…

json对象、json字符串的区别和相互转换

开发时&#xff0c;json字符串和json对象傻傻分不清楚&#xff0c;ajax异步请求后&#xff0c;会根据返回的data值判断请求是否成功&#xff0c;访问data.msg会提示‘undefined’&#xff0c;将data转换为json对象即可。 一、json对象、json字符串的区别 1、json对象 json对…

idea中常用的快捷键以及一些奇淫技巧 , 加快我们的开发效率

idea中常用的快捷键以及一些奇淫技巧 &#xff0c; 加快我们的开发效率 &#xff01;&#xff01;&#xff01; 知道类名查找你本地以的类 &#xff08;你pom中依赖的类你自己创建的类&#xff09;------------- ctrlshiftt 修改你创建的变量 以及你后面都引用的变量 &#x…