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"

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

相关推荐
_君莫笑7 小时前
大厂Git使用规范
git
无心水14 小时前
【Hermes:安全、权限与生产环境】39、智能体也会犯错?Hermes 纠错、回滚与遗忘机制全指南 —— 让 AI 的错误像 Git 一样可逆可控
人工智能·git·安全·mcp协议·openclaw·hermes·honcho
南境十里·墨染春水18 小时前
linux学习进展 git详解
linux·git·学习
zhangfeng113319 小时前
CodeBuddy ai对话框上面的git docs terminal Rulds 干嘛用的,以thinkphp fastadmin 为例,插件市场
人工智能·git·编程
OYangxf20 小时前
Git Conflict Resolution
大数据·git·elasticsearch
高斯林.神犇20 小时前
Git全套流程
git
次元工程师!1 天前
LangFlow开发(一)—安装和部署
git·python·大模型·langflow
怣疯knight1 天前
【无标题】
git
Jim-zf1 天前
git 锁文件
git
lcx_defender1 天前
Git常见操作与指令
git