赞
踩
在学习廖雪峰Git教程时,学习到 如何参与一个开源项目时,把别人的github开源项目Fork到自己账号的github后,然后再把Fork的项目clone(克隆)到本地,修改本地后push到自己的github上,然后把修改的内容pull request 给Fork的人,别人不一定接受你的pull request。所以想自己完整测试一下。
我的配置主要参考了一篇文章《一台电脑绑定两个github帐号教程》。
1.需要注册两个github账号。
2.本地的git仓库通过ssh连接到github。
3.ssh 方式链接到 Github,需要唯一的公钥,如果想同一台电脑绑定两个Github 帐号,需要两个条件:
用户名/邮箱
设置,为每个仓库独立设置 用户名/邮箱(也可以不用取消全局的用户名和邮箱设置。因为要clone其他项目到本地,需要用到用户名和邮箱,如果设置了全局的用户名和邮箱,之后无论你在该系统上做任何事情, Git 都会使用那些信息。)ls ~/.ssh/
,看到 id_rsa
与 id_rsa_pub
则说明已经有一对密钥。id_rsa
与 id_rsa_pub
则说明已经有一对密钥。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设置中。- 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"
- #取消远程
- 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
- Administrator@PMP9EOJWBH5149F MINGW64 /d/learngit2/learn (main)
- $ git push origin main
- Everything up-to-date
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。