一个命令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)
结合所有
现在,我们只需要将两个命令组合为一个,这很容易。了解我如何集成位桶式主机交换。
[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\"
源链接-教程