前言
本人之前使用git未注意到多账户的管理,所以用起来比较繁琐,在网上几经搜索后发现现有的教程均存在不通用的情况,而且在去年10月github更新后使用git上传也和之前不同。为此整理了一份最新的Git多账号配置上传博文。
1. 生成git账号公钥秘钥
1.1 生成gitlab账号公钥秘钥
在C:\Users\Administrator\.ssh(这个目录不绝对,因人而异)下打开git bash或cmd,执行命令ssh-keygen -t rsa -C user.email,例如ssh-keygen -t rsa -C xxxxxxxxx@xxx.com,然后命名为id_rsa_gitlab,输入密码(可以不设置,一直按回车)
1.2 生成oschina账号公钥秘钥
执行命令ssh-keygen -t rsa -C xxxxxxxxx@xxx.com创建oschina对应的sshkey,命名为id_rsa_oschina。其余均和gitlab一致
1.2 生成github账号公钥秘钥
执行命令ssh-keygen -t rsa -C xxxxxxxxx@xxx.com创建github对应的sshkey,命名为id_rsa_github。其余均和gitlab一致
2. 公钥拷贝及上传
2.1 秘钥位置存储
把上面得到的文件拷贝到git默认访问的.ssh目录(win10在用户目录下,本文C:\Users\Administrator\.ssh)
除了秘钥文件之外,config文件是后面的步骤中手动生产的,known_hosts文件是后续自动生产的
2.2 config配置
在C:\Users\Administrator\.ssh目录下创建一个config文本文件,每个账号配置一个Host节点。主要配置文件内容
# github-1 account Host u1.github.com HostName github.com User user1 IdentityFile C:\\Users\\Administrator\\.ssh\\id_rsa_github1 PreferredAuthentications publickey # github-2 account Host u2.github.com HostName github.com User user2 IdentityFile C:\\Users\\Administrator\\.ssh\\id_rsa_github2 PreferredAuthentications publickey # gitlab account Host gitlab.com HostName gitlab.com User iJarmin_lab IdentityFile C:\\Users\\Administrator\\.ssh\\id_rsa_gitlab PreferredAuthentications publickey # oschina account Host git.oschina.net HostName git.oschina.net User username2 IdentityFile C:\\Users\\Administrator\\.ssh\\id_rsa_oschina PreferredAuthentications publickey
配置项说明:
Host ##主机别名 HostName ##服务器真实地址 IdentityFile ##私钥文件路径 PreferredAuthentications ##认证方式 User ##用户名
将公钥上传到服务器
GitHub添加SSH key的方式如下图所示
git.oschina.net添加SSH key的方式如下图所示:
gitlab添加SSH key的方式如下图所示:
2.3 进行测试是否成功
2.3.1 测试github
ssh -T git@github.com
提示 you,re successfully authenticated,but Github does not provide shell access
2.3.2 测试gitlab
ssh -T git@gitlab.com
提示welcome to gitlab
2.3.3 测试oschina
ssh -T git@git.oschina.net
提示welcome to Git
2.4 配置账户的username和email
全局配置(任意位置执行)
首先一般仅需要一次配置时候,一般可以使用全局配置读取配置。加载的优先策略为先执行局部配置读取,再进行全局配置读取
>git config --global user.name "github's Name" >git config --global user.email "github@xx.com" >git config --list
为了保证上传的稳定,避免错乱,我们在使用时需要注意,如果一个网站有多个账户时,最好不要设置全局的 username 和 email
取消全局 username, email
>git config --global --unset user.name >git config --global --unset user.email
如要在repo中使用 user1 进行操作,进入repo目录后,先设置username 和 email,再进行其他操作
>git config user.name "github's Name" >git config user.email "github@xx.com"
同样的,如果想在repo中切换为 user2 进行操作,则重新设置username和email(同上)后,再进行其他操作