LoginSignup
2
1

More than 1 year has passed since last update.

githubの複数アカウントの使い分け

Last updated at Posted at 2023-04-04

始めに

githubのアカウント(プライベート用や会社用などの使い分け)の使い分けについていくつか方法があるようだが、自分なりのファイナルアンサーをまとめておく。

github認証 : HTTPS + Token or SSH

githubのリモートリポジトリへのpushには認証が必要である。 githubでは HTTPS or SSHで認証を行う。

HTTPSは httpsアドレスを指定してcloneするアレである。cloneするとpasswordをきかれるので、githubページで生成したtoken文字列を指定する。 tokenは昔のパスワードに変わるものである.

SSHでのアクセスにはローカルでssh鍵を生成しそれをgithub.comページで登録することで、ローカルとgithubアカウント紐づけて認証を行う方法である.

個人的には鍵生成とか面倒なのでより直感的でステートレス(に近い気がする)なHTTPSベースの認証の方が好き。

user.name ?

gitではuser.name, user.emailでcommit時の「アカウント」を指定できる。という説明をしている記事も結構見たのだけど、これはアカウントを指定しているわけではなく、単にコミットログに残す名前とメールをしているに過ぎない(名前/email は任意のものが指定できる)と理解している。そのため、「アカウント」を切り替えたつもりが、想定しない「名前」でコミットしちゃったよという事故が起きる。

複数アカウント使い分けはこうする

上記を踏まえて、自分的には以下の方法を取りたいと思う。

Step 1. clone時にユーザとtokenを指定してクローンする.

git clone https://{ユーザ名}:{トークン}@github.com/hbjpn/hogehoge.git

これで当該フォルダにcloneしてきたgit repositoryおよびpushする時には指定したアカウントが使われる。この情報はcloneしたフォルダの.git/configに保存されている。トークンは期限があるため、期限が切れたら下記ファイルのトークンを直接書き換えしまえばいい。
※ ユーザ名トークン名を指定しないでcloneした後に、下記ファイルを直接書き換えても問題なさそう。

% cat .git/config
...例...
[remote "origin"]
	url = https://hbjpn:ghp_XXXXXXXXXXXXXXXXXXXXXX@github.com/hbjpn/hogehoge.git
	fetch = +refs/heads/*:refs/remotes/origin/*
...

トークンの取得方法詳細は別途ググって欲しい。 簡単に紹介すると github.comにログインして「Settings」-> 「Developer Settings」-> 「Personal Access Tokens」 からGenerate New Tokenする。パーミッションの設定は普通のリポジトリ操作だけなら「repo」にチェックしておけば良さそう。ちなみに、「Developer Settings」が一番下のわかりにくい所にあるのが個人的には嫌い。github使っている人はほぼDeveloperなんだからメインの設定扱いくらいでよいと思うのだが・・・。

Step 2. コミット記録用 名前・メールアドレスの設定
グローバル設定とローカル設定がある。アカウント使い分けしたい場合は、フォルダごとに使い分けたいというのが典型的ユースケースだろう。ローカル設定を一回だけ実施すればOKだ。

% git config user.name "{名前}"
% git config user.email "{メールアドレス}"

ここで設定した情報も .git/configに記録される。

何も設定しないとglobal設定 (~/.gitconfigに記録されているもの)が使われてしまうので必ず設定すること。

以上のstep1, step 2 だけやっとけばOKだ。

2
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
2
1