一个命令github账号切换
此解决方案采用单个 git 别名的形式。执行后,当前项目用户将附加到另一个帐户
生成 ssh 密钥
ssh-keygen -t rsa -C "rinquin.arnaud@gmail.com" -f '/Users/arnaudrinquin/.ssh/id_rsa'
[...]
ssh-keygen -t rsa -C "arnaud.rinquin@wopata.com" -f '/Users/arnaudrinquin/.ssh/id_rsa_pro'
将它们链接到您的 GitHub / Bitbucket 帐户
- 复制默认公钥
pbcopy < ~/.ssh/id_rsa.pub
- 登录您的 GitHub 帐户
- 将密钥粘贴到
add SSH key github页面中
- 复制其他公钥
pbcopy < ~/.ssh/id_rsa_pro.pub
- 为所有其他帐户重复并调整步骤 2 到 4
步骤 1. 自动 ssh 密钥切换。
我们可以配置ssh 以根据host 发送使用特定的加密密钥。好消息是您可以为同一个 hostname 设置多个别名。
查看此示例~/.ssh/config 文件:
# Default GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# Professional github alias
Host github_pro
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_pro
git 远程配置
您现在可以通过将 git@github.com 更改为 git@github_pro 来在 git 遥控器中使用这些别名。
您可以更改现有项目的遥控器(使用类似git remote set-url origin git@github_pro:foo/bar.git)或在克隆它们时直接调整它们。
git clone git@github.com:ArnaudRinquin/atom-zentabs.git
使用别名,变成:
git clone git@github_pro:ArnaudRinquin/atom-zentabs.git
第 2 步。更改 git user.email
Git 配置设置可以是全局的或每个项目的。在我们的例子中,我们需要每个项目的设置。很容易改变它:
git config user.email 'arnaud.rinquin@wopata.com'
虽然这很容易,但对于我们这样的开发人员来说,这需要很长时间。我们可以为此编写一个非常简单的 git 别名。
我们将把它添加到~/.gitconfig 文件中。
[user]
name = Arnaud Rinquin
email = rinquin.arnaud@gmail.com
...
[alias]
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
然后,我们要做的就是git setpromail 只为这个项目更改我们的电子邮件。
第 3 步。请切换一个命令?!
使用单个无参数命令从默认帐户切换到指定帐户不是很好吗?这绝对是可能的。该命令将分为两个步骤:
- 将当前项目遥控器更改为所选别名
- 更改当前项目 user.email 配置
我们已经为第二步提供了一个命令解决方案,但第一步要困难得多。
一个命令远程主机更改
解决方案以另一个 git 别名命令的形式添加到您的 ~/.gitconfig:
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
这允许将所有遥控器从一台主机更改为另一台主机(别名)。看例子:
$ > git remote -v
origin git@github.com:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin git@github.com:ArnaudRinquin/arnaudrinquin.github.io.git (push)
$ > git changeremotehost github.com github_pro
$ > git remote -v
origin git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (push)
将它们全部组合起来
我们现在只需要将两个命令合二为一,这很容易。看看我是如何集成 bitbucket 主机切换的。
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
gopro = !sh -c \"git changeremotehost github.com github_pro && git changeremotehost bitbucket.com bitbucket_pro && git setpromail\"
Source Link -Github
Source Link -Tutorial