git
本地用户和远程用户使用
目的:当有远程账号的用户名和邮箱密码,主要想测试本地账号用户名和邮箱与远程账号用户名和密码是否要求一致? 如果不一致会出现什么情况?
情况说明:我测试三个远程仓库(
github
,码云
,自建的gitlab
),和一个本地仓库。
账号情况如下:
账号 | 用户名 | 邮箱 |
---|---|---|
本地账号全局 | ermore | mzhmzh0109@163.com |
github | ermore | mzhmzh0109@163.com |
码云 | ermore | 980523493@qq.com |
由于git本地仓库可以设置本地仓库的用户和邮箱,所以当想切换本地仓库
测试流程
使用本地全局账号:用户名ermore
,邮箱mzhmzh0109@163.com
-
先把本mac电脑上的ssh公有密钥添加到
github
和码云
上。 -
本地电脑新建测试仓库
test_git
。新建文件为README.md
内容如下:主要用来测试不同账号远程仓库不同的区别(保证本地的ssh公钥都已经发送到两个远程仓库中去) 本地账号 用户名 ermore 邮箱 mzhmzh0109@163.com github 用户名 ermore 邮箱 mzhmzh0109@163.com 码云 用户名 ermore 邮箱 980523493@qq.com
-
git
初始化,添加远程仓库操作,执行如下命令。git init # 新建git 仓库 git add . # 添加本地仓库下所有的文件(只有README.md文件) git commit -m "测试git仓库" # 提交git仓库 # 使用 git log 查看提交日志 git log # 可以看出使用的用户名 ermore 和 邮箱 mzhmzh0109@163.com ``` commit cd1be2d4014ffac297941510a7df61bdab91fe0b (HEAD -> master) Author: ermore <mzhmzh0109@163.com> Date: Mon Dec 16 16:18:45 2019 +0800 测试git仓库 ``` # 添加远程仓库 github ( 在 github 同时新建一个测试的仓库 ) git remote add github https://github.com/ermore/test_git # 添加远程仓库 git git push github master # 推送到远程仓库(此时需要输入密码) ``` Username for 'https://github.com': ermore Password for 'https://ermore@github.com': 枚举对象: 3, 完成. 对象计数中: 100% (3/3), 完成. 使用 8 个线程进行压缩 压缩对象中: 100% (2/2), 完成. 写入对象中: 100% (3/3), 424 字节 | 424.00 KiB/s, 完成. 总共 3 (差异 0),复用 0 (差异 0) To https://github.com/ermore/test_git * [new branch] master -> master ``` # 添加远程仓库 码云 (同时需要在码云上 新建一个对应的测试仓库) git remote add gitee https://gitee.com/ermore/test_git # 添加码云远程库 git push gitee master # 推送到远程仓库 (此时也是需要输入密码和账号) ``` Username for 'https://gitee.com': ermore Password for 'https://ermore@gitee.com': 枚举对象: 3, 完成. 对象计数中: 100% (3/3), 完成. 使用 8 个线程进行压缩 压缩对象中: 100% (2/2), 完成. 写入对象中: 100% (3/3), 424 字节 | 424.00 KiB/s, 完成. 总共 3 (差异 0),复用 0 (差异 0) remote: Powered by GITEE.COM [GNK-3.8] To https://gitee.com/ermore/test_git * [new branch] master -> master ```
上述操作之后,没有发现用户名或者邮箱对远程仓库的影响? 猜测可能原因是当使用免密登录时,可能会出现本地账号和远程账号用户名信息不同,远程登录不行?(也就是说的识别不出来)。使用
https//
当做远程仓库的仓库链接好像是不能用作ssh
进行免密登录需要更改为ssh
的链接设置。git 操作如下:
# 先修改一下READMD.md 修改成如下文件 ``` 主要用来测试不同账号远程仓库不同的区别(保证本地的ssh公钥都已经发送到两个远程仓库中去) 本地账号 用户名 ermore 邮箱 mzhmzh0109@163.com github 用户名 ermore 邮箱 mzhmzh0109@163.com 码云 用户名 ermore 邮箱 980523493@qq.com # 当使用https 进行远程仓库的地址 都是在每次提交或者推送到远程的过程中,都是需要使用用户名或者密钥的 ``` git add . # 重新提交缓存 git commit -m "准备使用ssh进行免密登录" # 提交至仓库 ``` [master b1ce28f] 准备使用ssh进行免密登录 1 file changed, 4 insertions(+) ``` # 添加github ssh 远程仓库 git@github.com:ermore/test_git.git git remote add ssh_github git@github.com:ermore/test_git.git # 添加ssh_github的仓库 git push ssh_github master # 推送本地仓库的master分支到远程 ``` The authenticity of host 'github.com (52.74.223.119)' can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts. 枚举对象: 5, 完成. 对象计数中: 100% (5/5), 完成. 使用 8 个线程进行压缩 压缩对象中: 100% (2/2), 完成. 写入对象中: 100% (3/3), 445 字节 | 445.00 KiB/s, 完成. 总共 3 (差异 1),复用 0 (差异 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:ermore/test_git.git cd1be2d..b1ce28f master -> master ``` # 添加 gitee 远程仓库 git@gitee.com:ermore/test_git.git git remote add git@gitee.com:ermore/test_git.git # 添加 ssh_gitee的远程仓库 git push ssh_gitee master # 推送到本地仓库master分支到gitee远程库 ``` The authenticity of host 'gitee.com (212.64.62.174)' can't be established. ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'gitee.com,212.64.62.174' (ECDSA) to the list of known hosts. 枚举对象: 5, 完成. 对象计数中: 100% (5/5), 完成. 使用 8 个线程进行压缩 压缩对象中: 100% (2/2), 完成. 写入对象中: 100% (3/3), 445 字节 | 445.00 KiB/s, 完成. 总共 3 (差异 1),复用 0 (差异 0) remote: Powered by GITEE.COM [GNK-3.8] To gitee.com:ermore/test_git.git cd1be2d..b1ce28f master -> master ```
都能成功进行推送,而且都不需要密码。说明免密登录与本地(用户,邮箱)和远程仓库(用户,邮箱)没有关系?
结论:能否免密远程登录与本地的账号信息和远程账号信息无关,只需要远程的服务器存放本地的ssh公钥即可。
远程仓库用户名与本地账号信息的用户名之间的区别到底是什么呢?
-
尝试在电脑的另外的位置新建文件夹,将github上的
test_git
仓库克隆下来,通过修改克隆下来的仓库本地用户名和邮箱(miaozhaohui和980523493@qq.com)两个选项。 -
再次修改
README.md
文件的内容,重新提交git仓库。具体内容如下:主要用来测试不同账号远程仓库不同的区别(保证本地的ssh公钥都已经发送到两个远程仓库中去) 本地账号 用户名 ermore 邮箱 mzhmzh0109@163.com github 用户名 ermore 邮箱 mzhmzh0109@163.com 码云 用户名 ermore 邮箱 980523493@qq.com # 当使用https 进行远程仓库的地址 都是在每次提交或者推送到远程的过程中,都是需要使用用户名或者密钥的 # 在另外一个文件夹中 克隆了github上ssh的仓库,同时将本地的用户名和邮箱更改为miaozhaohui 980523493@qq.com
-
重新提交到
github
对应的仓库和gitee
的仓库中,发现:识别出来整个
test_git
仓库是由两个用户进行提交和使用的。由于
gitee
使用的980523493@qq.com
邮箱注册的,而且在gitee
中注册的别名为也是ermore
,所以会出现两个ermore
用户贡献了这个仓库。而在
github
则显示是两个用户贡献了这个仓库,分别是ermore
和miaozhaohui
。整个设置还是跟仓库中设置的是一样的。
结论:
不管是本地仓库的
用户名
,邮箱
还是远程仓库登录账号的用户名
,邮箱
。远程仓库识别是根据邮箱
识别的。
- 当你本地仓库使用的
邮箱
与远程仓库使用的邮箱
是一致的,远程仓库做的修改或者本地仓库做的修改,视为同一个用户做的修改。- 用户唯一id编号是根据
邮箱
进行识别的。- 远程登录或者说免密登录跟本地
用户名
和邮箱
完全无关。- 想要免密登录远程仓库,需要将仓库链接修改成
ssh
协议的链接,同时把本机的ssh
公钥发送到远程仓库段。
网友评论