# Mac下配置多个Git账户

Mac下配置多个Git账户

代码托管到github、gitlab、gitee上,每个托管平台都对应一个git账户。一般情况下,一台电脑的Git只对应一个账户,只能往一个网站push代码,很不方便。==> 在本地使用两个或多个Git账号

准备工作

首次次安装Git时,往往会使用如下的命令配置全局用户名和邮箱:

git config --global user.name "xxx"  # 配置全局用户名,如Github上注册的用户名
git config --global user.email "yyy@mail.com"  #配置全局邮箱,如Github上配置的邮箱

不同的Git仓库默认的用户名和邮箱都是这个值。由于需要管理多个账户,所以仅使用这个全局值是不够的.

在每个仓库中单独配置。

如果已配置过,先重置

git config  --unset user.name
git config  --unset user.email

在项目目录中单独配置

git config user.name  'lili'
git config user.email  'l***@**.com'

查看账户配置

git config  user.name
git config  user.email

配置步骤

1. 对每个账户生成一对密钥

在~/.ssh下(假如gitee上邮箱是Balopy)

ssh-keygen -t rsa -C "Balopy@163.com"

(/Users/liugui/.ssh/id_rsa): 冒号后面是让输入秘钥名的;

ls命令,可以看到刚刚生成的密钥id_rsa_Balopy和 公钥id_rsa_Balopy.pub。

同理,对其他账户,使用同样的方法。

2.开起代理,并将私钥加入到代理中

eval "$(ssh-agent -s)" 
/// 将私钥加入到代理中
ssh-add ~/.ssh/id_rsa_github // 将GitHub私钥添加到本地
ssh-add ~/.ssh/id_rsa_gitlab // 将GitLab私钥添加到本地

为了检验本地是否添加成功,可以使用ssh-add -l命令进行查看

3. 对本地秘钥进行配置

由于添加了多个密钥文件,所以需要对这多个密钥进行管理。在.ssh目录下新建一个config文件:

touch config

文件中的内容如下

#网站的别名,随意取
Host Balopy
# 托管网站的域名
HostName gitee.com 
#指定优先使用哪种方式验证,支持密码和秘钥验证方式
PreferredAuthentications publickey 
# 托管网站上的用户名,最好写账户邮箱,否则容易设置失败
User lueng@163.com
# 使用的密钥文件
IdentityFile ~/.ssh/id_rsa_Balopy_gitee

# GitLab的配置相同
Host wang
HostName gitee.com
PreferredAuthentications publickey
User wang@268xue.com
IdentityFile ~/.ssh/id_rsa

如果报以下错误,需要检查一下,用户名是否是邮箱,或域名是否按要求设置


配置错误的情况

注意:
Host 是别名,替代的是 gitee.com, 在push/pull代码是,
切记格式:

git@gitee.com:balopy/Demo_Swift_2.0.git  // 原仓库地址
git@Balopy:Balopy/Demo_Swift_2.0.git     // 使用时用别名
git clone Balopy:balopy/Demo_Swift_2.0.git //如clone 时用别名

4. 公钥添加到托管网站

登录GitHub,点击右上角头像选择设置,在打开的页面中选择SSH

测试一下配置是否成功,测试命令使用别名。例如,对于GitHub,本来应该使用的测试命令是:

ssh -T gitee.com // 单账号使用原域名,
ssh -T Balopy   // 多账号测试时使用别名
测试配置成功

如何使用

使用有两种情况,一种情况是从远端拉取代码到本地,一种是本地已有仓库需要与远程仓库关联。

1.如果是从远端拉取代码

选择SSH协议的复制命令,如对于GitLab上代码库test,其复制命令为

git clone git@gitee.com:Balopy/test.git

由于使用了别名gitlab,所以实际使用的复制命令应当为:

git clone Balopy:Balopy/test.git

这种方法较为简单,修改后的代码无需额外配置,可以直接push/pull

2. 如果是本地已有的仓库

如果本地已有仓库,需要与远端进行关联,进入本地仓库文件夹,单独配置该仓库的用户名和邮箱

git config user.name "Balopy"
git config user.email "Balopy@163.com"

然后,进入本地仓库的git目录,打开config文件

cd .git   // 如果是新建文件夹需要先执行git init
vim config  //新建config 文件

在config文件中,修改(config文件中已有remote "origin"信息)或者添加(config文件中不包含remote "origin"信息)分支信息:

[remote "origin"]
        url = git@Balopy:Balopy/test.git  //域名使用别名,原git@gitee.com
        fetch = +refs/heads/*:refs/remotes/origin/*

如果使用原域名会报错,因为config 设置了别名

使用原域名会报错

使用别名clone

使用别名成功
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。