Bug
-
由于平常学习工作中需要用到多个git账号,不一定是GitHub,可能是gitlab或者gitee等。
-
适用场景:比如在公司的时候有一个公司的git账号,用的是gitlab,但是自己也想通过自己的github账号提交自己的项目到GitHub仓库。由于账号不同,提交代码肯定是会报错的,这种情况下就需要在本地切换git账号了。
DeBug
目前假设电脑上已经配置了一个github账号,并且设置了SSH密钥,需要再添加另外一个github账号,并设置该账号的SSH
目前有两个账号:
- lisimoner—15927521530@163.com(目前已添加该账号的SSH)
- lijianqing5—lijianqing@cug.edu.cn
设置SSH密钥
由于之前已经添加了一个SSH密钥,因此.ssh文件夹内已经存在了id_rsa和id_rsa_pub文件,需要再次添加一个SSH密钥,将会生成另外两个类似的文件
- 在.ssh文件夹内打开命令行工具或者git bash,使用
ssh-keygen -t rsa -C "lijianqing@cug.edu.cn"
-
输入命令后,提示需要输入对应的文件名,不能与之前的重复,否则会覆盖之前生成的SSH密钥,输入后直接回车,然后输入密码,可以直接回车跳过,之后再次输入密码,也直接回车跳过,当出现下图时,表明已经生成成功了
-
在.ssh文件中将会出现另外两个文件
-
打开id_rsa_cug.pub文件,这就是SSH密钥,将其全部复制到github中
-
在GitHub中打开Settings,然后点击SSH and GPG keys,并点击New SSH key
-
添加完后,将会显示新添加的SSH密钥
-
配置config文件
-
在.ssh文件夹中新建一个config文件,没有后缀名
-
编辑config文件
# lisimon Host lisimon HostName github.com User git IdentityFile ~/.ssh/id_rsa # lijianqing Host lijianqing HostName github.com User git IdentityFile ~/.ssh/id_rsa_cug
-
通过
ssh -T
判断SSH密钥是否有效,当显示下列内容后,说明设置SSH密钥成功$ ssh -T lisimon Hi lisimoner! You've successfully authenticated, but GitHub does not provide shell access. $ ssh -T lijianqing Hi lijianqing5! You've successfully authenticated, but GitHub does not provide shell access.
尝试切换账号
-
在不清楚当前电脑登录的是哪个github账号下,可以通过
git config user.email
命令来查看邮箱,通过git config user.name
命令来查看github账户名 -
账号的切换可以通过
git remote set-url origin git@[HostName]:[GitHubName]/[RepositoryName].git
命令来切换。其中[HostName]是指之前在config文件配置中的Host名,[GitHubName]是GitHub的用户名,与SSH密钥的邮箱账号对应,[RepositoryName]是GitHub账号中的项目文件所在的仓库名 -
下图是两个不同的账号下clone的项目文件,需要将其分别push到不同的账号中
-
先对第一个进行操作,通过以下命令,完成了文件的提交
-
提交第二个文件
总结
-
在一台电脑上配置多个GitHub账户,主要包括以下三个步骤
- 配置SSH密钥
- 配置config文件
- 配置git仓库的远程地址-
git remote set-url origin git@[HostName]:[GitHubName]/[RepositoryName].git
-
其中需要注意的是:
- 不同的SSH密钥文件需要不同名,必须放在.ssh文件夹中
- config文件配置记清楚不同账号的Host名,在配置远程仓库地址时需要用到
- 配置远程仓库地址时,不同的地址,需要修改本地的Host名,GitHub账户名以及远程仓库的地址
参考链接: https://segmentfault.com/a/1190000015055133