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

一、总结

一句话总结:

1、git使用.git目录里面的内容(ssh或用户名密码)来自动和远程仓库通信

2、在不同的仓库中配置不同的.git目录,可以连接不同的github

3、远程通信在仓库,本地配置不需要:git使用.git目录里面的内容(ssh或用户名密码)来自动和远程仓库通信,而一个仓库(项目)有一个.git目录,所以git的远程通信都必须要在仓库中进行,但是本地配置的操作就不需要再仓库中了

二、Git之同一台电脑如何连接多个远程仓库

问题描述

有时候我们需要在同一台电脑上连接多个远程仓库,比如连接两个GitHub账号,那么需要两个条件。
1.生成两对 私钥/公钥,并且密钥文件命名不能重复。
2.push 到remote时区分两个账户,推送到相应的仓库。

相应配置

1.在MAC的终端中输入以下命令,查看密钥。
ls ~/.ssh

如果有 id_rsaid_rsa.pub,说明已存在一对密钥/公钥。

2.创建新的 密钥/公钥,并指定密钥名称,比如id_rsa_x(x为任意名称)
ssh-keygen -t rsa -f ~/.ssh/id_rsa_x -C "yourmail@xxx.com"

操作完成后,该目录会多出 id_rsa_xid_rsa_x.pub 两个文件。

3.在 ~/.ssh/ 文件夹下创建一个 config 文件
$ touch config
$ vim config

编辑config文件,配置不同的仓库指向不同的密钥文件。

# 第一个账号,默认使用的账号
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# 第二个账号
Host second.github.com  # second为前缀名,可以任意设置
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_x

原理分析
1.ssh 客户端是通过类似 git@github.com:githubUserName/repName.git ** 的地址来识别使用本地的哪个私钥的,地址中的 User 是@前面的git, Host 是@后面的github.com
2.如果所有账号的 User 和 Host 都为 git 和 github.com,那么就只能使用一个私钥。所以要对User 和 Host 进行配置,让每个账号使用自己的 Host,每个 Host 的域名做 CNAME 解析到 github.com,如上面配置中的Host second.github.com
3.配置了别名之后,新的地址就是
git@second.github.com:githubUserName/repName.git**(在添加远程仓库时使用)。
这样 ssh 在连接时就可以区别不同的账号了。

4.查看SSH 密钥的值,分别添加到对应的 GitHub 账户中
$ cat id_rsa.pub
$ cat id_rsa_x.pub

把这两个值分别 copy 到 GitHub 账号中的 SSH keys 中保存。

5.清空本地的 SSH 缓存,添加新的 SSH 密钥 到 SSH agent中

先执行 ssh-agent bash

执行下面两条时要先执行 

cd ~/.ssh
进入当前用户根目录下的隐藏目录 .ssh
$ ssh-add -D
$ ssh-add id_rsa
$ ssh-add id_rsa_x

最后确认一下新密钥已经添加成功

$ ssh-add -l
6.测试 ssh 链接
ssh -T git@github.com
ssh -T git@second.github.com
# xxx! You’ve successfully authenticated, but GitHub does not provide bash access.
# 出现上述提示,连接成功
7.取消 git 全局用户名/邮箱的设置,设置独立的 用户名/邮箱
# 取消全局 用户名/邮箱 配置
$ git config --global --unset user.name
$ git config --global --unset user.email
# 进入项目文件夹,单独设置每个repo 用户名/邮箱
$ git config user.email "xxxx@xx.com" $ git config user.name "xxxx" 

查看git项目的配置

git config --list
8.命令行进入项目目录,重建 origin (whatever 为相应项目地址)
$ git remote rm origin
# 远程仓库地址,注意Host名称
$ git remote add origin git@second.github.com:githubUserName/repName.git
$ git remote -v # 查看远程
10.远程 push 测试

首先在 GitHub 上新建一个名为 testProj 的远程仓库,然后再在本地建一个本地仓库。

$ cd ~/documnts
$ mkdir testProj

1.进入 testProj 文件夹,创建 REDME.md文件
2.初始化此文件夹为git
3.添加并提交README.md到Git本地仓库
4.添加远程仓库
5.把README.md推送到远程仓库

$ cd testProj
$ echo "# ludilala.github.io" >> README.md
$ git init
$ git add README.md
$ git commit -m "first commit"
# 如果前面已添加远程连接,就无需再次添加 $ git remote add origin https://github.com/ludilalaa/ludilala.github.io.git $ git push -u origin master

转载于:https://www.cnblogs.com/Renyi-Fan/p/9143088.html

