0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub で複数のアカウントを使いわける

Last updated at Posted at 2023-03-17

リポジトリごとに違うアカウントを使いたいのですが git push ができなくて困っていました。
探した記事がどれも難しかったので自分用にまとめます、、、

※SSH接続でアカウントを使えている (= SSHキーを作成して GitHub への登録ができている) 人を対象にします。

SSH接続に使う鍵を用意する

複数アカウントを使うのでアカウントの数だけSSH鍵を作ります。

$ ssh-keygen -t ed25519 -C "メールアドレス"
$ ls ~/.ssh

id_ed25519_1  id_ed25519_1.pub # アカウント1 の 秘密鍵と公開鍵
id_ed25519_2  id_ed25519_2.pub # アカウント2 の 秘密鍵と公開鍵
id_ed25519_3  id_ed25519_3.pub # アカウント3 の 秘密鍵と公開鍵

SSH鍵を GitHub に登録する

GitHub のページで以下を開きます。※2023/03/18 の表記です

アカウントの Setting > SSH and GPG keys > SSH keys > New SSH Key

ひとつのアカウントにつき公開鍵をひとつ設定します。一度どこかのアカウントで使った公開鍵は他のアカウントで使えないので注意してください。

.ssh フォルダに config ファイルをつくる

$ touch ~/.ssh/config

config ファイルの内容は以下です。
「ホスト1」と「id_ed25519_1」は自分用に変えてください。他の値はこのままです。

Host ホスト1
 hostname github.com
 identityfile ~/.ssh/id_ed25519_1
 user git
 IdentitiesOnly yes # なくても動くけどあったほうがいい
 Compression yes # なくても動くけどあったほうがいい

Host ホスト2
 hostname github.com
 identityfile ~/.ssh/id_ed25519_2
 user git
 IdentitiesOnly yes
 Compression yes

Host ホスト3
 hostname github.com
 identityfile ~/.ssh/id_ed25519_3
 user git
 IdentitiesOnly yes
 Compression yes

ちゃんと認証されるか確認します。うまく設定できていれば、GitHub に Hi {アカウント名}! って言われます。

$ ssh ホスト1

PTY allocation request failed on channel 0
Hi アカウント1! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

gitconfig に接続先の設定をいれる

やっとですね。これをやると git push ができるようになります。

まずアカウントを使い分けたいリポジトリのルートに移動します。
ここで言うルートというのは、初めてリポジトリを作ったときに README.md が作られるところです。

ls -a をすると .git という隠しファイルが見つかります。

$ ls -a
. .. .git 

.git 以下にある .git/config を編集します。

$ code .git/config # vscode で編集する場合

[remote "origin"] というセクションがあるので書き換えます。セクションがなければ新しく作ります。

[remote "origin"]
-    url = git@github.com:アカウント1/リポジトリ名.git
+    url = ホスト1:アカウント1/リポジトリ名.git
    fetch = +refs/heads/*:refs/remotes/origin/*

保存して、動くか試します。

$ git branch test-multiple-account
$ git push origin test-multiple-account
$ git push origin :test-multiple-account # リモートのブランチを削除
$ git branch -D test-multiple-account # ローカルのブランチを削除

エラーが出なければ成功です。


参考になった記事です

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?