本記事では、
Gitのconfigファイル(system, global, local)について、違いや場所、編集方法など、体系的な理解をまとめる。
Gitの設定ファイルの種類(system, global, local)
Gitの設定ファイルは3種類ある。
それぞれの設定ファイルの違いや場所は以下のようである。
種類 | 対象範囲 | 場所の例 | 備考 |
system | システム全体(全ユーザーの全リポジトリ) | /etc/gitconfig | – |
global | 該当ユーザーの全リポジトリ | ~/.gitconfig | ホーム直下 |
local | 該当リポジトリ | repository/.git/config | リポジトリの.git直下 |
「system → global → local」に行くに連れて、設定の適用範囲が狭くなっていく。
設定ファイルが読み込まれる順番
3つのGitの設定ファイルは、
①system, ②global, ③localの順に読み込まれる。
また、
同じ設定内容が記載してあった場合、後に読み込まれたファイルの設定内容が適用される。なので例えば、systemとlocalで同じ項目が設定されている場合はlocalの値が有効になる。
固有の設定をしたいものほど、後に読み込まれる設定ファイルに記述すると良い。
git configコマンドによる設定の確認・変更
上記で説明した3種類のGit設定ファイルは全て、git configコマンドから編集(と確認)が可能だ。なので、それぞれのファイルの置き場所を気にする必要は特にない。
Gitの設定項目とは
Gitの設定項目を説明するにあたって、
まずは筆者の「.git/config」ファイル(localの設定ファイル)を以下に掲載する。
# .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/[アカウント]/xxxx.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[user]
name = [ユーザ名]
email = メールアドレス@gmail.com
設定項目は、[core]などのように、[]で囲う。
設定項目に対する値の設定は、「値 = 設定値」という書式で設定していく。
Gitの設定項目の一覧およびその詳細は以下のリンクから確認できる。
https://git-scm.com/docs/git-config.html#_variables
設定できる項目と値はたくさんあるが、例えば以下のような例がある(設定項目.値)。
Gitの設定項目の確認方法
Gitの設定項目は、git config <name> コマンドで確認できる。
- <name>には上述の設定項目(例えばuser.email)を入れる。
- コマンドを実行した場所で有効になっている値が表示される。
- 値が設定されていない場合は何も表示されない。
# ユーザのメールアドレスを確認する
$ git config user.email
example@example.com
local, system, global それぞれにおける設定項目を確認する
local, system, global それぞれにおける設定項目を確認するには、
git configコマンドにオプション「–設定ファイルの種類」を追加する。
$ git config --local <name> #localの設定ファイルの<name>を確認
$ git config --global <name> #globalの設定ファイルの<name>を確認
$ git config --system <name> #systemの設定ファイルの<name>を確認
# Gitリポジトリの外側で実行した場合
$ git config --local <name>
fatal: --local can only be used inside a git repository
Gitの設定項目の一覧をリスト表示する
コマンドを実行した場所で有効になっている設定項目をすべてをリスト表示したい場合、
git config -l コマンドを実行する。
# コマンドを実行した場所で有効になっている設定項目とその設定値すべてを表示
$ git config -l
local, system, globalのそれぞれの設定を個別に確認する場合はオプションを付ける。
$ git config --local -l
$ git config --global -l
$ git config --system -l
git config –list でも同じ結果になる(-lの長いバージョン)
Gitの設定項目の変更方法
Gitの設定項目を変更するには、以下のようにgit configコマンドを実行する。
#Gitの設定項目を変更
git config <name> <value>
<name>には変更したい設定項目(user.emailなど)を指定し、
<value>には新しく設定したい設定値を指定する。
変更するGit設定ファイルの種類の指定方法
変更するGit設定ファイルの種類の指定方法には、以下のようなルールが存在する。
- オプションなしで実行した場合、localの設定が変更される。
- globalやsystemオプションで実行した場合、指定した種類の設定ファイルが変更される。
$ git config <name> <value> # localの設定を変更
$ git config --global <name> <value> # globalの設定を変更
$ git config --system <name> <value> # systemの設定を変更
例えば、user.emailをどのリポジトリでも共通にしたい場合は
–globalオプションを付けて以下のように設定する。
$ git config --global user.email example@example.com
Gitで管理されていない場所(Gitリポジトリの外側)でオプションなしで実行するとエラーとなる。local(リポジトリごとの設定)を変更したい場合は該当のリポジトリ内に移動して実行する。
# Gitリポジトリの外側で実行した場合エラー
$ git config <name> <value>
fatal: not in a git directory
Gitの設定ファイルをエディタで直接編集
git config -e(またはgit config –edit)で、
Gitの設定ファイルをエディタで直接編集することも可能。
$ git config -e # ローカルの設定を変更
$ git config --global -e
$ git config --system -e
Gitの関連記事
以下はgitに関する関連記事。参考程度にどうぞ。
color.ui : Gitの出力の色分け(通常はautoと設定)
core.editor : コミットメッセージなどの編集で用いるエディタ
user.name : ユーザー名
user.email : Eメールアドレス