Git之同一台电脑如何连接多个远程仓库相关推荐

  1. Git在同一台电脑上连接多个仓库

    1.创建密钥 #第一个密钥 其中 'xxx@xxx.com' 为仓库的用户名 $ ssh-keygen -t rsa -f C:/Users/用户名/.ssh/id_rsa -C 'xxx@xxx.c ...

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

    问题描述 有时候我们需要在同一台电脑上连接多个远程仓库,比如连接两个GitHub账号,那么需要两个条件. 1.生成两对 私钥/公钥,并且密钥文件命名不能重复. 2.push 到remote时区分两个账 ...

  3. 两台电脑无线连接的办法

    两台电脑无线连接的办法 无线双机互连           1.设置笔记本电脑(也可能是台式机)的无线网卡TCP/IP属性.在无线网络连接项属性对话框的       "常规"选项卡中 ...

  4. 两台计算机直接相连教程,两台电脑怎么连接局域网,小编告诉你两台电脑怎么连接局域网...

    有用户提出两台电脑怎么连接局域网的问题,其实最简单的方法无疑是直接使用网线连接两台计算机,没有那么复杂的,那么两台电脑怎么连接局域网?下面,小编给大家带来了两台电脑连接局域网的图文. 如果电脑是用来玩 ...

  5. 一台计算机只能注册一台sql,局域网中的一台电脑为啥连接不到另一台电脑中的SQL远程数据库...

    当前位置:我的异常网» Sql Server » 局域网中的一台电脑为啥连接不到另一台电脑中的SQL 局域网中的一台电脑为啥连接不到另一台电脑中的SQL远程数据库 www.myexceptions.n ...

  6. 一台电脑同时连接多个相同的USB摄像头并根据USB口进行区分

    一台电脑同时连接多个相同的USB摄像头并根据USB口进行区分 百度搜了下, https://blog.csdn.net/kingston110/article/details/112060113?sp ...

  7. 计算机双机对连局域网,局域网两台电脑怎样连接

    局域网两台电脑要怎么连接设置呢!这没什么问题的!下面由学习啦小编给你做出详细的局域网两台电脑连接介绍!希望对你有帮助! 局域网两台电脑连接介绍 首先要对您的两台计算机进行互连,两台计算机都要有网卡,双 ...

  8. win7网络两个计算机名,两台电脑怎么连接局域网,教您两台电脑怎么连接局域网...

    在现实工作或生活当中经常会遇到此问题.有可能你是需要两台电脑连局域网互传文件,用于两台连脑联网打游戏,或别的,总之两台电脑连接局域网应该还是很常用的需要,怎么搞咧?下面,小编给大家介绍两台电脑连接局域 ...

  9. 记录一次用VNC Server配置window电脑远程访问,并在另一台电脑上外网访问远程桌面

    记录一次用VNC Server配置window电脑远程访问,并在另一台电脑上外网访问远程桌面 有一台window和macbook,平时带着macbook出门办公(轻便,不用带充电线),但有时候有些工作 ...

最新文章

  1. SAP PM 入门系列18 - IP25为维护计划 Set Deletion Flag
  2. 自定义Annotation
  3. java web配置dll文件_JavaWeb项目中dll文件动态加载方法解析(详细步骤)
  4. kubesphere devops介绍、访问账密及nfs数据备份同步
  5. 学习进度 - 004
  6. oracle数据库无法写入文件,如何在ORACLE的PL/SQL中将数据写入文件
  7. ASP.net中实现双表格同步缩放不变形
  8. OpenNLP-引言
  9. Failed to parse the output of 'adb version'
  10. 使用labview制作漂亮的按钮
  11. MATLAB 符号运算
  12. 【CodeVS 1222】信与信封的问题 随机化+treat Hungery
  13. android去除gps漂移代码,GPS漂移过滤算法
  14. ThinkPHP php 仿千图网源码_仿百度网盘文件分享dzzoffice网盘系统源码_PHP
  15. java epson_无法与Epson POS打印机通信
  16. syn flood攻击防范
  17. 65. Python中强大灵活的eval函数
  18. 农行2021计算机专业面试题,【面经】2021 中国农业银行 笔试编程题
  19. 遇到问题--k8s--helm安装prometheus报错Error: failed to download “stable/prometheus-operator“
  20. 论如何写出一篇高质量的英文论文

热门文章

  1. cookie知识总结
  2. 【二十一】插件开发——用于验证码识别的 JMeter 插件(上)
  3. matlab约束转非约束,请问:fmincon非等和等于的约束条件
  4. python print输出字符串报错
  5. 利用js实现一键复制功能
  6. Weblogic负载均衡/Session复制之集群架构续
  7. DocDokuPLM介绍
  8. Soul 网关源码阅读(一) 概览
  9. 哈工大c语言作业系统,2015秋C语言程序设计
  10. Matrix Chain Multiplication (堆栈)