1台のパソコンで複数のGitアカウントを切り替えて使う設定(SSH接続)
自分メモです('ω')
複数Gitアカウントを使い分けたい事情があり、パソコンに設定した時のメモになります。またパソコン変える時の備忘用に。
設定前の困った状況と対応方針
httpsトークンでの認証だと、どうしても端末のメインブラウザのCredentialに引っ張られてしまい上手く行かない。(私の場合はEdgeのMicrosoftアカウントのサインインに引っ張られる)せめて使用するCredentialを選ばせてくれたら良いのに。
トークンアクセスを拒否しパスワードアクセス(Basic認証)したら、すぐにGitHubから「もうBasic認証使えなくなるから、早くトークンアクセスに切り替えてね」なんてメールが来ちゃいました('ω')
そこで、GitHubではトークンアクセス推奨なのは承知の上で、SSH接続を試してみました。実施したことは以下の通り。
- メインアカウント/サブアカウント用のSSH鍵の生成、GitHubへのSSH公開鍵登録
- /.ssh/configを作成・編集し、接続先に応じてユーザー名とSSH秘密鍵を使い分け
- アカウント切り替えのシェルを作成(リモートリポジトリ、user.name、user.emailを切り替え)
リモートリポジトリのURL指定の違い
↓こんな感じです。ハイパーリンクになってしまうので、「~」入れてます。
- HTTPS URL:https~/github.com/
アカウント
/リポジトリ名
- SSH URL:git@~github.com:
アカウント
/リポジトリ名
SSH接続用のSSH鍵生成と公開鍵登録
こちらは以下記事が分かり易くまとまっているので、これを参考に作業します。
SSH接続の使い分け
まずはSSHの接続使い分けからです。(/.ssh/config)
ポイントは、実際の接続先となるHostName
は「github.com」で同一ですが、シェル内でホスト指定の使い分けができるよう、別名で登録してあげることです。名前は何でもOKです。
Host github.com.main
HostName github.com
User usernameA
Port 22
IdentityFile ~/.ssh/id_rsa_main
TCPKeepAlive yes
IdentitiesOnly yes
Host github.com.sub
HostName github.com
User usernameB
Port 22
IdentityFile ~/.ssh/id_rsa_sub
TCPKeepAlive yes
IdentitiesOnly yes
Gitアカウントを切り替えるシェルの作成
続いてはGitアカウントを切り替えるシェルです。(/.bashrc)
これで、git configのuser.name
とuser.email
、remote.origin.url
を書き換えています。関数名は分かり易ければ何でも。
function gitMain() {
git config --global user.name "usernameA"
git config --global user.email emailAddressA
git remote remove origin
git remote add origin [email protected]:usernameA/repository-name.git
git config --list
}
function gitSub() {
git config --global user.name "usernameB"
git config --global user.email emailAddressB
git remote remove origin
git remote add origin [email protected]:usernameB/repository-name.git
git config --list
}
これで、GitMain
とGitSub
を打つたびに参照するリモートリポジトリの切り替えができるようになります。私は不安なので、必ずgit config --list
で変更された環境を確認するようにしていますが、ここは無くても問題ないです。
終わりに
毎回作業している環境を意識しながら、切り替えながらの作業になりますので、人によっては面倒かもしれません。私的にはむしろブラックボックスにしてしまうとすぐ忘れてしまいそうなので、これくらいでちょうど良いです。
もっと高度なやり方をされている例も色々ありそうですが・・、それはその内。
こちらの記事、大いに参考にさせて頂きました。
Author And Source
この問題について(1台のパソコンで複数のGitアカウントを切り替えて使う設定(SSH接続)), 我々は、より多くの情報をここで見つけました https://qiita.com/ranchi1977/items/4bc5fde5ab73631ef630著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .