一命令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 遥控器中使用这些git@github.com
别名git@github_pro
。
您可以更改现有项目的遥控器(使用类似的东西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 alias 命令的形式添加到您的解决方案~/.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\"
源码链接-Github
源链接 - 教程