Git 設定のスコープ (local/global/system) を理解する

Git 設定の 3 つのスコープ

git config による設定のスコープは 3 種類あり、スコープが狭くなるほど参照時の優先度は高くなります。 下記はそれぞれのスコープでの設定方法を、優先度の高い順に示しています。 カッコの中のファイル名は、コマンドを実行したときの設定値の保存先です。

$ git config --local ...   # 各リポジトリごとの設定 (<repo>/.git/config)(優先度:高)
$ git config --global ...  # 現在のユーザの共通設定 (~/.gitconfig)
$ git config --system ...  # システム内の共通設定 (/etc/gitconfig など)(優先度:低)

例えば、global 設定で user.nameIchiro になっていても、local 設定が Jiro になっていれば、Jiro の方が優先的に使用されます。 プロジェクト(リポジトリ)ごとに固有の設定をする場合は、local なスコープで設定を行うとよいでしょう。 この場合、プロジェクトの作業ツリーのルートにある .git/config ファイルに設定が保存されます。

例えば、次のようにして local 設定の user.nameuser.email を変更することができます。

$ git config --local user.name maku77
$ git config --local user.email maku77@example.com

上記コマンドを実行した後で、<リポジトリ>/.git/config ファイルを開くと次のように設定情報が保存されていることが分かります。

<リポジトリ>/.git/config(抜粋)
[user]
	name = maku77
	email = maku77@example.com

それぞれの設定ファイルをコマンドで開く (git config --edit)

各スコープの設定ファイルは、git config --edit コマンドで開くことができます。

$ git config --edit           # リポジトリの設定ファイルを開く(local 設定)
$ git config --edit --local   # (同上)
$ git config --edit --global  # ユーザーの設定ファイルを開く(global 設定)
$ git config --edit --system  # システムの設定ファイルを開く(system 設定)

使用するエディタは、core.editor 設定や、GIT_EDITOR 環境変数などで指定できます。

Windows の場合のホームディレクトリ (USERPROFILE, HOME)

global スコープの設定は、ユーザのホームディレクトリの .gitconfig ファイルに設定値が保存されますが、Windows の場合のホームディレクトリは、デフォルトで USERPROFILE 環境変数で取得できるディレクトリ(通常は C:\Users\<ユーザー名>)が使用されます。

C:\> echo %USERPROFILE%
C:\Users\maku

例えば、上記の場合は C:\Users\maku が Git のホームディレクトリとして使用されるので、global スコープの設定は、C:\Users\maku\.gitconfig に保存されます。 ただし、HOME 環境変数が設定されている場合は、そちらのディレクトリがホームディレクトリとして使用されます。