Mac下配置多个Git账户

前言:鼠鼠最近入职快手,也是人生中第一个大厂offer,公司发的mac,用了一段时间mac之后,自己的windows电脑已经很久没用了,我经常需要将代码托管到github、gitlab这样的网站上。公司的代码需要托管到gitlab上,自己的开源代码托管到GitHub上,每个托管网站都对应一个git账户。默认情况下,一台电脑的Git只对应一个账户,只能往一个网站push代码,非常不便。这篇博客将介绍如何在一个Git终端中配置多个账户,同时管理多个托管网站的代码。

准备工作

在初次安装git的时候,你肯定执行过下面的命令配置全局用户名和邮箱

arduino 复制代码
git config --global user.name "xxx" // 配置全局用户名
git config --global user.email "yyy@mail.com" // 配置全局邮箱

如果不确定是否已经配置过,可以使用下面的命令查看

lua 复制代码
git config --global user.name
git config --global user.email

由于需要管理多个账户,所以仅仅使用全局值是不够的,需要在每个仓库中单独配置。 请使用下面的命令来清除全局git配置!!!!这很重要

css 复制代码
git config --global --unset user.name
git config --global --unset user.email

开始配置

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

首先进入保存秘钥的目录:

bash 复制代码
cd ~/.ssh // 进入目录,该目录下保存生成的秘钥,如果没有这个文件,就手动创建

然后,根据账户邮箱生成秘钥。例如我在GitHub上的邮箱是1505994122@qq.com,则命令为:

perl 复制代码
ssh-keygen -t rsa -C "1505994122@qq.com"

输入完成后,会有如下提示:

vbnet 复制代码
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/toby/.ssh/id_rsa):

这里要求对秘钥进行命名,默认的文件名是id_rsa。为了方便区分,我这里命名为id_rsa_github。接下来的提示都直接进行回车,直到秘钥生成。通过ls命令,可以看到刚刚生成的密钥对id_rsa_githubid_rsa_github.pub。其中id_rsa_github.pub是公钥。

同样,对于GitLab上的账户,是用公司邮箱注册的,按照同样的步骤生成id_rsa_gitlab的秘钥对。接下来的步骤,除额外说明外,两个账户的操作完全相同。

2. 私钥添加到本地

SSH协议的原理,就是在托管网站上使用公钥,在本地使用私钥,这样本地仓库就可以和远程仓库进行通信。在上一步已经生成了秘钥文件,接下来需要使用秘钥文件,首先是在本地使用秘钥文件:

javascript 复制代码
ssh-add ~/.ssh/id_rsa_github // 将GitHub私钥添加到本地
ssh-add ~/.ssh/id_rsa_gitlab // 将GitLab私钥添加到本地

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

3. 对本地秘钥进行配置

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

arduino 复制代码
touch config

文件中的内容如下:

javascript 复制代码
Host github.com // 网站的别名,最好和HostName一致,后面省去不少麻烦
HostName github.com // 托管网站的域名
User tobyhhw // 托管网站上的用户名
IdentityFile ~/.ssh/id_rsa_github // 使用的密钥文件

// GitLab的配置相同
Host  xxx.com
HostName xxx.com
User  xxx
IdentityFile ~/.ssh/id_rsa_gitlab

4. 公钥添加到托管网站

以GitHub为例,先在本地复制公钥。进入.ssh目录,使用vim id_rsa_github.pub查看生成的GitHub公钥,全选进行复制。

登录GitHub,点击右上角头像选择settings,在打开的页面中选择SSH and GPG keys,

在打开的页面的Key输入框中粘贴刚刚复制的公钥,title的名字自己随便去,然后点击下方的Add SSH key按钮:

至此,托管网站的公钥添加完成。总结来说,就是针对每个托管网站分别生成一对密钥,然后分别添加到本地和托管网站。

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

css 复制代码
ssh -T git@github.com

在config文件中,给GitHub网站配置的别名就是github.com,所以不需要改变,这就是为什么前面我说别名最好和HostName一样

**

css 复制代码
ssh -T git@github.com

5.如何使用

1.从远端拉取代码

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

bash 复制代码
git clone git@github.com:tobyhhw/test.git

这里还是需要使用别名,所以实际使用的复制命令还是不变:

bash 复制代码
git clone git@github.com:tobyhhw/test.git

从这里可以看出前面把别名和HostName设置为一样可以省多少事了,如果你的别名和HostName不一致,这里举个例子

javascript 复制代码
Host github.com 
HostName github 
User tobyhhw // 托管网站上的用户名
IdentityFile ~/.ssh/id_rsa_github // 使用的密钥文件

原命令为:

bash 复制代码
git clone git@github.com:tobyhhw/test.git

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

ruby 复制代码
git clone git@github:tobyhhw/test.git

是不是很麻烦?

2. 单独配置该仓库的用户名和邮箱

因为没有配置全局的git,所以我们需要对每一个仓库配置各自的用户名和邮箱

arduino 复制代码
git config user.name "tobyhhw"
git config user.email "1505994122@qq.com"

到这里就全部配置完毕啦,大家可以愉快的推送和拉取代码了

相关推荐
int WINGsssss5 小时前
Git使用
git
用户0760530354387 小时前
Git Revert:安全移除错误提交的方式
git
Good_Starry19 小时前
Git介绍--github/gitee/gitlab使用
git·gitee·gitlab·github
云端奇趣1 天前
探索 3 个有趣的 GitHub 学习资源库
经验分享·git·学习·github
F_D_Z1 天前
【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem:
网络·git·网络协议·ssl
等风来不如迎风去1 天前
【git】main|REBASE 2/6
git
艾伦~耶格尔1 天前
IDEA 配置 Git 详解
java·ide·git·后端·intellij-idea
云兮杜康1 天前
IDEA中用过git之后文件名颜色全变红
java·git·intellij-idea
睡不醒的小泽1 天前
git merge 和 git rebase
git
艾伦~耶格尔1 天前
Git 下载及安装超详教程(2024)
git·gitee·码仓