window10系统 配置多个git账号攻略


一、引文:

(因为我个人是用的码云[gitee],所以该文档则以gitee为例,github基本雷同)
[语雀搬迁–点击进入语雀传送门]

文档背景:

不少公司的代码都是通过gitlab管理的。
个人平时大多使用gitee仓库或者是github来托管自己的私有代码。
所以很可能会遇到git多账号切换的问题。

问题分析:

1、默认设置
通常我们都会把git账号设置为全局即(global), 类似于这种:

git config --global user.name "penn.ji" //配置全局用户名,如Gitee上注册的用户名
git config --global user.email "penn.gitlab@xxx.com" //配置全局邮箱,如Gitee上配置的邮箱

2、账号差别
由于公司的gitlab, 大多是使用公司的个人邮箱来管理。
而个人的gitee或者github,则一般是自己的私人邮箱来管理。
所以,大多数时候,我们是在一台电脑进行开发的。
因工作和个人的仓库地址、用户名和邮箱都不一样,很多时候一个git账号无法满足工作和个人学习并行的需求。
3、常见的解决方式:
操作不同项目时,根据项目切换git的对应配置。
缺点:
1、每次都要查看一下当前的git账号,然后每次修改都需要切换一下配置。
2、万一有哪次忘记修改,可能就会导致提交错误或者更严重的问题。

那有没有更好的同存解决方案呢?

为了解决这个问题,
该文档 便记录了我在探究这个问题的部分曲折历程以及常见的一些坑。 主要目的:
可以在windows 系统配置多个git账号,且各个账号互不影响。
从而保障我能够在同一台电脑上,根据不同账号pull或者push不同的仓库。


二、具体步骤(以gitee+gitlab为例):

范例邮箱账号:
penn.gitee@xxx.com
penn.gitlab@xxx.com

第一步:清除全局配置

如果你已经全局配置过git账号,那么一定要先把全局的配置给清除掉。
请 执行以下命令:

git config --global --list  // 看一下是否配置过user.name 和 user.email
git config --global --unset user.name // 清楚全局用户名
git config --global --unset user.email // 清楚全局邮箱

第二步:删除已经生成过的密钥

如果你已经全局配置过git账号,那么你一定生成过全局ssh密钥。 这个密钥通常在 ~/.ssh 目录下。
如我的电脑密钥位置为:C:\Users\penn.ji\.ssh,如图:
image.png

第三步:生成新的密钥

因为你需要关联多个账号,所以同理也需要生成多个ssh密钥。【注意:需在.ssh目录下操作,否则会生成的密钥默认会存放至system的位置】
1、生成gitee的密钥

ssh-keygen -t rsa -C "penn.gitee@xxx.com" // 根据该邮箱生成新的SSH密钥

