開発においてバージョン管理システムが利用されることが多いのですが、様々な開発現場、個人環境ごとに、新しく専用のアカウントが作成され、それぞれのアカウントを利用するリポジトリ毎に注意しながら利用している方も多いと思います。今回は、そのような状況でのgitアカウントの管理方法について記載したいと思います。

Gitアカウントの切り替え方法は?

よく利用されるパターンは、次の3つあるかと思います。

  1. メインアカウント、サブアカウントによる設定
  2. gitのinclude機能を使った呼び分け
  3. gitのincludeIfを使ったディレクトリレベルでの設定切り替え

メインアカウント、サブアカウントによる設定

こちらのパターンは、メインで使うアカウントを利用して全体で反映されるグローバルで設定しておき、その設定を変更したい場合には、特定のリポジトリごとに下記コマンドを実行して、そのgitリポジトリ内の専用の設定を作成するという方法です。

・グロール設定の例
・リポジトリごとに設定する例

普段あまり利用せず、少しだけリポジトリを参照したりちょこっと変更する場合には、この方法も良いのですが、毎回設定を追加するのが面倒なのと設定を忘れたりすることがあります。git clone するときのwrapperスクリプトを作成して、そこで専用のconfigを追加するという方法を取られている方もいらっしゃるかと思います。

gitのinclude機能を使った呼び分け

gitの設定を読み込む方法には、includeという機能があります。こちらでは、その機能を使った方法になります。よく、Dotofilesとして公開リポジトリ上にgitconfigを共有化して使っていたときに良く行われる方法で、メールアドレスなどの個人情報を含むだけをリポジトリ以外の部分で管理する方法です。

.gitconfigでは、下記のようにincludeすることができます。

・.gitconfigで.gitconfig.localというファイルをincludeする例
・読み込む.gitconfig.localの例

これで.gitconfig.localを読み込むように出来るので、.gitconfig.paterrn1, .gitconfig.pattern2…を必要なタイミングで、シンボリックリンクを.gitconfig.localに張り設定を切り替える方法です。こちらは、あまり頻繁に環境変更がない場合には、まずまず機能した印象があります。

gitのincludeIfを使ったディレクトリレベルでの設定切り替え

今回は、次のような形のディレクトリ構造でそれぞれのgit設定を読み分けるイメージで設定方法について記載していきます。

  1. ~/work/companyA、このディレクトリ配下では、A社向けのgitアカウントを利用する
  2. ~/work/companyB、このディレクトリ配下では、B社向けのgitアカウントを利用する

下記に例を示します。

こちらで設定完了です。

おわりに

今回は、普段の作業でも発生する複数のgitアカウント管理の方法について記載しました。上手く環境構築をしてストレスのない開発をしましょう!