缘起
本人有两个码云账户,日常开发工作需要在两个码云账户来回切换,每次都是修改git config --global
下的用户名、用户邮箱以及删除Windows系统记录的凭据,操作起来让人非常闹心,所以想着在每个仓库下面配置仓库自己的用户名和用户密码,本文记录个人实操的一些操作步骤,希望能对和我有一样困惑的人有所帮助。
操作步骤
我有两个码云的账户,一个是登录账户1603804117@qq.com,一个登录账户是371174229@qq.com
清除全局配置
git config --global --unset user.name
git config --global --unset user.email
可以使用命令git config --global --list
查看是否清除成功。
生成秘钥
输入如下命令,然后一直回车即可。(参考码云帮助:传送门)
cd ~/.ssh/
ssh-keygen -t rsa -C '1603804117@qq.com' -f ~/.ssh/1603804117_rsa
创建成功后,会在本地多两个文件,一个是私钥,一个是公钥,公钥会在后面的配置中使用。
同样的步骤,再给另外一个登录用户生成秘钥,步骤同上。
网站添加ssh公钥
参考文章:传送门
- 登录码云或者GitHub,本文以码云为主。
- 在主页里,点击【头像】-【设置】-【安全设置】-【SSH公钥】、
- 输入一个标题,比如1603804117,将上一步生产的后缀为pub的文件
1603804117_rsa.pub
,以txt文本打开,将里面的内容复制到上图的公钥里面,点击确定,输入自己账号的登录密码保存即可添加成功。
添加本地私钥
ssh-add ~/.ssh/1603804117_rsa
ssh-add ~/.ssh/371174229_rsa
如果添加的过程中出现如下错误:执行ssh-add时添加私钥到git中报错Could not open a connection to your authentication agent
,则执行如下代码:
eval `ssh-agent`
然后再执行上面的代码,可以通过ssh-add -l
测试是否添加成功
测试
ssh -T git@gitee.com
管理秘钥
进入到.ssh目录
cd ~/.ssh
执行命令touch config
新建config文件,执行命令vi config
进入编辑模式,按字母i
或者a
进入插入模式,插入如下内容,按Esc
回到vim的命令模式,输入:wq
三个字符保存退出。
# A账户
Host 1603804117
HostName gitee.com
User YoungHappy
IdentityFile ~/.ssh/1603804117_rsa
# B账户
Host 371174229
HostName gitee.com
User YoungHappy
IdentityFile ~/.ssh/371174229_rsa
该文件分为多个用户配置,每个用户配置包含以下几个配置项:
- Host:仓库网站的别名,随意取(Host 就是可以替代 HostName 来使用的别名)
- HostName:仓库网站的域名(PS:IP 地址应该也可以)
- User:仓库网站上的用户名
- IdentityFile:私钥的绝对路径
输入ssh -T git@1603804117
进行测试,结果如图所示:
仓库配置
已有仓库代码
如果已经有了仓库代码,则需要使用vi命令修改.git
文件夹下面的config
文件中的url
地址
下载仓库代码
复制仓库的ssh地址,将@后面的gitee.com
换成上面设置的Host
(Host相当于是别名,我上面设置的的其中一个仓库的Host是1603804117),这样就起到了区别不同仓库的作用。
git clone git@1603804117:startgis/Runtime.git
仓库配置
对不同仓库的两个账户分别配置用户名和用户邮箱,如下只显示了配置其中一个仓库的代码。进入到上面克隆好的仓库,执行如下代码:
git config user.name "YoungHappy"
git config user.email "1603804117@qq.com"
测试
可以执行git pull
命令进行测试
参考文档