一个git配置两个github账户

0. 前言

不知是否有人像我一样,搞了两个GitHub账号,一个用来正常的和别人合作项目,另一个用来自己写一些代码,希望能做到两个本地账户和远程账号都完全隔离,没有联系,也不会被混淆使用。

当初的我以为只要把同一个 SSH 公钥分别添加到两个 GitHub 账户,再在不同的仓库设置不同的user.nameuser email 就OK了.后来发现我太天真了,并不行,每个公钥只能用一次。然后我就考虑生成两个密钥,分别添加到不同的账户,但是电脑在连接远程仓库时,只能默认选择其中固定的一个来连接,并不会根据我不同仓库的设置选择不同的密钥,结果就是还是只能免密连接一个 GitHub 账户的仓库。

你所使用的 SSH 密钥决定了你是否有权限访问某一个 GitHub 账号下面的仓库,而你本地仓库设置的 use email 决定了在 GitHub 的 commit 记录中的用户,而一般在没有进行以下配置的情况下,你的电脑只会默认使用一个 SHH 密钥进行连接,这就导致了你只能访问一个 GitHub 账号。

然后就到处找教程,但是不知道是否是因为时间太久远了,都是错误的,而且错误都是一样的,最后终于七拼八凑整成功了。

下面将详细介绍方法。

1. 生成密钥

首先是先生成两个SSH密钥,对应你的两个身份(假设为 public 和 private)。

假设你当初已经用ssh-keygen -t rsa -C “youremail@gmail.com”生成了一对秘钥id_rsaid_rsa.pub , 保存在了~/.ssh文件夹内。

然后,你需要再用另一个邮箱生成一对 private 的秘钥ssh-keygen -t rsa -C “private_email@gmail.com” -f private。这时候要注意重命名,否则会覆盖上面的密钥文件。假设我们生成了一对新的秘钥privateprivate.pub。不知道为什么默认生成在 ~/.ssh 目录的上级目录,请将这两个文件复制到 ~/.ssh 下。

然后分别将这两对密钥加入到对应的 GitHub 账户中!!!!

2. 编辑配置文件(这个很重要)

编辑~/.ssh/config文件。如果该文件不存在的话,直接创建一个就好。里面的内容如下:

Host github.com
HostName github.com
IdentityFile C:\Users\chl.ssh\id_rsa
PreferredAuthentications publickey
User chl

Host github1.com
HostName github.com
IdentityFile C:\Users\chl.ssh\id_rsa2
PreferredAuthentications publickey
User chl2

!!!非常重要 Host github1.com:这是自定义的主机别名,你可以在使用 Git 时使用这个别名来代替实际的 GitHub URL。例如,你可以使用 git clone git@github1.com:username/repository.git来代替git clone git@github.com:username/repository.git`。 HostName github.com是默认访问的github账户!!!

==

修改完之后,在git bash运行以下命令(@后面的主机名为上面配置文件中填写的Host选项),检查是否正常。

(先注意一下:这里一定是先把两个公钥添加到对应的 GitHub 账户,再进行下面的 ssh 连接测试,否则肯定是连接不上,会显示 permission denied。)

ssh -T git@github.com
ssh -T git@github1.com

如果都能正常返回如下信息,就说明配置正常。

Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

同样的方式你就可以配置更多的以SSH登录的不同git用户。

3. 配置仓库设置

首先要删除GIT配置的全局用户名和邮件地址,接着在每个项目仓库中按照需求设置不同的user.nameuser.email

# 删除全局设置
git config --global --unset user.name
git config --global --unset user.email

# 添加本地设置
# 设置为私有仓库的GitHub账号邮箱和公有账号的GitHub邮箱。
git config --local user.name xxxx
git config --local user.email xxx

之后在添加远程仓库的时候,把github.com 修改成github_public 或者github_private就好了(即上述文件中的HOST选项),用上面两个 Host 名称来代替原来的github.com ,(这一步很重要)如:

git remote add origin git@github_public:xxx/example.git # public user
git remote add origin git@github_private:xxx/example.git # priavate user

其实,上面的配置文件的意思就是,按照你设置远程仓库时使用不同的 Host 名称,查找~/.ssh/config文件,使用不同的 SSH 文件连接到 GitHub。这样你就将是以不同的身份访问 GitHub 仓库。

4.解决无权限问题

删除.ssh下的两个know… 文件

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值