LoginSignup
505
442

More than 3 years have passed since last update.

gitconfig の基本を理解する

Last updated at Posted at 2016-09-20

git を使っているとよく遭遇する「autocrlf どう設定する?」問題について、詳細を忘れた頃にまた相談を受け、またまた色々と調べて理解が深まり折角なのでメモっておきます。今回は git config について、です。

ゴール

結局のところ、現在、有効になっている設定は何?を確認したい。また、それはどこで設定されている値が生きてるの?(どこを変更すれば変えられるの?)を理解したい。

現在の設定値は?

対象の設定Keyが明確な場合

特定の設定 key について、現在、有効になっている設定を確認したい場合は、下記のコマンドを入力すればいい。

$ git config [key]

ex.)

$ git config core.autocrlf
false

全ての設定を確認したい場合

設定されている全ての値を確認したい場合は、下記のコマンドを実行する。

$ git config --list

ただし、設定が Key=Value 形式で大量に出てくるので面食らう。しかも、同一のKeyが何回か繰り返し出てきたりして、どれが正しい設定なの?ってなる。

答えを言うと、一番最後に出てきた設定が、有効になっている。のだが、これについてもう少し解説しておく。

gitconfig の設定は3段階

git の config 情報の設定は、3段階に分かれている。システム全体 system と、ユーザ全体 global と、対象リポジトリのみ local ですな。

設定は、 system, global, local の順に読み込まれ、最後に読み込まれた設定で上書きされるため、よりスコープの狭い設定が有効になる。

それぞれの設定箇所の内容をリスト出力するには git config コマンドにオプションを追加すればいい。例えば global の場合は

$ git config --global --list

ということを踏まえて、前述のコマンドで大量に出力されていた内容をよく見てみると

$ git config --list
(git config --system --list の内容)
(git config --global --list の内容)
(git config --local --list の内容)

という感じになっていることが分かる。

実際の設定ファイルはどこに

それぞれの設定ファイルの場所は、以下の通り。

local

対象リポジトリ内の .git/config

global

ログインユーザのHOMEディレクトリ配下の .gitconfig

OS .gitconfig path
Linux/Mac ~/.gitconfig
Win [home]¥.gitconfig
(通常は C:¥Users¥[user]¥.gitconfig)

system

git インストールディレクトリの gitconfig ファイルだが、どんなアプリにバンドルされた git か?によって場所はまちまちの模様。

OS gitconfig path
Win C:¥development¥tools¥Git¥etc¥gitconfig
Win C:¥Users¥[myUser]¥AppData¥Local¥Atlassian¥SourceTree¥git_local¥mingw32¥etc¥gitconfig
Win C:¥Program Files (x86)¥Git¥etc¥gitconfig
Win C:¥Program Files¥Git¥mingw64¥etc¥gitconfig
Mac /usr/local/git/etc/gitconfig

実運用でよく使うのは

system はシステムデフォルトを表しているので、ここに手をいれることはあまりないと思います。また、local はリポジトリごとに設定ができるので、あるリポジトリだけ固有の設定をしたい場合は使うと思いますが、これもそんなにはないケースかと。最も利用するのは、おそらくユーザ設定である global だと思います。

設定コマンドと設定ファイルの対比

git の導入ガイドで最初に設定しなさいと、よく書かれている

$ git config --global user.name "My Name"
$ git config --global user.email myname@example.com

という記述ですが、これを読み解くと global 設定の user セクションに name というKeyで "My Name" という値を設定する。というコマンドですね。これにより ~/.gitconfig には、下記のように設定が書き込まれます。

[user]
    name = "My Name"
    email = myname@example.com

以上です。少しはgitconfigの理解の助けになればと思います。

(参考)Git book

Git - 最初のGitの構成

505
442
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
505
442