Help us understand the problem. What is going on with this article?

gitconfig の基本を理解する

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の構成

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした