AI can fly !!

AI がやりたい Web エンジニアのアウトプット (AI の知識は無い)

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

git-logo

はじめに

一台のマシンで複数の Git ユーザを使い分けるための設定をまとめました。

業務用と個人用でユーザを分けるなど、複数のリポジトリを異なるユーザで使い分ける際に、誤って違うユーザで誤コミットしてしまった経験はありませんか?

そんなちょっと恥ずかしい思いをしないための設定です。

TL;DR

  • global 設定の user.nameuser.emailunset する
  • global 設定の user.useConfigOnlytrue にする
  • リポジトリの local 設定で user.nameuser.email を設定する

Git の設定ファイルについて

設定ファイルの場所

場所 スコープ git config オプション
/etc/gitconfigC:\Program Files\Git\etc\gitconfig システム上の全てのユーザーと全てのリポジトリ git config --system
~/.gitconfig~/.config/git/configC:\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.nameuser.email は、リポジトリの local 設定に user.nameuser.email が存在しない場合に利用されます。

useConfigOnly を true にする

git config --global user.useConfigOnly true

user.useConfigOnlytrue にすると、 global 設定や local 設定に明示的に user.nameuser.email が設定されていない場合、コミット時に警告が表示され、処理が中断されます。

公式サイトのドキュメントは コチラ を参照。

Git - git-config Documentation

注意

user.useConfigOnly は、Git バージョン 2.8.0 以降から設定可能になります。

github.blog

リポジトリの local 設定

user.name と user.email を設定する

git config --local user.name [Name]
git config --local user.email [Mail]

リポジトリで使用する user.nameuser.email を設定します。

ここで設定した user.nameuser.email がコミット履歴に表示されることになります。

まとめ

要点をまとめると、 global 設定の useConfigOnlytrue にした上で user.nameuser.email を削除し、各リポジトリの local 設定に user.nameuser.email を設定します。

こうすることで、各リポジトリuser.nameuser.email が未設定の場合はコミットをすることができなくなり、万が一 local 設定にユーザ情報を設定し忘れても、 global 設定のユーザ情報での誤コミットを防ぐことができます。

当たり前ですが、各リポジトリの local 設定の誤りを防ぐことはできませんので、ユーザ情報の設定には細心の注意を払いましょう!