Zenn
🏊‍♂️

GitHub(git)のアカウント切り替え

2025/03/24に公開

課題

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

ログインするとコメントできます