🏊♂️
GitHub(git)のアカウント切り替え
課題
GitHubのアカウントをラクに切り替えたい。
参考記事
わかりやすくて最高の記事です。
環境
OS: macOS
sw_vers
ProductName: macOS
ProductVersion: 15.3.2
git: 2.39.5
git -v
git version 2.39.5 (Apple Git-154)
シェル: zsh 5.9
zsh --version
zsh 5.9 (arm64-apple-darwin24.0)
手続き
- GitHub新規アカウント作成
- 切り替え関数作成
サービス上での切り替えボタン
いちいちログアウト(サインアウト)することなく、右上のスイッチボタンから切り替え可能です。
GitHub新規アカウント作成
ユーザー登録部分は割愛いたします。
鍵作成
// .sshに移動
cd ~/.ssh
// できればed25519
ssh-keygen -t ed25519 -C "{email}" -f {keyname}
// ed25519が使えない場合
ssh-keygen -t rsa -b 4096 -C "{email}" -f {keyname}
GitHubに公開鍵を登録
出来上がった鍵の{keyname}.pub
のほうを開いてコピー。pbcopy < ~/.ssh/{keyname}.pub
としてもおなじです。
GitHubの鍵登録ページで鍵追加を行います。
configに記載
~/.ssh/config
に接続情報を記載してラクします。
~/.ssh/config
Host {hostname}
User git
HostName github.com
ForwardAgent yes
identitiesonly yes
identityFile ~/.ssh/{keyname}
Compression yes
Port 22
TCPKeepAlive yes
接続確認
-T
オプションは、擬似端末(pseudo-terminal)を割り当てないようにするオプションです。逆オプションは-t
小文字のtオプションです。-T
オプションは、対話型のシェルセッションが開始されなくなるので、リモートの実行だけが返されます。
ssh -T {hostname}
GitHubでの鍵登録がうまくいっていないと、Permission denied
になります。
切り替え関数作成
vi ~/.zshrc
でもnano ~/.zshrc
でも、好きなエディターでシェルの設定ファイルを開きます。
~/.zshrc
+ function gitmain() {
+ git config --global user.name "[メインのGitHubアカウント名]"
+ git config --global user.email "[メインのGitHubのメールアドレス]"
+ source ~/.zshrc
+ echo "Git config set to main account:"
+ git config --global user.name
+ git config --global user.email
+ }
+
+ function gitsub() {
+ git config --global user.name "[サブのGitHubアカウント名]"
+ git config --global user.email "[サブのGitHubのメールアドレス]"
+ source ~/.zshrc
+ echo "Git config set to sub account:"
+ git config --global user.name
+ git config --global user.email
+ }
taichifukumotoさんとほぼおなじ関数です。切り替え後に、なにに切り替わったのかを表示するようにカスタムさせていただきました。あとはこれを、ターミナルから呼び出すだけです。
試しにわたしの場合はgitsub
と打って関数を呼び出すと、アカウントが切り替わって、アカウント名とメールアドレスが表示されます。
gitsub
junphilos
~~@gmail.com
Discussion