始めに
githubのアカウント(プライベート用や会社用などの使い分け)の使い分けについていくつか方法があるようだが、自分なりのファイナルアンサーをまとめておく。
複数アカウント使い分けはこうする
Step 1. clone時にユーザとtokenを指定してクローンする.
git clone https://{ユーザ名}:{トークン}@github.com/{ユーザ名}/hogehoge.git
これで当該フォルダにcloneしてきたgit repositoryおよびpushする時には指定したアカウントが使われる。この情報はcloneしたフォルダの.git/configに保存されている。トークンは期限があるため、期限が切れたら下記ファイルのトークンを直接書き換えしまえばいい。
※ ユーザ名トークン名を指定しないでcloneした後に、下記ファイルを直接書き換えても問題なさそう。
% cat .git/config
...例...
[remote "origin"]
url = https://hbjpn:ghp_XXXXXXXXXXXXXXXXXXXXXX@github.com/{ユーザ名}/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だ。
上で設定方法は終わり。下記は参考情報。
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 は任意のものが指定できる)と理解している。そのため、「アカウント」を切り替えたつもりが、想定しない「名前」でコミットしちゃったよという事故が起きる。