前置き
GitHub に2つの個人アカウントを持っているのですが、これらを使い分けることにしたので忘れないうちに何をしたかをメモします。
2つ持っている経緯は忘れましたが、せっかくなので活用してやろうというのが動機です。
Prerequisites
- GitHub CLI
- direnv
具体的に何をしたか
あるディレクトリ(ここでは ~/Directory とします)以下でのみ別アカウントを利用することにしました。
別ユーザとして振る舞う
Git を利用する際、普段は ${XDG_CONFIG_HOME}/git/config 辺りにグローバルな設定を書いていると思います。
ユーザ情報に関わる部分は user.name や user.email 辺りですね。
これらは環境変数で上書きすることができるようです。参考
GIT_AUTHOR_NAMEGIT_AUTHOR_EMAILGIT_COMMITTER_NAMEGIT_COMMITTER_EMAIL
これらを direnv で設定してやれば、そのディレクトリ配下ではそのユーザとして振る舞うことができそうです(多分)。
GitHub CLI で利用する別のトークンを用意する
これも GitHub CLI が読む環境変数を上書きしてやることで実現します。参考
GH_CONFIG_DIR
これを他のアカウントで利用しているものと別の場所を見るように変更してやります。今回は ~/Directory/.gh としました。
手順
-
~/Directoryに次の.envrcを用意しました(適宜読み替えてください)。 -
direnv allow、gh auth loginを実行し、このディレクトリ以下で利用するアカウントの認証を通しました(preferred protocol は HTTPS としました。SSH だと考えることが増えそうなのでパスです)。 - あとは GitHub からの clone は
gh repo cloneをする感じで利用していきます。
export GIT_AUTHOR_NAME=<name>
export GIT_AUTHOR_EMAIL=<e-mail>
export GIT_COMMITTER_NAME=<name>
export GIT_COMMITTER_EMAIL=<e-mail>
export GH_CONFIG_DIR=~/Directory/.gh
最後に
初め COMMITTER のスペルを間違えていました。MもTも2つなんですね。