相信大多数人在刚开始使用 git 的时候,都使用过下面的命令来配置自己的 user 信息:
git config --global user.name xxx
git config --global user.email xxx
在配置完了之后,一个问题也随之产生,为什么我只用填这俩,而不需要填写登录密码呢?其实,在这里设置的信息并不是你访问 git 仓库时需要的登录信息,而是你的 提交者 身份。
为什么不需要填写登录密码?
我们先把所谓的提交者身份放一下,先来把这个密码问题解决了。实际上,你在使用git config
之前已经完成密码的配置了。
没错就是ssh
登录,首先使用ssh-keygen
生成密匙,再将公钥上传至 github,之后就可以通过 ssh 访问 github 了。这个过程其实就是所谓的“登录”。当你使用 ssh 连接后,每次远程操作都会自动验证你本地的私钥和 github 上的公钥是否匹配,从而完成了身份验证。
既然已经有了身份验证了,那么自然就不需要再输入密码了,接下来我们了解下user.name
和user.email
究竟是代表了什么,也就是所谓的提交者身份。
提交者身份
通过git config
指定的name.name
和user.email
就代表了提交者(你)的身份。
很多人都认为,使用git config
配置提交者身份就是为了指定自己要登录哪个 github 账户,这个观念其实是错误的。或者更直白一点,在本地机器上甚至没有“登录某个账户”的说法。提交者身份和 github 并不是一对一的关系,为什么呢?因为一个大家都听说过的概念:git 是版本控制工具,github 是基于 git 的代码托管服务。
git 是服务于 提交者 的,而 github 是服务于 github用户 ,两者是多对多关系,如下:
-
本地可以在多个 github 账户中上传公钥来绑定 github 用户
-
github 账户中可以在设置里配置多个 email 来绑定本地提交者
这么说可能有点懵,用一句话解释就是:本地的git
并不关心你是哪个github
或其他代码托管平台的用户。github
也不关心你的提交者身份。
github 总览中提交代码不显示小绿点
详细很多人都遇到过这个问题,其实这个问题就是提交者和 github 账号的绑定关系没有处理好导致的。我们先来看一下 github 在收到你的提交请求之后都做了那些统计工作:
你可以打开你 github 设置中的 email 选项卡,里面默认会有你注册时填写的邮箱,只要这个邮箱和你提交代码时设置的user.email
一致,github 就会认为这次提交时所属于本账户的,就会显示小绿点。
而如果你填的user
信息不一致甚至不填信息。对于 github 来说关系不大,站在 github 的角度来说,只要你的ssh
验证成功了,那你就可以向我账户里提交代码,只不过我不认为你是我账户所属的提交者罢了 (不显示小绿点 )。
总结
本文就本地 git 配置的user
信息作出了一些分析,并对于user
信息和github
账户直接的关系作出了解释,自己的一点拙见,如果有不同的看法欢迎留言讨论。
网友评论