1. ホーム
  2. git

[解決済み] Gitの設定はどこから来ているのですか?

2023-03-01 10:52:22

質問

のリストが2つあることに気づきました。 core.autocrlf を実行すると git config -l

$ git config -l
core.symlinks=false
core.autocrlf=false
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=name
[email protected]
core.autocrlf=true

最後の3つ(user.nameから下)は、私の C:\users\username\.gitconfig ファイルにある唯一のものです。他のものはすべてどこから来ているのでしょうか? なぜ core.autocrlf は 2 回リストされているのですか?

これは MSysGit 1.8.3 で、Sourcetree もインストールされています (Windows 7)。Sourcetree では、"Allow Sourcetree to modify your global Git config files" のチェックを外しました。

どのように解決するのですか?

Gitは、設定ファイルの4つの場所をチェックします。

  1. あなたのマシンのシステム .gitconfig ファイルを作成します。
  2. あなたのユーザー .gitconfig にあるファイル ~/.gitconfig .
  3. にある 2 つ目のユーザ固有の設定ファイル。 $XDG_CONFIG_HOME/git/config または $HOME/.config/git/config .
  4. ローカルリポジトリの設定ファイル .git/config .

設定は次の順序でカスケードされ、各ファイルはその上のファイルで定義された設定を追加またはオーバーライドします。

  1. システム構成。
  2. ユーザー設定。
  3. リポジトリ固有の設定。

各ファイルが何を定義しているかは、以下のコマンドで確認することができます。

# System, applies to entire machine and all users
$ git config --system --list
$ git config --system --edit

# User defined
$ git config --global --list
$ git config --global --edit

リポジトリ固有のファイルが何を定義しているかは、ファイルを開くことで確認できます。 .git/config を開いてください。

Windows で MSysGit を使っている場合は、おそらくユーザー ~/.gitconfig というファイルがあるはずです。 %homepath% を指定した場合 echo %homepath% をWindowsのコマンドプロンプトから使用した場合。

から のドキュメントから git config :

で明示的に設定しない場合は --file で明示的に設定されていない場合、4つのファイルにおいて git config は設定オプションを検索します。

  • $(prefix)/etc/gitconfig

    システム全体の設定ファイルです。

  • $XDG_CONFIG_HOME/git/config

2つ目のユーザー固有の設定ファイルです。もし $XDG_CONFIG_HOME が が設定されていないか、空である場合。 $HOME/.config/git/config が使われます。このファイルで設定された このファイルで設定された単一値変数は にあるものはすべて ~/.gitconfig . このファイルを作成しないのはよい考えです。 このファイルのサポートはごく最近追加されたものだからです。 このファイルのサポートはごく最近追加されたものだからです。

  • ~/.gitconfig

ユーザー固有の設定ファイルです。グローバル設定ファイルとも呼ばれます。 ファイルとも呼ばれます。

  • $GIT_DIR/config

    リポジトリ固有の設定ファイルです。

これ以上のオプションが与えられない場合、すべての読み込みオプションは、利用可能なこれらのファイルのすべてを読み込みます。 読み込まれます。グローバルまたはシステム全体の 設定ファイルが利用できない場合、それらは無視されます。もし リポジトリ設定ファイルが利用できないか、読み込み可能でない場合。 git config はゼロ以外のエラーコードで終了します。しかし、どちらの場合にも もエラーメッセージは発行されません。

ファイルは上記の順序で読み込まれ、最後に見つかった値が先に読み込まれた値より優先されます。 が先に読み込まれた値より優先されます。複数の値が読み込まれた場合 の場合、すべてのファイルからキーのすべての値が使用されます。

すべての書き込みオプションは、デフォルトで、リポジトリ固有の 設定ファイルに書き込まれます。これは次のようなオプションにも影響することに注意してください。 --replace-all--unset . git config は一度に一つのファイルしか変更しません。 一度に一つのファイルしか変更しません。

これらのルールは、コマンドライン オプションまたは環境変数によって上書きできます。 環境変数で上書きできます。そのため --global--system オプションは は、使用するファイルをそれぞれグローバルファイルまたはシステムワイド ファイルに限定します。 また GIT_CONFIG 環境変数も同じような効果を持ちますが は任意のファイル名を指定することができます。