如何切换多个GitHub账号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何切换多个GitHub账号相关的知识,希望对你有一定的参考价值。

参考技术A 遇到的第一个问题是Author。每次查看提交记录时,总会看到Author的用户名和邮箱。如果使用两个不同的账户当然希望看到不同的Author提交。Git把信息都存储在本地的config文件中,包括后面要说到的本地凭证存储也和config有关,所以在此有必要说一下。
Git共有三个级别的config文件,分别是system、global和local。在当前环境中,分别对应%GitPath%\mingw64\etc\gitconfig文件、$home\.gitconfig文件和%RepoPath%\.git\config文件。其中%GitPath%为Git的安装路径,%RepoPath%为某仓库的本地路径。所以system配置整个系统只有一个,global配置每个账户只有一个,而local配置和git仓库的数目相同,并且只有在仓库目录才能看到该配置。
2.1 查看配置
# list git all config about user. tips: D:\test\TestUser is a dictionary of Repo
PS D:\test\TestUser> git config --list | sls user
user.email=SystemUser@outlook.com
user.name=SystemUser
user.name=GlobalUser
user.email=GlobalUser@outlook.com
user.name=LocalUser
user.email=LocalUser@outlook.com

以上可见,筛选出的user.name和user.email就是前面提到的Author信息。此时,上面提到的三个级别都配置了user信息。当git commit时,Author信息依次读取local、global和system的配置,如果找到则不再继续读取。其他配置的读取顺序也是如此。
2.2 更改配置
更改local级别的user.name(本地Repo中的config):
# set user.name in local config and query. tips: D:\test\TestUser is a dictionary of Repo
PS D:\test\TestUser> git config --local user.name NinputerWonder
PS D:\test\TestUser> git config --local user.name
NinputerWonder

依此类推,可以更改global和system的配置。其他配置的更改和读取操作类似。
接下来会用到上面类似的操作更改本地凭证存储。
3 使用https协议
GitHub支持https和ssh协议连接。当执行类似命令git clone https://github.com/NinputerWonder/xxx.git后,在此仓库中的上传下载均采用https协议;类似git clone git@github.com:NinputerWonder/xxx.git则使用ssh协议。首先讨论使用https协议。
当提交代码后,向服务器push的时候,这时git会提示输入用户名和密码。输入正确之后,git会有多种策略存储本地凭证,以免下次再输入账户信息。
切换到`%GitPath%\mingw64\libexec\git-core路径下,可以查看本地存储工具:
PS C:\Program Files\Git\mingw64\libexec\git-core> (ls).Name | sls credential
git-credential-manager.exe
git-credential-store.exe
git-credential-wincred.exe
git-credential.exe

以上列出当前支持的三种存储辅助工具,即mananger、wincred和store。Git可以指定辅助工具(通过配置credential.helper),用来存储本地凭证。
3.1 manager
若安装Git时安装了GitGUI,自动会在system级别中设置credential.helper为manager。并且不配置所处级别(system、global或者local)如何,一旦设置了manager,都优先使用该方式。

同机多Github账号配置多个SSH

前言

有一些情况,我们需要在同一个机子配置多个github的ssh链接;

步骤

生成多个SSH

ssh-keygen -t rsa -C "emailxxxx"

需要注意的就是生成的密钥名字不能一样,

接着就是把对应的公钥配置到你的github账号;
Github配置路径:
avatar(dropdown)->settings->SSH and GPG keys

编辑ssh的配置文件

在系统当前用户家目录编辑/创建一个SSH配置文件 (~/.ssh/config)

Host github.com-crper
    HostName github.com
    user crper
    IdentityFile "~/.ssh/id_rsa"
    IdentitiesOnly yes


Host github.com-ones
    HostName github.com
    user linqunhe
    IdentityFile "~/.ssh/id_rsa_ones"
    IdentitiesOnly yes

添加代理

ssh-add — adds private key identities to the authentication agent
# 意思就是可以把多个私钥添加到验证代理统一维护

验证

校验远程服务器

拉取代码

唯一有区域的就是拉取代码要注意远程域名为配置的域!!比如

总结

配置起来不麻烦,克隆维护这些也还好;
当然,若是只有两个账号,又很懒的.
可以考虑一个用Github Desktop来管理,非常傻瓜化!

以上是关于如何切换多个GitHub账号的主要内容,如果未能解决你的问题,请参考以下文章

Github多账号登陆

如何在 Intellij Idea 中切换到另一个 git 帐户 [重复]

Windows下配置多个Git账号

同机多Github账号配置多个SSH

多个github账号时,本地配置ssh-key

多账号 SSH 管理多个 GitHub 项目(建议收藏)