一台电脑绑定两个(或多个)github账号
在学习廖雪峰Git教程时,学习到 如何参与一个开源项目时,把别人的github开源项目Fork到自己账号的github后,然后再把Fork的项目clone(克隆)到本地,修改本地后push到自己的github上,然后把修改的内容pull request 给Fork的人,别人不一定接受你的pull request。所以想自己完整测试一下。现在开始:我的配置主要参考了一篇文章《一台电脑绑定两个gith
在学习廖雪峰Git教程时,学习到 如何参与一个开源项目时,把别人的github开源项目Fork到自己账号的github后,然后再把Fork的项目clone(克隆)到本地,修改本地后push到自己的github上,然后把修改的内容pull request 给Fork的人,别人不一定接受你的pull request。所以想自己完整测试一下。
现在开始:
我的配置主要参考了一篇文章《一台电脑绑定两个github帐号教程》。
思路:
1.需要注册两个github账号。
2.本地的git仓库通过ssh连接到github。
3.ssh 方式链接到 Github,需要唯一的公钥,如果想同一台电脑绑定两个Github 帐号,需要两个条件:
- 能够生成两对 私钥/公钥
- push 时,可以区分两个账户,推送到相应的仓库
解决方案:
- 生成 私钥/公钥 时,密钥文件命名避免重复
- 设置不同 Host 对应同一 HostName 但密钥不同
- 取消 git 全局
用户名/邮箱
设置,为每个仓库独立设置 用户名/邮箱(也可以不用取消全局的用户名和邮箱设置。因为要clone其他项目到本地,需要用到用户名和邮箱,如果设置了全局的用户名和邮箱,之后无论你在该系统上做任何事情, Git 都会使用那些信息。)
操作方法
- 查看已有秘钥
- Mac 下输入命令
ls ~/.ssh/
,看到id_rsa
与id_rsa_pub
则说明已经有一对密钥。 - windows下ssh一般是在 C:\Users\Administrator\.ssh\ 这个路径下,看到
id_rsa
与id_rsa_pub
则说明已经有一对密钥。
- Mac 下输入命令
- 生成新的公钥,并命名为
id_rsa3
(保证与之前密钥文件名称不同即可)在git bush中的
C:\Users\Administrator\.ssh路径下输入:ssh-keygen -t rsa -C "yourmail@xxx.com"
- 如图所示:
Administrator@PMP9EOJWBH5149F MINGW64 ~/.ssh (master) $ ssh-keygen -t rsa -C "1@qq.com" Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa):id_rsa3
在:后面填一个新的文件名,如:
id_rsa3
-
然后后面直接敲回车就行。如图:
Administrator@PMP9EOJWBH5149F MINGW64 ~/.ssh (master) $ ssh-keygen -t rsa -C "1@qq.com" Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa3 Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_rsa3 Your public key has been saved in id_rsa3.pub The key fingerprint is: SHA256:6LKkuDrfstzhrWeq7RsGZZ/jlbIqW+XB2OcYCuta9sY 1@qq.com The key's randomart image is: +---[RSA 3072]----+ | | | | | o | | o = o . | | o . % S | | + * @ | | +.O * . | |.*o@EBo | |*=OO&*. | +----[SHA256]-----+ Administrator@PMP9EOJWBH5149F MINGW64 ~/.ssh (master)
- 在
.ssh
文件夹下新建config
文件并编辑,不同 Host 实际映射到同一HostName
,但密钥文件不同。Host 前缀可自定义,例子中xfzstart1
#Host xfzstart.github.com(这里是自定义的host简称,以后连接远程服务器就可以用 xfzstart.github.com代替HostName 的github.com) #Host 是你远程仓库的地址,注意哦,如果有些服务器做的ip端口转发,这里不要带上端口号 Host xfzstart.github.com #HostName 是远程仓库的地址,同样如果做的端口转发也不应带端口号 #HostName 主机名可用ip也可以是域名(如:github.com或者bitbucket.org) HostName github.com #Port 端口号,如果有做转发需要在这里填写端口号,没有就不必要填 #Port 服务器open-ssh端口(默认:22,默认时一般不写此行 #Port 8800 PreferredAuthentications publickey #用户 #User 登录用户名(如:git) User xfzstart #识别key的文件 #IdentityFile 证书文件路径(如~/.ssh/id_rsa_*) IdentityFile ~/.ssh/id_rsa #都指向同一个平台的话,下面的Host需要做个处理,因为我们在用这个key的时候根据Host从上到下进行查找,不做修改肯定会先查找到第一个key,依旧无效,随便改就好了,其他参数不做特殊处理 Host xfzstart1.github.com HostName github.com PreferredAuthentications publickey #Port 8800 User xfzstart1 IdentityFile ~/.ssh/id_rsa3
- 将生成的
id_rsa.pub
,id_rsa_3.pub
内容copy 到对应github的ssh设置中。 - 测试 ssh 连接,
-
Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2/learn (main) $ ssh -T git@xfzstart1.github.com Hi xfzstart1! You've successfully authenticated, but GitHub does not provide shell access. Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2/learn (main) $ ssh -T git@xfzstart.github.com Hi xfzstart! You've successfully authenticated, but GitHub does not provide shell access.
出现 Hi xfzstart! You've successfully authenticated, but GitHub does not provide shell access. 说明连接成功。
- 在指定的文件夹下将项目
clone
到本地,learn1
是本地文件夹路径(重命名远程仓库的目录),可以不填写,clone到本地的文件夹是默认是远程的目录名Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2 $ git clone git@github.com:xfzstart1/learn.git learn1 Cloning into 'learn1'... remote: Enumerating objects: 6, done. remote: Counting objects: 100% (6/6), done. remote: Compressing objects: 100% (3/3), done. remote: Total 6 (delta 0), reused 3 (delta 0), pack-reused 0 Receiving objects: 100% (6/6), done.
Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2 $ git clone git@github.com:xfzstart1/learn.git Cloning into 'learn'... remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (3/3), done.
- 取消全局 用户名/邮箱设置,并进入项目文件夹单独设置
#取消全局 用户名/邮箱设置。 Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2 $ git config --global --unset user.name Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2 $ git config --global --unset user.email
#进入项目文件夹单独设置 Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2/learn (main) $ git config user.name "xufuzeng1" Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2/learn (main) $ git config user.email "2940458089@qq.com"
- 命令行进入项目目录,重建 origin (whatever 为相应项目地址)
#取消远程 Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2/learn (main) $ git remote rm origin #重新建立远程,xfzstart1.github.com为config文件中 Host对应的名 Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2/learn (main) $ git remote add origin git@xfzstart1.github.com:xfzstart1/learn.git
- 成功,可以 push 测试一下
Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2/learn (main) $ git push origin main Everything up-to-date
参考资料:《一台电脑绑定两个github帐号教程》
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)