问题描述
有时候我们需要在同一台电脑上连接多个远程仓库,比如连接两个GitHub账号,那么需要两个条件。
1.生成两对 私钥/公钥
,并且密钥文件命名不能重复。
2.push 到remote时区分两个账户,推送到相应的仓库。
相应配置
1.在MAC的终端中输入以下命令,查看密钥。
ls ~/.ssh
如果有 id_rsa
和 id_rsa.pub
,说明已存在一对密钥/公钥。
2.创建新的 密钥/公钥
,并指定密钥名称,比如id_rsa_x
(x为任意名称)
ssh-keygen -t rsa -f ~/.ssh/id_rsa_x -C "yourmail@xxx.com"
操作完成后,该目录会多出 id_rsa_x
和 id_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
相关推荐
有时,开发者在一台电脑上需要同时使用多个GitHub账户进行工作,例如一个用于工作,另一个用于个人项目。如果一台电脑上只有一个SSH密钥,那么在进行克隆、拉取、推送等操作时,GitHub将无法区分哪个账户正在操作。...
当多个开发者修改了同一部分代码时,Git可能会报告冲突。此时,你需要手动编辑冲突文件,解决冲突后提交。TortoiseGit等图形化工具提供了直观的冲突解决界面。 在Windows环境下,TortoiseGit是一个流行的Git图形化...
或者在同一台电脑上创建两个不同的用户账户,一个作为服务器端,另一个作为管理端。 2. **一台Windows电脑**:用于客户端操作,如克隆仓库等。 3. **版本控制文件**:包含Windows下的Git工具集,用于客户端的操作。 ...
- **多账号问题**:如果多人共用同一台电脑进行开发,需要确保使用相同的 GitHub 账号进行操作,避免权限问题。 - **二级密码设置**:为保护账户安全,建议在 GitHub 账号设置中开启双重认证功能。 - **代码审查**:...
Git是一种分布式的版本控制系统,用于追踪计算机文件的变化并协调多个用户间的协作。相比于其他版本控制系统(如SVN),Git具有以下显著特点: - **基于文件快照的形式记录版本**:Git记录每次提交时文件的状态快照...
Dropbox则是一个云存储服务,它允许用户在多台设备间同步文件,并提供文件历史版本和共享链接等功能。然而,Dropbox并不直接支持Git的版本控制功能。 要将Dropbox用作Git的远程仓库,我们可以利用Python编写一个...
用户可以将文件上传到云端,然后在另一台设备上登录同一账户下载。这种方式方便快捷,尤其适合跨平台同步,但需要稳定的网络连接,并关注数据安全和隐私问题。 对于企业环境,更高级的方法可能包括使用NAS(网络...
这在一台电脑需要访问多个Git仓库,且每个仓库的私钥不相同的情况下,显得尤为重要。这通常涉及配置SSH的config文件,设置不同的主机别名,对应不同的SSH key,以便在操作不同仓库时,能够正确地匹配和使用相应的...
"多开"意味着用户可以在同一台电脑上同时运行多个微信账号,这对于需要处理多个工作或个人账号的人来说非常实用。"防消息撤销"功能则确保一旦发送的消息不会被轻易撤回,这在商业环境中可能尤其重要,因为它可以防止...
此外,如果你有多台设备或多个GitHub账户,你可能需要为每台设备和每个账户生成和配置不同的SSH密钥,以保持良好的安全实践。 总的来说,理解和熟练操作SSH密钥是GitHub用户必备的技能之一,这不仅简化了工作流程,...
标题中的“精品软件工具--程序员买了一台新 Mac 之后,必装的一个软件或工具”表明这是一份针对程序员在新购买的Mac电脑上安装的推荐软件列表。这些软件通常是提高开发效率、优化工作环境或者解决特定问题的必备工具...
总之,GitHub Desktop 220是一个强大的工具,让开发者在Mac系统上更高效地使用Git和GitHub。无论是个人项目还是团队协作,它都能提供一个直观、易用的平台,降低版本控制的学习曲线,提高开发效率。
在本Java实现的银行自动存取款项目中,我们涵盖了多个关键的IT知识点,这对于学习Java编程和理解银行系统操作流程具有重要的实践价值。以下将详细介绍这些知识点: 1. **面向对象编程(OOP)**:Java是面向对象的...
它允许用户进行版本控制,协同工作,并在多个分支上同时进行开发。在GitHub Desktop中,Git的这些功能被以直观的图形用户界面(GUI)呈现,使得非程序员也能轻松上手。 **2. GitHub Desktop的特点** - **用户友好的...
下面将从多个角度详细阐述这个系统的核心知识点。 1. **项目背景与目标**: 理财账户管理系统的目标是为用户提供安全、便捷的理财服务,包括账户开设、资金管理、投资产品选择、收益计算等功能。项目背景可能涉及到...
网站后台通常包括用户管理、内容发布、数据分析、权限控制等多个模块,这些功能都是为了支持网站的正常运行和持续优化。 其次,"管理"标签强调了这个框架的主要目标是提供一套工具,使管理员可以有效地进行数据管理...
同时,了解如何在一台计算机上管理多个Git账户也是开发者必备的技能,这涉及到git配置文件的管理,如切换用户身份、设置不同邮箱和用户名等。 总的来说,LeetCodeOnlineJudge项目为Java开发者提供了一个学习和实践...