🐙

githubリポジトリごとにgithubアカウントとghコマンドを使い分ける

2024/02/19に公開

概要

たとえば、会社と個人用など、リポジトリごとに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-backendmyblogの設定が両立しない事になってしまう。たとえば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