13
9

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.

満足袋の1人アドベントカレンダーAdvent Calendar 2022

Day 2

同じPCでGitHubのアカウントを複数利用して切り替える方法

Last updated at Posted at 2022-12-01

はじめに

私は1つのPCで5つのGitHubのアカウントを切り替えています。

何故そんなSNSの裏垢のような使い方を…? と思われるかもしれませんが、諸事情があるので触れないでください。(?)

冗談はさておき、社用アカウントと私用アカウントで分けている等GitHubのアカウントを複数持つ人も少なくないと思います。複数アカウントがある場合、同じPCでGitHubアカウントを切り替えるには少し設定が必要だったのでこちらで手順を紹介します。

この記事の対象者

  • GitHubで複数のアカウントを所持していて、リポジトリ毎にアカウントを切り替えたい人
  • GitHubのアカウントをTwitterの裏垢のように運用したい人
  • GitHubのアカウントを切り替えて怪しい活動をしたい人

GitHubのアカウントの切り替え手順

前提

companyというGitHubアカウントとpirvateというGitHubアカウントを所持していると想定します。

1つのアカウントに紐付ける秘密鍵と公開鍵を生成する

まずはcompanyアカウントの秘密鍵と公開鍵を生成します。鍵周りは~/.sshディレクトリを利用しますので、存在していないのであれば生成してください。

$ mkdir ~/.ssh # .sshディレクトリが存在しない場合
$ cd ~/.ssh # ~/.sshディレクトリに移動
$ ssh-keygen -t rsa -f <ファイル名> # ex) ssh-keygen -t rsa -f company
$ ls # <ファイル名> と <ファイル名>.pub が生成されているか確認

以上のコマンドを実行すると秘密鍵と公開鍵が生成されます。companyというファイル名を指定した場合、companyという秘密鍵ファイルと、company.pubという公開鍵ファイルが生成されます。

~/.ssh/configファイルに設定を書き込む

※.gitconfigファイルとは別物なので注意
次に~/.sshディレクトリにconfigというファイルを作成し、そこに先ほど生成した秘密鍵の情報を登録します。

# カレントディレクトリ ~/.ssh
$ touch config # ~/.ssh/configファイルがない場合
$ vi config

以下configファイルの編集内容です

Host <ホスト名>
    HostName github.com
    IdentityFile ~/.ssh/<秘密鍵のファイル名>
    User git
    AddKeysToAgent yes
    UseKeychain yes

# 以下設定例
Host company
    HostName github.com
    IdentityFile ~/.ssh/company
    User git
    AddKeysToAgent yes
    UseKeychain yes

Host private
    HostName github.com
    IdentityFile ~/.ssh/private
    User git
    AddKeysToAgent yes
    UseKeychain yes

以上のように設定を保存してconfigの設定は完了です。
こちらで設定したホスト名を指定することで、GitHubとのSSH認証をする際に秘密鍵のパス指定等を省略することが出来ます。

公開鍵をGitHub上で登録する

公開鍵のコピー

公開鍵の中身をコピーします。以下コマンドです。

pbcopy < ~/.ssh/<ファイル名>.pub

GitHubのサイト上で公開鍵登録

続いてGitHubの設定画面にアクセスして、SSH keysの設定メニュー上のNew SSH keyというボタンを押します。

以下手順画像です。

無題のプレゼンテーション (1).jpg

無題のプレゼンテーション (2).jpg

以上の手順で公開鍵の登録が完了し、SSH接続が出来るようになりました。GitHubとのSSH接続が正常に行われているか確認するコマンドは以下になります。

$ ssh -T <ホスト名>

接続が完了している場合、以下のようなメッセージが表示されます。

Hi <ホスト名>に紐付くGitHubアカウント名! You've successfully authenticated, but GitHub does not provide she
ll access.

GitHubとのSSHを利用したやりとり

GitHub上に登録されているリポジトリとやりとりを開始する際に、git remote addgit clone等で接続設定をすると思います。
このときに先ほど~/.ssh/configに登録したホスト名を指定します。

cloneするとき

例えばsample-userというユーザーもしくは組織が持つsample-repositoryというリポジトリをクローンするとします。
こちらのリポジトリに対してはprivateというホスト名で登録したGitHubアカウントでやりとりしようとする場合は、以下のようなコマンドになります。

$ git clone git@private:sample-user/sample-repository.git

リモートリポジトリを登録するとき

cloneした後にファイル編集をしてgit addgit pushをするにはリモートリポジトリを登録する必要があります。その時も先ほどのようにホスト名を指定します。以下コマンドになります。

$ git remote add origin git@private:sample-user/sample-repository.git

ローカルリポジトリのGitのconfig設定

先ほどGitHubとのSSHを利用した接続が完了したのですが、git addをした際にemailとnameの設定を求められると思います。
その際は--localオプションを指定することで、そのプロジェクト限定の設定になります。アカウントを複数切り替える場合は--localオプションを指定した方が良いでしょう。

$ git config --local user.name "<ユーザー名>"
$ git config --local user.email "<メールアドレス>"

おわりに

私が複数アカウントを切り替える際に利用しているコマンドは以上になります。アカウントを切り替えて、表の自分と裏の自分、第三の自分と切り替えてソースコードにコミットしていきましょう!

13
9
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
13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?