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/*
などを忘れずに入れておく事
gh login
myblog配下でも上記の設定を行った上でgh login
を~/Documents/myblog
配下で実施すれば完了です
Discussion