【Git】同一マシンでリポジトリ毎にユーザを使い分ける【Config】

はじめに
一台のマシンで複数の Git ユーザを使い分けるための設定をまとめました。
業務用と個人用でユーザを分けるなど、複数のリポジトリを異なるユーザで使い分ける際に、誤って違うユーザで誤コミットしてしまった経験はありませんか?
そんなちょっと恥ずかしい思いをしないための設定です。
TL;DR
- global 設定の
user.nameとuser.emailをunsetする - global 設定の
user.useConfigOnlyをtrueにする - 各リポジトリの local 設定で
user.nameとuser.emailを設定する
Git の設定ファイルについて
設定ファイルの場所
| 場所 | スコープ | git config オプション |
|---|---|---|
/etc/gitconfig か C:\Program Files\Git\etc\gitconfig |
システム上の全てのユーザーと全てのリポジトリ | git config --system |
~/.gitconfig か ~/.config/git/config か C:\Users\$USER |
特定のユーザー | git config --global |
[repository]/.git/config |
特定の単一リポジトリ | git config --local |
設定ファイルの優先度
スコープが小さいほど(表の下にいくほど)優先度が高くなります。
つまり、 global の設定よりも local の設定(リポジトリ毎の設定)が優先されます。
Git ユーザの使い分け設定
global 設定
user.name と user.email を削除する
git config --global --unset user.name git config --global --unset user.email
ここで設定した user.name と user.email は、リポジトリの local 設定に user.name や user.email が存在しない場合に利用されます。
useConfigOnly を true にする
git config --global user.useConfigOnly true
user.useConfigOnly を true にすると、 global 設定や local 設定に明示的に user.name と user.email が設定されていない場合、コミット時に警告が表示され、処理が中断されます。
公式サイトのドキュメントは コチラ を参照。
Git - git-config Documentation
注意
※ user.useConfigOnly は、Git バージョン 2.8.0 以降から設定可能になります。
各リポジトリの local 設定
user.name と user.email を設定する
git config --local user.name [Name] git config --local user.email [Mail]
各リポジトリで使用する user.name と user.email を設定します。
ここで設定した user.name と user.email がコミット履歴に表示されることになります。
まとめ
要点をまとめると、 global 設定の useConfigOnly を true にした上で user.name と user.email を削除し、各リポジトリの local 設定に user.name と user.email を設定します。
こうすることで、各リポジトリの user.name と user.email が未設定の場合はコミットをすることができなくなり、万が一 local 設定にユーザ情報を設定し忘れても、 global 設定のユーザ情報での誤コミットを防ぐことができます。
当たり前ですが、各リポジトリの local 設定の誤りを防ぐことはできませんので、ユーザ情報の設定には細心の注意を払いましょう!