Gitのconifgファイルを理解する(system, global, localの違い・場所・編集方法など)

Gitのconifgファイルを理解する(system, global, localの違い・場所・編集方法など)

 

本記事では、
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の設定項目と値の例

color.ui :        Gitの出力の色分け(通常はautoと設定)
core.editor : コミットメッセージなどの編集で用いるエディタ
user.name :  ユーザー名
user.email :   Eメールアドレス

 

 

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>を確認
localはリポジトリごとの設定なので、–localオプションはリポジトリ内でのみ有効。Gitで管理されていない場所(Gitリポジトリの外側)で–localを付けて実行するとエラーとなる。

# 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設定ファイルの種類の指定方法には、以下のようなルールが存在する。

変更する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に関する関連記事。参考程度にどうぞ。

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。