前置き
GitHub に2つの個人アカウントを持っているのですが、これらを使い分けることにしたので忘れないうちに何をしたかをメモします。
2つ持っている経緯は忘れましたが、せっかくなので活用してやろうというのが動機です。
Prerequisites
- GitHub CLI
- direnv
具体的に何をしたか
あるディレクトリ(ここでは ~/Directory
とします)以下でのみ別アカウントを利用することにしました。
別ユーザとして振る舞う
Git を利用する際、普段は ${XDG_CONFIG_HOME}/git/config
辺りにグローバルな設定を書いていると思います。
ユーザ情報に関わる部分は user.name
や user.email
辺りですね。
これらは環境変数で上書きすることができるようです。参考
GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_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
をする感じで利用していきます。
~/Directory/.envrc
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つなんですね。