命令行输入上面指令后,会有如下提示, 如图:
image.png
图解:
Enter file in which to save the key (/z//.ssh/id_rsa): id_rsa_gitee:提示你是否需要重新设置一个密钥名称。
ps:因为我们需要配置多个账号,所以需要设置一个密钥名称,用于区别。
gitee的密钥名称我设置为: id_rsa_gitee 对应个人的gitee仓库:penn.gitee@xxx.com

Enter passphrase (empty for no passphrase): 输入仓库密码 切记密码不要输错了
Enter same passphrase again: 再次输入密码


2、生成gitlab的密钥
操作步骤和上面的一样,不再赘述。
为了区分,gitlab的密钥名称我设置为: id_rsa_gitlab 对应的gitee仓库:penn.gitlab@xxx.com



第四步:添加公钥到远端仓库

如果你配置过git的全局账号,则这一步你应该已经很熟悉了,可以直接跳过。
密钥生成后,会在.ssh目录下,生成如下两个文件,如图:
image.png
图解:
id_rsa_gitee 该文件是私钥
id_rsa_gitee_pub 该文件是公钥

远端配置:
我们需要的是把密钥配置进我们的远端仓库内,此处拿gitee举例:
登陆gitee,点击右上角的设置,如图:
image.png
点击 左侧导航栏的 安全设置 中的 SSH公钥,如图:
image.png
然后把ssh密钥配置进去,
image.png
把你的id_rsa_gitee_pub文件打开,复制密钥,拷贝进去,点击确定即可。
gitlab的设置基本雷同,不再赘述。

如果设置的是gitee,你的邮箱可能会收到类似提示,如图:
image.png
以上,
为密钥生成和公钥配置。


第五步:配置密钥管理文件

为了更方便的管理多个git账号,我们需要一个config的配置文件,用来集中配置。
在.ssh目录下,创建config文件。
vim ~/.ssh/config
配置如下:

Host gitee.com
HostName gitee
User jipengju
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee

Host  gitlab.com 此处为公司的私仓地址,此处先以gitlab代替
HostName gitlab  为远端仓库的别名, 简写 例如: 配置后 git@gitee.com 可以写为 git@gitee
User penn.ji
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitlab
Port 2222

配置图解:
Host ---------远端仓库的别名,简写 例如: 配置后 git@gitee.com 可以写为 git@gitee
HostName ---------远端仓库地址或IP(不支持配置端口)
User ---------仓库上的用户名
PreferredAuthentications ---------强制使用Publickey验证
IdentityFile ---------指向仓库私钥的绝对路径
Port ---------远端仓库端口,一般不需要设置,特殊情况除外

PS:端口这个地方我踩了坑,因为公司的仓库端口没有代理。
我开始没有配置该项,由于公司仓库链接地址的默认端口为22,导致我一直测试链接不成功。
耽误了不少时间才定位到是端口的问题。
所以一定要确定公司仓库是否有端口,【如果有的话,一定要单独设置一下 Port】~~~~~~


第六步:添加私钥到本地

配置完公钥后,还需要再设置一下私钥,不然使用会有问题。
首先请输入命令:

ssh -v git@gitee.com // 查看一下ssh连接情况

会提示你是否继续连接,此处输入yes

在这里插入图片描述

然后输入命令:

 // ssh-agent是一个linux命令,主要是用来管理密钥的。
 
 ssh-agent-s  // -s 生成Bourne shell 风格的命令输出

成功的话,你会得到类似这样的输出:
Agent pid 14578
如图:
image.png


这一步,你可能会遇到这样的问题:could not open a connection to your authentication agent.
image.png
[提示连接失败]
解决办法:命令如下:

eval `ssh-agent -s`  或者 eval "$(ssh-agent -s)"

接着继续执行私钥,将SSH key添加到ssh-agent。

ssh-add ~/.ssh/id_rsa_gitee // 将gitee私钥添加到本地
ssh-add ~/.ssh/id_rsa_gitlab // 将gitlab私钥添加到本地

如图:
image.png
这一步,你可能会出现这样的问题:Permission denied (publickey)
image.png
[提示没有权限]

可以参照官方文档排查[ [github SSH问题排除]传送门]
总结起来无非就是几种原因:
1、检查远程服务器IP和端口是否错误,确保可以正确连接
2、检查密钥密码锁是否设定有误,确保密码可以登陆远端仓库
3、检查公钥是否正确添加到远端仓库

以上均检查没问题后,
解决办法:重复执行私钥

ssh-add -k ~/.ssh/<你当前的rsa文件> // 可以把密码添加到钥匙串以后只需要ssh-add就可以了

ssh-add ~/.ssh/id_rsa_gitee // 将gitee私钥添加到本地
ssh-add ~/.ssh/id_rsa_gitlab // 将gitlab私钥添加到本地

或者这样的问题:
一直提示你密码输入错误,密码输入不通过后提示这样:
Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
我当时遇到这个问题的原因是,我把gitlab的密码输入错误导致的,解决办法和上面一样。

上一步操作正常后,
如果你在创建密钥时输了密码,则会提示:
Enter passphrase for /homex/.ssh/id_rsa:
输入创建密钥时的密码,回车即可。

添加完之后,可以使用以下命令检测私钥是否置成功。

ssh-add -l

输出如图,则证明添加成功了。
image.png

第七步:测试一下仓库连接

测试命令:

ssh -T git@gitee [第五步的Host配置过的简写]  或者 ssh -T git@gitee.com   [全拼]
ssh -T git@gitlab [第五步的Host配置过的简写] 或者 ssh -T git@gitlab.com  [全拼]    

出现类似如图提示,则证明你完成了所有的配置项,远程仓库连接成功!
image.png

第八步:单独指向设置

因为git分为 System > Global > Local 三级。 分别为:系统级、全局、仓库级。
如果没有进行此步设置,你可能会遇到push代码时, 提交的用户名变成你的系统主机名。
不要慌张,
这里需要你单独设置一下。为什么呢? 还记得第一步的时候,我们清除了global的配置吗,也就意味着,后面的配置我们不上升至全局,而只针对具体项目。
所以,
我们要对每个仓库,单独配置用户名信息。
假设我们要配置github的某个仓库,如图,我要设置components-test的git配置
image.png
我需要以仓库级(local) 设置一下当前仓库的git相关配置:

git config --local user.name "penn.ji"
git config --local user.email "penn.gitee@xxx.com"

设置完后,查看该仓库的git配置信息:

git config --local --list

如图,则意为设置成功。

在这里插入图片描述

其他仓库也设置其对应的git账户信息。

DONE:恭喜你!至此你已经完成了git多账号配置的全部流程!

此时,你的git账号已经完全独立互不干扰,你可以通过不同的git账号,在不同的仓库pull或者push了!!!

完结撒花❀❀❀❀❀❀❀❀~~




以上,
就是本次配置攻略的全部过程,如果能够帮助到你, 麻烦给个小赞支持一下~~~~~

  • 17
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

penn.ji

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值