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

本文介绍如何在同一台电脑上配置多个GitHub账号的方法,包括生成和配置多对私钥/公钥,以及设置不同仓库指向不同的密钥文件。此外还详细解释了如何区分不同账号进行推送。
问题描述

有时候我们需要在同一台电脑上连接多个远程仓库,比如连接两个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-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

作者:牧晓逸风
链接:http://www.jianshu.com/p/04e9a885c5c8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
### Git 克隆远程仓库因大文件导致失败的解决方法 Git 在克隆远程仓库时,如果仓库中包含较大的文件,可能会因为内存限制或传输中断而导致克隆失败。以下是一些有效的解决方法: #### 1. 使用 `git clone --depth=1` 进行浅层克隆 通过限制历史记录的深度,可以减少克隆过程中需要下载的数据量,从而避免因大文件导致的失败问题。此方法适用于只需要最新提交的情况。 ```bash git clone --depth=1 https://github.com/your-repo-url.git ``` #### 2. 调整 Git 缓冲区大小 默认情况下,Git 的缓冲区大小可能不足以处理大文件。可以通过调整 `http.postBuffer` 参数来增加缓冲区大小。 ```bash git config http.postBuffer 524288000 ``` 该命令将缓冲区大小设置为 500MB,可以根据实际需求调整此值。 #### 3. 使用 `git lfs` 管理大文件 Git Large File Storage (LFS) 是一个 Git 扩展,专门用于管理大文件。通过将大文件存储为指针,Git LFS 可以显著减少克隆仓库时的数据传输量。 1. 安装 Git LFS: ```bash git lfs install ``` 2. 跟踪大文件: ```bash git lfs track "*.psd" ``` 3. 提交 `.gitattributes` 文件: ```bash git add .gitattributes git commit -m "Track large files with Git LFS" ``` 4. 推送更改到远程仓库: ```bash git push origin main ``` #### 4. 使用 SSH 协议代替 HTTPS 在某些情况下,使用 SSH 协议可以提高克隆速度并减少连接问题。确保已经配置了 SSH 密钥并将其添加到 GitHub 账户中。 ```bash git clone git@github.com:your-repo-url.git ``` #### 5. 检查网络连接和代理设置 网络连接不稳定或错误的代理设置也可能导致克隆失败。可以通过以下命令检查和配置代理: ```bash git config --global http.proxy http://proxyuser:proxypassword@proxy.server.com:port ``` 如果不需要代理,可以禁用它: ```bash git config --global --unset http.proxy ``` #### 6. 使用 `git gc` 清理仓库 如果远程仓库中存在大量未使用的对象,可以使用 `git gc` 命令进行清理,以减少克隆时的数据量。 ```bash git gc --aggressive --prune=all ``` #### 7. 分段克隆 如果仓库非常大且包含多个模块,可以考虑分段克隆,即只克隆特定的子模块或目录。 ```bash git clone --filter=blob:none --no-checkout https://github.com/your-repo-url.git cd your-repo-url git sparse-checkout init --cone git sparse-checkout set path/to/directory git checkout main ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值