Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
335
Help us understand the problem. What is going on with this article?
@shionit

gitconfig の基本を理解する

More than 1 year has passed since last update.

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

335
Help us understand the problem. What is going on with this article?
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.
Sign Up
If you already have a Qiita account Login
335
Help us understand the problem. What is going on with this article?