美文网首页
一台设备连接多个Git仓库

一台设备连接多个Git仓库

作者: CoderXLL | 来源:发表于2018-04-18 21:27 被阅读0次

前言

有人说这样能让读者心情愉悦地看文章🤣~

文章背景

因为自己想试着玩一下git的fork与pull request功能。所以注册了两个github账号来做实验。结果发现之前一直在用的A账号push是正常的。新注册的B账号push报错。

Pushing to https://github.com/DistributionCoderXLL/XLLTest.git
remote: Permission to DistributionCoderXLL/XLLTest.git denied to b593771943.
fatal: unable to access 'https://github.com/DistributionCoderXLL/XLLTest.git/': The requested URL returned error: 403

根据上面的报错,发现B账号DistributiionCoderXLL推送失败的原因是受限于A账号b593771943。

解决思想

使用多个SSH Key分别作为本地git仓库与GitHub远程仓库的纽带,这也是新账号不能正常push的原因所在

1. 根据每个账号邮箱对应生成SSH Keys
# 1. 打开ssh存放位置
cd ~/.ssh
# 2.对应每个github账号邮箱生成SSH Key
ssh-keygen -t rsa -C "A邮箱地址" 
ssh-keygen -t rsa -C "B邮箱地址" 
在这个命令下第一个会话的时候,对生成的SSH Key进行命名。如id_rsa_github_one、id_rsa_github_two

进入~/.ssh路径下,可以看到如下几个文件:

对应两个账户的公私钥文件
2. 将两个私钥加入到SSH的agent中
# 1.删除原有agent中的所有私钥
ssh-add -D
# 2.对应将刚刚生成的私钥添加到agent中
ssh-add id_rsa_github_one
ssh-add id_rsa_github_two
# 3.查看添加到agent的私钥列表
ssh-add -l
3.创建映射文件config,来分别映射本地git仓库与GitHub远程仓库
#1.创建config文件
touch config
# 2.打开编辑config文件
vim config
# 3.编辑内容如下

# one(1593771943@qq.com)  //第一个git账号
Host github.com  //自定义host
HostName github.com  
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github_one  //对应的ssh私钥
User git

# two(m15822049431@163.com)  //第二个git账号
Host small.github.com  //自定义host
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github_two //对应的ssh私钥
User git
4.远程仓库部署SSH Key
# 1.获取公钥内容
vim id_rsa_github_one.pub
打开后将文件内容全部复制到剪切板。

分别在网页上登录GitHub账号,Settings -> SSH and GPG keys -> New SSH key,将刚刚复制到剪切板公钥内容对应添加进去。

账号下添加公钥内容位置
点击Add SSH key按钮,进行添加。成功后如下图:
添加SSH公钥成功后
5.测试SSH的连通性
ssh -T git@example.com  example.com替换为config文件下对应的host名。
image.png

如果连通性没问题,会返回Hi xxx(你的github账号名)! You've ...。并且返回到网页上,看到刚才的钥匙变绿了。


测试SSH连通性后
6.重新配置每个账号下项目的远程地址

可以回头重新看一下刚刚config文件对host的配置。

  1. A账号设置的Host为github.com,这个是github默认的,不用管。
  2. B账号设置的Host为small.github.com。但是我们克隆下来的时候,远程仓库使用的是默认的github.com。所以我们需要手动更新一下这个账号下克隆的远程仓库地址。
# 1.cd到B账号下的本地代码仓库
cd /Users/xiaole/XLLIMClient 
# 2.查看此仓库的远程仓库地址
git remote -v
查看的远程仓库结果如下:
origin  git@github.com:DistributionCoderXLL/XLLIMClient.git (fetch)
origin  git@github.com:DistributionCoderXLL/XLLIMClient.git (push)

我们看到B账号下的远程仓库还是git@github.com。并不是我们设置的git@small.github.com。所以我们要替换成自己定制的。

# 3.移除原远程仓库
git remote rm origin
# 4.添加自定制远程仓库
git remote add origin git@small.github.com:DistributionCoderXLL/XLLIMClient.git 

大功告成

做完这一切,A,B两个账号就可以无冲突地进行代码的commit,push,merge等操作了。
如果想对这方面有所了解的话,建议大家动手操作一下。你动手做或多或少都会遇到问题。不得不对国内开发者进行一下吐槽。很多人自己都不动手操作,看着不错就对一些文章进行了转载,导致百度一大堆错误的文章,这是很不负责任的行为。

相关文章

  • 一台设备连接多个Git仓库

    前言 有人说这样能让读者心情愉悦地看文章?~ 文章背景 因为自己想试着玩一下git的fork与pull reque...

  • 同一台电脑配置多个git的方法

    同一台电脑上需要配多个git仓库及用户名 有时候我们需要接多个项目时,可能需要配置多个git仓库,方法比较简单,这...

  • git连接多个远程仓库

    创建 ssh 密钥 .ssh 文件的地址为 C:\Users\Administrator\.ssh 打开 git ...

  • Git 同一电脑配置多个远程仓库

    当一台电脑需要连接多个远程仓库的时候如何配置。如一个仓库需要连接github、另一个仓库需要谅解gitlab、还有...

  • 记 多个git账号的SSH配置及上传项目到gitlab

    一.同一客户端下使用多个git账号 当本地git仓库和github上的仓库进行通信的时候,必须得双方建立连接才行,...

  • git使用简单命令

    1.初始化本地git仓库:git init 2.本地仓库连接远程仓库:git remote add origin ...

  • Git之同一台电脑连接多个远程仓库

    问题描述 有时候我们需要在同一台电脑上连接多个远程仓库,比如连接两个GitHub账号,那么需要两个条件。1.生成两...

  • git

    git第一次连接仓库并且向仓库传入文件 git init git remote add origin 仓库地址 g...

  • 踩坑日常

    基本推送流程 克隆远程仓库到本地仓库:git clone 仓库地址(ssh/http)本地仓库连接远程仓库:git...

  • git 多个仓库

    多个仓库,同时使用内容共享 但是发布的周期不同等 先添加远程 然后push 然后第二个计算机如何并存两个git...

网友评论

      本文标题:一台设备连接多个Git仓库

      本文链接:https://www.haomeiwen.com/subject/oghpkftx.html