1つのコマンド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リモートで使用できるようになりました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. 1つのコマンドスイッチでお願いします。
単一のパラメーターなしのコマンドで、デフォルトのアカウントから指定したアカウントに切り替えるのは良いことではないでしょうか。これは間違いなく可能です。このコマンドには2つのステップがあります。
- 現在のプロジェクトのリモートを選択したエイリアスに変更します
- 現在のプロジェクトのuser.email設定を変更する
すでに2番目のステップ用の1つのコマンドソリューションがありますが、最初のコマンドソリューションは非常に困難です。1つのコマンドのリモートホストの変更
ここにあなたに追加する別の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\"
これにより、すべてのリモートを1つのホストから別のホスト(エイリアス)に変更できます。例を参照してください。
$ > 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)
それらをすべて組み合わせる
2つのコマンドを1つに結合する必要があります。これは非常に簡単です。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\"
ソースリンク-チュートリアル