githubリポジトリごとにgithubアカウントとghコマンドを使い分ける
概要
たとえば、会社と個人用など、リポジトリごとにgithubアカウントを切り替えたい場合などはgitコマンドだけで設定自体は簡単に済ませられる。ここではさらにghコマンドなどもリポジトリごとにわける運用方法を紹介する。
前提として、どちらのリポジトリも https でクローンしているものとする。
githubアカウント自体の切り替え
仕事用リポジトリを~/Documents/work-backend、個人用リポジトリを~/Documents/myblogとして運用していた場合
# 仕事用ディレクトリへ
% cd ~/Documents/company-backend
% git config user.name myname
% git config user.email myname@お仕事用ドメイン
# 個人用のディレクトリへ
% cd ~/Documents/myblog
% git config user.name watashi
% git config user.email watashi@example.com
みたいに使い分ける事ができる
ghコマンドでもできないか
ghコマンドに関してはデフォルトだと ~/.config/gh配下に設定が格納されていってしまうので、上記のcompany-backendとmyblogの設定が両立しない事になってしまう。たとえばcompany-backendを利用する為にgh loginを行うと仕事用のアカウントにはログインできてる状態になるが、myblogでは個人アカウントが要求されているのに~/.config/ghにはcompany-backendの認証情報がかきこまれてしまっているため、コマンドは失敗してしまう。myblogには個人アカウントの認証情報をもたせる事はできないのだろうか
GH_CONFIG_DIRを設定する
GH_CONFIG_DIRを設定すると、その指定されたディレクトリの認証情報を利用するようになる。
direnvなどを利用した上での前提だが、myblogに.envrcを以下の通り用意する。
設定した後はdirenv allowも忘れずに😁
export GH_CONFIG_DIR=$PWD/.config/gh
こうすると、認証情報は ~/Documents/myblog/.config/gh 配下に書き込まれる事になる為、ghコマンドも無事動作する。
.configは秘匿情報なので.gitignoreには
.config/*
などを忘れずに入れておく事
myblog配下でもgh login
上記の設定を行った上でgh loginを~/Documents/myblog配下で実施すれば完了です
Discussion