gitアカウントを作業フォルダによって自動で変更できるようにする

フロントエンドやバックエンドを担当することがあります、山本です。

今回は、gitアカウントをリポジトリごとに自動で変更されるようにした時の作業内容を共有します。

使用したのは、

  • git version 2.14.1

です。

gitアカウントを複数切り替えて使用されている方に見てもらえるとお役に立てるのではないかと思います。

目次

まずはgitのバージョンが2.13以上になっているか確認

今回、アカウントの切り分けに includeIf を使用するのですが、gitのバージョンが2.13より古いとそのコマンドが存在していないため、エラーは出ないものの、設定が完了しないという現象に陥ります。ちなみに私はここで30分ほど詰まっておりました。

公式リファレンス: Git - git-config Documentation

$ git --version

git version 2.14.1

私のgitはバージョン2.14.1でした。

今回は、下記の設定を行います。

  1. /path/to/company/配下では会社のgitアカウントを使用する
  2. ~/orig_repo/ 配下では、個人のgitアカウントを使用する
  3. 上記以外のgitフォルダでは、デフォルトのgitアカウントを使用する

では早速、設定を始めていきます。

gitの設定ファイルを作成

アカウントごとに設定ファイルを作成し、それぞれに切り替えたい設定を記入していきます。

会社用のファイルを作成

会社用のgitconfigファイル ~/.gitconfig_company を作成し、その中にgitアカウントの情報を記載します。

$ echo "[user]
  name = company_username
  email = company_username@company.com" >> ~/.gitconfig_company

個人用の設定ファイルを作成

個人用のgitconfigファイル ~/.gitconfig_private を作成し、その中にgitアカウントの情報を記載します。

$ echo "[user]
  name = private_username
  email = private_username@private.com" >> ~/.gitconfig_private

設定ファイルが正しく作成されているかを確認します。

$ ls -a ~/ | grep gitconfig
.gitconfig
.gitconfig_company
.gitconfig_private

gitの設定ファイルを更新

最後に、グローバルなgitの設定ファイルにアカウントを自動で変更する処理を追加していきます。

下記コマンドでグローバルの設定ファイルを開いてください。

$ git config --global -e

現段階の中身は、 [user] ブロックにはgitユーザーの設定が記載されており、 [core] ブロックには設定用の記述がある下記のような見た目になっている方が多いと思います。

# This is git's per-user configuration file.
[user]
  name  = default
  email = default@default.com

[core]
  excludesfile = /Users/username/.gitignore_global
  editor = vim -c \"set fenc=utf-8\"

これを下のように変更します。

# This is git's per-user configuration file.
[user]
  name  = default
  email = default@default.com

# 追加 ここから -----
[icludeIf "gitdir:/path/to/company/"]
  path = ~/.gitconfig_company

[icludeIf "gitdir:~/orig_repo/"]
  path = ~/.gitconfig_private
# 追加 ここまで -----

[core]
  excludesfile = /Users/username/.gitignore_global
  editor = vim -c \"set fenc=utf-8\"

正しく設定できているかを確認

今回は、下記の設定を行いました。 正しく設定できているか1つずつ確認していきます。

  1. /path/to/company/配下では会社のgitアカウントを使用する
  2. ~/orig_repo/ 配下では、個人のgitアカウントを使用する
  3. 上記以外のgitフォルダでは、デフォルトのgitアカウントを使用する

1. /path/to/company/ 配下では会社のgitアカウントが設定されているか

まずは、 /path/to/company/ 配下では会社のgitアカウントが設定されているかを確認します。

[user]
  name = company_username
  email = company_username@company.com

次のコマンドを順番に入力してみてください。

$ cd /path/to/company/
$ cd git_repo/
$ git config user.name
company_username
$ git config user.email
company_username@company.com

2. ~/orig_repo/ 配下では、個人のgitアカウントが設定されているか

次に、 ~/orig_repo/ では下記のような設定になっているかを確認します。

[user]
  name = private_username
  email = private_username@private.com

次のコマンドを順番に入力してみてください。

$ cd ~/orig_repo/
$ cd git_repo/
$ git config user.name
private_username
$ git config user.email
private_username@private.com

3. それ以外のgitフォルダでは、デフォルトのgitアカウントを使用する

最後に、上記以外のフォルダにあるgitリポジトリでは、デフォルトの設定になっているかを確認します。

[user]
  name  = default
  email = default@default.com

次のコマンドを順番に入力してみてください。

$ cd /path/to/other/
$ cd git_repo/
$ git config user.name
default
$ git config user.email
default@default.com

正常に反映されていれば完了です。

お読みいただきありがとうございました。

この記事を書いた人 yamamoto 営業を経験した後、現在はフロントエンドとバックエンドをメインで担当。
エンジニアっぽくないエンジニアと言われることが多い。
好きな漫画 NARUTO/ワンピース/バガボンド
TOP