フロントエンドやバックエンドを担当することがあります、山本です。
今回は、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でした。
今回は、下記の設定を行います。
- /path/to/company/配下では会社のgitアカウントを使用する
- ~/orig_repo/ 配下では、個人のgitアカウントを使用する
- 上記以外の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
# 追加 ここから -----
[includeIf "gitdir:/path/to/company/"]
path = ~/.gitconfig_company
[includeIf "gitdir:~/orig_repo/"]
path = ~/.gitconfig_private
# 追加 ここまで -----
[core]
excludesfile = /Users/username/.gitignore_global
editor = vim -c \"set fenc=utf-8\"
正しく設定できているかを確認
今回は、下記の設定を行いました。 正しく設定できているか1つずつ確認していきます。
- /path/to/company/配下では会社のgitアカウントを使用する
- ~/orig_repo/ 配下では、個人のgitアカウントを使用する
- 上記以外の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
正常に反映されていれば完了です。
お読みいただきありがとうございました。