Git
English ▾ トピック ▾ 最新バージョン ▾ git-config は 2.47.0 で最後に更新されました

名前

git-config - リポジトリまたはグローバルオプションの取得と設定

概要

git config list [<file-option>] [<display-option>] [--includes]
git config get [<file-option>] [<display-option>] [--includes] [--all] [--regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>
git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--fixed-value] <name> <value>
git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] <name> <value>
git config rename-section [<file-option>] <old-name> <new-name>
git config remove-section [<file-option>] <name>
git config edit [<file-option>]
git config [<file-option>] --get-colorbool <name> [<stdout-is-tty>]

説明

このコマンドを使用して、オプションのクエリ/設定/置換/アンセットを行うことができます。名前は実際にはセクションとキーをドットで区切ったものであり、値はエスケープされます。

--append オプションを使用することで、オプションに複数の行を追加できます。複数の行にわたって発生する可能性のあるオプションを更新またはアンセットする場合、value-pattern--fixed-value オプションが指定されていない限り、拡張正規表現です)を指定する必要があります。パターンに一致する既存の値のみが更新またはアンセットされます。パターンに一致しない行を処理する場合は、先頭に感嘆符 (!) を1つ追加します(も参照してください)。ただし、これは--fixed-value オプションを使用していない場合にのみ機能することに注意してください。

--type=<type> オプションは、git config に、入力値と出力値が指定された <type> で正規化可能であることを保証するように指示します。--type=<type> が指定されていない場合、正規化は実行されません。呼び出し元は、--no-type を使用して既存の --type 指定子をアンセットできます。

読み込み時は、デフォルトでシステム、グローバル、リポジトリローカルの構成ファイルから値が読み込まれ、--system--global--local--worktree--file <filename> オプションを使用して、その場所からのみ読み込むようにコマンドに指示できます(ファイルを参照)。

書き込み時は、新しい値はデフォルトでリポジトリローカルの構成ファイルに書き込まれ、--system--global--worktree--file <filename> オプションを使用して、その場所に書き込むようにコマンドに指示できます(--local と言うことができますが、それはデフォルトです)。

このコマンドは、エラー発生時にゼロ以外のステータスで失敗します。いくつかの終了コードは次のとおりです。

  • セクションまたはキーが無効です (ret=1)、

  • セクションまたは名前が指定されていません (ret=2)、

  • 構成ファイルが無効です (ret=3)、

  • 構成ファイルに書き込めません (ret=4)、

  • 存在しないオプションをアンセットしようとしました (ret=5)、

  • 複数の行が一致するオプションをアンセット/設定しようとしました (ret=5)、または

  • 無効な正規表現を使用しようとしました (ret=6)。

成功すると、コマンドは終了コード 0 を返します。

使用可能なすべての構成変数のリストは、git help --config コマンドを使用して取得できます。

コマンド

list

構成ファイルに設定されているすべての変数とその値を一覧表示します。

get

指定されたキーの値を出力します。キーが構成ファイルに複数回存在する場合は、最後の値を出力します。--all が指定されている場合は、キーに関連付けられているすべての値を出力します。キーが存在しない場合は、エラーコード 1 を返します。

set

1つ以上の構成オプションの値を設定します。デフォルトでは、このコマンドは複数値の構成オプションの書き込みを拒否します。--all を渡すと、すべての複数値の構成オプションが新しい値で置き換えられ、--value= を渡すと、値が指定されたパターンに一致するすべての構成オプションが置き換えられます。

unset

1つ以上の構成オプションの値をアンセットします。デフォルトでは、このコマンドは複数値のキーのアンセットを拒否します。--all を渡すと、すべての複数値の構成オプションがアンセットされ、--value を渡すと、値が指定されたパターンに一致するすべての構成オプションがアンセットされます。

rename-section

指定されたセクションを新しい名前に変更します。

remove-section

構成ファイルから指定されたセクションを削除します。

edit

指定された構成ファイル(--system--global--local(デフォルト)、--worktree、または--file <config-file>)を編集するためにエディターを開きます。

オプション

--replace-all

デフォルトの動作は、最大1行を置き換えることです。これにより、キー(およびオプションでvalue-pattern)に一致するすべての行が置き換えられます。

--append

既存の値を変更せずに、オプションに新しい行を追加します。これは、set--value=^$ を指定するのと同じです。

--comment <message>

新しく作成された行または変更された行の最後にコメントを追加します。

If _<message>_ begins with one or more whitespaces followed
by "#", it is used as-is.  If it begins with "#", a space is
prepended before it is used.  Otherwise, a string " # " (a
space followed by a hash followed by a space) is prepended
to it.  And the resulting string is placed immediately after
the value defined for the variable.  The _<message>_ must
not contain linefeed characters (no multi-line comments are
permitted).
--all

get を使用して、複数値のキーのすべての値を返します。

--regexp

get を使用して、名前を正規表現として解釈します。正規表現の一致は現在、大文字と小文字を区別し、セクション名と変数名は小文字に変換された正規化されたキーに対して行われますが、サブセクション名は変換されません。

--url=<URL>

2つの部分からなる <name> を <section>.<key> として指定した場合、<URL> 部分が指定された URL と最もよく一致する <section>.<URL>.<key> の値が返されます(そのようなキーが存在しない場合、<section>.<key> の値がフォールバックとして使用されます)。<section> のみを name として指定した場合、セクション内のすべてのキーについてそうし、それらを一覧表示します。値が見つからない場合は、エラーコード 1 を返します。

--global

オプションの書き込みの場合:リポジトリの .git/config ではなく、グローバルな ~/.gitconfig ファイルに書き込みます。このファイルが存在し、~/.gitconfig ファイルが存在しない場合は、$XDG_CONFIG_HOME/git/config ファイルに書き込みます。

オプションの読み込みの場合:使用可能なすべてのファイルからではなく、グローバルな ~/.gitconfig$XDG_CONFIG_HOME/git/config のみをファイルから読み込みます。

ファイルも参照してください。

--system

オプションの書き込みの場合:リポジトリの .git/config ではなく、システム全体の $(prefix)/etc/gitconfig に書き込みます。

オプションの読み込みの場合:使用可能なすべてのファイルからではなく、システム全体の $(prefix)/etc/gitconfig のみをファイルから読み込みます。

ファイルも参照してください。

--local

オプションの書き込みの場合:リポジトリの .git/config ファイルに書き込みます。これはデフォルトの動作です。

オプションの読み込みの場合:使用可能なすべてのファイルからではなく、リポジトリの .git/config のみをファイルから読み込みます。

ファイルも参照してください。

--worktree

--local と似ていますが、extensions.worktreeConfig が有効になっている場合は、$GIT_DIR/config.worktree が読み取られるか、またはそれに書き込まれます。有効になっていない場合は、--local と同じです。メインの作業ツリーでは$GIT_DIR$GIT_COMMON_DIR と等しくなりますが、他の作業ツリーでは $GIT_DIR/worktrees/<id>/ の形式になります。git-worktree[1] で、extensions.worktreeConfig を有効にする方法を確認してください。

-f <config-file>
--file <config-file>

オプションの書き込みの場合:リポジトリの.git/configではなく、指定されたファイルに書き込みます。

オプションの読み込みの場合:利用可能なすべてのファイルではなく、指定されたファイルのみから読み込みます。

ファイルも参照してください。

--blob <blob>

--fileに似ていますが、ファイルの代わりに指定されたblobを使用します。例えば、マスターブランチの.gitmodulesファイルの値を読み取るには、master:.gitmodulesを使用できます。「リビジョンの指定」セクション(gitrevisions[7])を参照して、blob名の指定方法のより完全なリストを確認してください。

--fixed-value

value-pattern引数と一緒に使用する場合、value-patternを正規表現ではなく正確な文字列として扱います。これにより、一致する名前/値のペアは、値がvalue-patternと完全に等しいものだけに制限されます。

--type <type>

git configは、入力と出力が指定された型制約の下で有効であることを保証し、出力値を<type>の標準形式で正規化します。

有効な<type>には以下が含まれます。

  • bool:"true"または"false"のいずれかとして値を正規化します。

  • int:単純な10進数として値を正規化します。オプションのサフィックスkm、またはgを使用すると、入力時に値が1024、1048576、または1073741824倍されます。

  • bool-or-int:上記のように、boolまたはintのいずれかに従って正規化します。

  • path:先頭の~$HOMEに、~userを指定されたユーザーのホームディレクトリに展開することで正規化します。この指定子は値を設定する際には効果がありません(ただし、シェルで展開させるためにコマンドラインからgit config section.variable ~/を使用できます)。

  • expiry-date:固定または相対的な日付文字列をタイムスタンプに変換することで正規化します。この指定子は値を設定する際には効果がありません。

  • color:値を取得する場合、ANSIカラーエスケープシーケンスに変換することで正規化します。値を設定する場合、指定された値がANSIカラーとして正規化可能であることを確認するサニティチェックが実行されますが、値はそのまま書き込まれます。

--bool
--int
--bool-or-int
--path
--expiry-date

型指定子を選択するための履歴オプションです。代わりに--typeを使用することをお勧めします(上記を参照)。

--no-type

以前に設定された型指定子(以前に設定されていた場合)をアンセットします。このオプションは、git configが取得した変数を正規化しないように要求します。--no-typeは、--type=<type>または--<type>がない場合は効果がありません。

-z
--null

値やキーを出力するすべてのオプションについて、常にヌル文字(改行文字の代わりに)で値を終了します。キーと値の間の区切り文字として改行文字を使用します。これにより、改行を含む値などに混乱することなく、安全に出力の解析が可能になります。

--name-only

listまたはgetの場合、設定変数の名前のみを出力します。

--show-origin

クエリされたすべての設定オプションの出力に、オリジンの種類(ファイル、標準入力、blob、コマンドライン)と実際のオリジン(該当する場合は設定ファイルパス、参照、またはblob ID)を追加します。

--show-scope

クエリされたすべての設定オプションの出力に、その値のスコープ(ワークツリー、ローカル、グローバル、システム、コマンド)を追加するという点で、--show-originに似ています。

--get-colorbool <name> [<stdout-is-tty>]

<name>(例:color.diff)の色設定を検索し、「true」または「false」を出力します。<stdout-is-tty>は「true」または「false」のいずれかでなければならず、設定が「auto」の場合に考慮されます。<stdout-is-tty>が欠落している場合、コマンド自体の標準出力をチェックし、色が使用される場合はステータス0で終了し、それ以外の場合はステータス1で終了します。nameの色設定が未定義の場合、コマンドはcolor.uiをフォールバックとして使用します。

--[no-]includes

値を検索するときに、設定ファイル内のinclude.*ディレクティブを尊重します。特定のファイルが指定されている場合(例:--file--globalなどを使用する場合)はoffに、すべての設定ファイルを検索する場合はonにデフォルト設定されます。

--default <value>

getを使用していて、要求された変数が検出されない場合、<value>がその変数に割り当てられた値であるかのように動作します。

非推奨モード

以下のモードは、サブコマンドに置き換えられました。新しい構文に移行することをお勧めします。

git config <name>

git config get <name>に置き換えられました。

git config <name> <value> [<value-pattern>]

git config set [--value=<pattern>] <name> <value>に置き換えられました。

-l
--list

git config listに置き換えられました。

--get <name> [<value-pattern>]

git config get [--value=<pattern>] <name>に置き換えられました。

--get-all <name> [<value-pattern>]

git config get [--value=<pattern>] --all <name>に置き換えられました。

--get-regexp <name-regexp>

git config get --all --show-names --regexp <name-regexp>に置き換えられました。

--get-urlmatch <name> <URL>

git config get --all --show-names --url=<URL> <name>に置き換えられました。

--get-color <name> [<default>]

git config get --type=color [--default=<default>] <name>に置き換えられました。

--add <name> <value>

git config set --append <name> <value>に置き換えられました。

--unset <name> [<value-pattern>]

git config unset [--value=<pattern>] <name>に置き換えられました。

--unset-all <name> [<value-pattern>]

git config unset [--value=<pattern>] --all <name>に置き換えられました。

--rename-section <old-name> <new-name>

git config rename-section <old-name> <new-name>に置き換えられました。

--remove-section <name>

git config remove-section <name>に置き換えられました。

-e
--edit

git config editに置き換えられました。

設定

pager.configは、設定を一覧表示する場合、つまり複数の結果を返す可能性のあるlistまたはgetを使用する場合にのみ尊重されます。デフォルトでは、ページャが使用されます。

ファイル

デフォルトでは、git configは複数のファイルから設定オプションを読み取ります。

$(prefix)/etc/gitconfig

システム全体の構成ファイル。

$XDG_CONFIG_HOME/git/config
~/.gitconfig

ユーザー固有の設定ファイル。XDG_CONFIG_HOME環境変数が設定されていないか空の場合、$HOME/.config/が$XDG_CONFIG_HOMEとして使用されます。

これらは「グローバル」設定ファイルとも呼ばれます。両方のファイルが存在する場合は、上記に示した順序で両方のファイルが読み取られます。

$GIT_DIR/config

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

$GIT_DIR/config.worktree

これはオプションであり、$GIT_DIR/configにextensions.worktreeConfigが存在する場合にのみ検索されます。

-cオプションを使用して、任意のgitコマンドを実行するときに追加の設定パラメータを提供することもできます。git[1]で詳細を確認してください。

利用可能なこれらのすべてのファイルからオプションが読み取られます。グローバル設定ファイルまたはシステム全体の構成ファイルが存在しないか、読み取れない場合は無視されます。リポジトリ設定ファイルが存在しないか、読み取れない場合、git configはゼロ以外のエラーコードで終了します。ファイルが読み取れない場合はエラーメッセージが表示されますが、ファイルが存在しない場合は表示されません。

ファイルは上記に示した順序で読み取られ、最後に検出された値が先に読み取られた値よりも優先されます。複数の値が取得される場合、すべてのファイルからキーのすべての値が使用されます。

デフォルトでは、オプションはリポジトリ固有の設定ファイルのみに書き込まれます。これはsetunsetなどのオプションにも影響することに注意してください。**git configは一度に1つのファイルのみを変更します。**

--fileオプションでファイルのパスを指定するか、--system--global--local、または--worktreeで設定スコープを指定することで、読み取りまたは書き込みを行う設定ソースを制限できます。詳細については、上記OPTIONSを参照してください。

スコープ

各設定ソースは設定スコープ内にあります。スコープは以下のとおりです。

system

$(prefix)/etc/gitconfig

global

$XDG_CONFIG_HOME/git/config

~/.gitconfig

local

$GIT_DIR/config

worktree

$GIT_DIR/config.worktree

command

GIT_CONFIG_{COUNT,KEY,VALUE}環境変数(下記ENVIRONMENTを参照)

-cオプション

commandを除き、各スコープはコマンドラインオプションに対応します:--system--global--local--worktree

オプションを読み取るときは、スコープを指定すると、そのスコープ内のファイルからのみオプションが読み取られます。オプションを書き込むときは、スコープを指定すると、(リポジトリ固有の設定ファイルの代わりに)そのスコープ内のファイルに書き込まれます。完全な説明については、上記OPTIONSを参照してください。

ほとんどの設定オプションは、定義されているスコープに関係なく尊重されますが、一部のオプションは特定のスコープでのみ尊重されます。詳細は、それぞれのオプションのドキュメントを参照してください。

保護された設定

保護された設定とは、systemglobal、およびcommandスコープを指します。セキュリティ上の理由から、特定のオプションは、保護された設定で指定されている場合にのみ尊重され、それ以外の場合は無視されます。

Gitは、これらのスコープがユーザーまたは信頼できる管理者によって制御されているものとして扱います。これは、これらのスコープを制御する攻撃者は、Gitを使用せずに大きな被害を与える可能性があるため、ユーザーの環境がこれらのスコープを攻撃者から保護すると仮定しているためです。

環境

GIT_CONFIG_GLOBAL
GIT_CONFIG_SYSTEM

グローバルまたはシステムレベルの設定ではなく、指定されたファイルから設定を読み込みます。git[1] を参照して詳細を確認してください。

GIT_CONFIG_NOSYSTEM

システム全体の $(prefix)/etc/gitconfig ファイルからの設定の読み込みをスキップするかどうか。git[1] を参照して詳細を確認してください。

ファイルも参照してください。

GIT_CONFIG_COUNT
GIT_CONFIG_KEY_<n>
GIT_CONFIG_VALUE_<n>

GIT_CONFIG_COUNT が正の値に設定されている場合、その数までのすべての環境変数ペア GIT_CONFIG_KEY_<n> と GIT_CONFIG_VALUE_<n> がプロセスの実行時設定に追加されます。設定ペアは0から始まるインデックスです。キーまたは値が欠けている場合はエラーとして扱われます。空の GIT_CONFIG_COUNT は GIT_CONFIG_COUNT=0 と同じように扱われ、ペアは処理されません。これらの環境変数は設定ファイル内の値を上書きしますが、`git -c` を介して渡される明示的なオプションによって上書きされます。

これは、共通の設定を持つ複数の git コマンドを生成する必要があるが、設定ファイルに依存できない場合(スクリプトを作成する場合など)に役立ちます。

GIT_CONFIG

`git config` に`--file` オプションが指定されていない場合、`GIT_CONFIG` で指定されたファイルが`--file` を介して指定されたかのように使用されます。この変数は他の Git コマンドには影響せず、主に過去の互換性のためのものであり、`--file` オプションの代わりに使用することは一般的に推奨されません。

次のような .git/config があるとします。

#
# This is the config file, and
# a '#' or ';' character indicates
# a comment
#

; core variables
[core]
	; Don't trust file modes
	filemode = false

; Our diff algorithm
[diff]
	external = /usr/local/bin/diff-wrapper
	renames = true

; Proxy settings
[core]
	gitproxy=proxy-command for kernel.org
	gitproxy=default-proxy ; for all the rest

; HTTP
[http]
	sslVerify
[http "https://weak.example.com"]
	sslVerify = false
	cookieFile = /tmp/cookie.txt

filemode を true に設定するには、次のようにします。

% git config set core.filemode true

仮想的な proxy コマンドエントリには、適用する URL を区別するための接尾辞が実際にはあります。kernel.org のエントリを "ssh" に変更する方法は次のとおりです。

% git config set --value='for kernel.org$' core.gitproxy '"ssh" for kernel.org'

これにより、kernel.org のキー/値ペアのみが確実に置き換えられます。

renames のエントリを削除するには、次のようにします。

% git config unset diff.renames

マルチ変数(上記の core.gitproxy など)のエントリを削除する場合は、ちょうど1行の値に一致する正規表現を指定する必要があります。

指定されたキーの値をクエリするには、次のようにします。

% git config get core.filemode

または、マルチ変数をクエリするには

% git config get --value="for kernel.org$" core.gitproxy

マルチ変数のすべての値を知りたい場合は、次のようにします。

% git config get --all --show-names core.gitproxy

危険を冒しても構わない場合は、次のようにして**すべての** core.gitproxy を新しいものに置き換えることができます。

% git config set --all core.gitproxy ssh

ただし、デフォルトのプロキシ、つまり "for …​" 接尾辞のない行のみを置き換えたい場合は、次のような操作を行います。

% git config set --value='! for ' core.gitproxy ssh

感嘆符を含む値のみに実際に一致させるには、次のようにする必要があります。

% git config set --value='[!]' section.key value

既存のものに変更を加えずに新しいプロキシを追加するには、次のようにします。

% git config set --append core.gitproxy '"proxy-command" for example.com'

スクリプトで設定からカスタマイズされた色を使用する例

#!/bin/sh
WS=$(git config get --type=color --default="blue reverse" color.diff.whitespace)
RESET=$(git config get --type=color --default="reset" "")
echo "${WS}your whitespace color or blue reverse${RESET}"

https://weak.example.com のURLでは、http.sslVerify は false に設定され、それ以外のすべてのURLでは true に設定されます。

% git config get --type=bool --url=https://good.example.com http.sslverify
true
% git config get --type=bool --url=https://weak.example.com http.sslverify
false
% git config get --url=https://weak.example.com http
http.cookieFile /tmp/cookie.txt
http.sslverify false

設定ファイル

Git 設定ファイルには、Git コマンドの動作に影響を与える多くの変数が含まれています。各リポジトリ内のファイル `.git/config` とオプションで `config.worktree` (git-worktree[1]の「設定ファイル」セクションを参照)は、そのリポジトリの設定を保存するために使用され、`$HOME/.gitconfig` は `.git/config` ファイルのフォールバック値としてユーザーごとの設定を保存するために使用されます。ファイル `/etc/gitconfig` は、システム全体のデフォルト設定を保存するために使用できます。

設定変数は、Git の plumbing コマンドと porcelain コマンドの両方で使用されます。変数はセクションに分割され、変数自体の完全修飾変数名は最後のドット区切りのセグメントであり、セクション名は最後のドットの手前のすべての部分です。変数名は大文字と小文字が区別されず、英数字と `-` のみが使用でき、英文字で始まる必要があります。一部の変数は複数回出現する可能性があります。その場合、変数は多値であると言います。

構文

構文は非常に柔軟で許容的です。このコンテキストでの空白文字とは、スペース文字(SP)と水平タブ(HT)であり、ほとんど無視されます。`#` と `;` の文字は、行末までのコメントを開始します。空行は無視されます。

ファイルはセクションと変数で構成されています。セクションは、角かっこ内のセクション名で始まり、次のセクションが始まるまで続きます。セクション名は、大文字と小文字が区別されません。セクション名には、英数字、`-`、`.` のみが使用できます。各変数はセクションに属している必要があります。つまり、変数の最初の設定の前にセクションヘッダーが存在する必要があります。

セクションはさらにサブセクションに分割できます。サブセクションを開始するには、その名前を二重引用符で囲み、セクション名からスペースで区切ってセクションヘッダーに入れます。以下の例を参照してください。

	[section "subsection"]

サブセクション名は、大文字と小文字が区別され、改行とヌルバイト以外の任意の文字を含めることができます。二重引用符 `"` とバックスラッシュは、それぞれ `\"` と `\\` としてエスケープすることで含めることができます。他の文字の前にあるバックスラッシュは、読み取り時に削除されます。たとえば、`\t` は `t` として読み取られ、`\0` は `0` として読み取られます。セクションヘッダーは複数行にまたがることはできません。変数は、セクションまたは特定のサブセクションに直接属することができます。`[section "subsection"]` がある場合、`[section]` を持つことができますが、必ずしも必要ありません。

非推奨の `[section.subsection]` 構文もあります。この構文では、サブセクション名は小文字に変換され、大文字と小文字が区別されて比較されます。これらのサブセクション名は、セクション名と同じ制限に従います。

その他すべての行(セクションヘッダーの後にある行の残りの部分)は、`name = value` の形式(または変数がブール値の "true" であることを示す略記の `name`)で変数を設定するものとして認識されます。変数名は、大文字と小文字が区別されず、英数字と `-` のみが使用でき、英文字で始まる必要があります。

`name`、`=`、`value` の周囲の空白文字は破棄されます。`value` 内の内部空白文字は、そのまま保持されます。`#` または `;` で始まり、行末まで続くコメントは破棄されます。値を定義する行は、バックスラッシュ(`\`)で終わらせることで次の行に続けることができます。バックスラッシュと行末文字は破棄されます。

`value` に先頭または末尾の空白文字を含める必要がある場合は、二重引用符(`"`)で囲む必要があります。二重引用符の内側では、二重引用符(`"`)とバックスラッシュ(`\`)の文字をエスケープする必要があります。`"` には `\"` を、`\` には `\\` を使用します。

次のエスケープシーケンス(`\"` と `\\` を除く)が認識されます。改行文字(NL)には `\n`、水平タブ(HT、TAB)には `\t`、バックスペース(BS)には `\b` です。その他の文字のエスケープシーケンス(8進エスケープシーケンスを含む)は無効です。

インクルード

`include` セクションと `includeIf` セクションを使用すると、別のソースから設定ディレクティブを含めることができます。これらのセクションは、`includeIf` セクションが条件が true に評価されない場合に無視される可能性がある点を除いて、互いに同じように動作します。以下の「条件付きインクルード」を参照してください。

含めるファイルのパス名を `include.path` (または `includeIf.*.path`)変数に設定することで、別の設定ファイルを含めることができます。変数はパス名を値として受け取り、チルダ展開の対象となります。これらの変数は複数回指定できます。

含められたファイルの内容は、インクルードディレクティブの位置で見つかったかのように、すぐに挿入されます。変数の値が相対パスである場合、パスはインクルードディレクティブが見つかった設定ファイルに対する相対パスと見なされます。例については以下を参照してください。

条件付きインクルード

`includeIf.<condition>.path` 変数を、含めるファイルの名前に設定することで、別の設定ファイルを条件付きで含めることができます。

条件は、キーワードで始まり、コロンと、その形式と意味がキーワードによって異なるデータが続きます。サポートされているキーワードは次のとおりです。

gitdir

キーワード `gitdir:` の後に続くデータは、glob パターンとして使用されます。`.git` ディレクトリの場所がパターンに一致する場合、インクルード条件が満たされます。

`.git` の場所は自動検出されるか、`$GIT_DIR` 環境変数から取得されます。リポジトリが `.git` ファイルを介して自動検出される場合(例:サブモジュールまたはリンクされたワークツリーから)、`.git` の場所は、`.git` ファイルのある場所ではなく、`.git` ディレクトリのある最終的な場所になります。

パターンには標準的なグロビングワイルドカードと、複数のパスコンポーネントに一致できる追加の 2 つのワイルドカード `**/` と `/**` を含めることができます。詳細については、gitignore[5] を参照してください。便宜上

  • パターンが `~/` で始まる場合、`~` は環境変数 `HOME` の内容に置き換えられます。

  • パターンが `./` で始まる場合、現在の設定ファイルを含むディレクトリに置き換えられます。

  • パターンが `~/`、`./`、`/` のいずれでも始まらない場合、`**/` が自動的に前に追加されます。たとえば、パターン `foo/bar` は `**/foo/bar` になり、`/any/path/to/foo/bar` と一致します。

  • パターンが `/` で終わる場合、`**` が自動的に追加されます。たとえば、パターン `foo/` は `foo/**` になります。つまり、"foo" とその内部のすべてに再帰的に一致します。

gitdir/i

これは `gitdir` と同じですが、大文字と小文字が区別されない一致が行われます(例:大文字と小文字が区別されないファイルシステム)。

onbranch

キーワードonbranch:に続くデータは、標準的なglobワイルドカードと、複数のパスコンポーネントにマッチできる追加のワイルドカード**//**を持つパターンとして解釈されます。現在チェックアウトされているブランチの名前が、このパターンに一致するワークツリーにいる場合、include条件が満たされます。

パターンが/で終わる場合、**が自動的に追加されます。例えば、パターンfoo/foo/**になります。つまり、foo/で始まるすべてのブランチにマッチします。これは、ブランチが階層的に整理されており、その階層内のすべてのブランチに設定を適用したい場合に便利です。

hasconfig:remote.*.url:

このキーワードに続くデータは、標準的なglobワイルドカードと、複数のコンポーネントにマッチできる追加のワイルドカード**//**を持つパターンとして解釈されます。このキーワードが初めて検出された際に、残りの設定ファイルがリモートURLについてスキャンされます(値の適用は行われません)。このパターンに一致するリモートURLが少なくとも1つ存在する場合、include条件が満たされます。

このオプションによって(直接的または間接的に)インクルードされたファイルには、リモートURLを含めることは許可されません。

他のincludeIf条件とは異なり、この条件の解決は、条件の読み取り時点ではまだ不明な情報に依存することに注意してください。典型的なユースケースとしては、このオプションがシステムレベルまたはグローバルレベルの設定として存在し、リモートURLがローカルレベルの設定にある場合です。そのため、この条件を解決する際に先読みする必要があります。潜在的にインクルードされるファイルが、それらのファイルが潜在的にインクルードされるかどうかを左右するという循環問題を回避するために、Gitはこれらのファイルがこれらの条件の解決に影響することを禁止することで(したがって、リモートURLの宣言を禁止することで)この循環を断ち切ります。

このキーワードの命名に関しては、より多くの変数ベースのinclude条件をサポートする命名スキームとの将来的な互換性のためですが、現在Gitは上記のキーワードのみをサポートしています。

gitdirgitdir/iによるマッチングに関する追加の注意事項

  • $GIT_DIR内のシンボリックリンクは、マッチングの前に解決されません。

  • $GIT_DIRの外側では、シンボリックリンクと実パスの両方のバージョンのパスがマッチされます。例えば、~/gitが/mnt/storage/gitへのシンボリックリンクである場合、gitdir:~/gitgitdir:/mnt/storage/gitの両方がマッチします。

    これは、実パスのバージョンのみがマッチしたこの機能のv2.13.0での最初のリリース時には当てはまりませんでした。この機能の最初のリリースと互換性を持たせたい設定では、実パスのバージョンのみを指定するか、両方のバージョンを指定する必要があります。

  • "../"は特別なものではなく、文字通りマッチすることに注意してください。これは、おそらくあなたが望んでいることではありません。

# Core variables
[core]
	; Don't trust file modes
	filemode = false

# Our diff algorithm
[diff]
	external = /usr/local/bin/diff-wrapper
	renames = true

[branch "devel"]
	remote = origin
	merge = refs/heads/devel

# Proxy settings
[core]
	gitProxy="ssh" for "kernel.org"
	gitProxy=default-proxy ; for the rest

[include]
	path = /path/to/foo.inc ; include by absolute path
	path = foo.inc ; find "foo.inc" relative to the current file
	path = ~/foo.inc ; find "foo.inc" in your `$HOME` directory

; include if $GIT_DIR is /path/to/foo/.git
[includeIf "gitdir:/path/to/foo/.git"]
	path = /path/to/foo.inc

; include for all repositories inside /path/to/group
[includeIf "gitdir:/path/to/group/"]
	path = /path/to/foo.inc

; include for all repositories inside $HOME/to/group
[includeIf "gitdir:~/to/group/"]
	path = /path/to/foo.inc

; relative paths are always relative to the including
; file (if the condition is true); their location is not
; affected by the condition
[includeIf "gitdir:/path/to/group/"]
	path = foo.inc

; include only if we are in a worktree where foo-branch is
; currently checked out
[includeIf "onbranch:foo-branch"]
	path = foo.inc

; include only if a remote with the given URL exists (note
; that such a URL may be provided later in a file or in a
; file read after this file is read, as seen in this example)
[includeIf "hasconfig:remote.*.url:https://example.com/**"]
	path = foo.inc
[remote "origin"]
	url = https://example.com/git

多くの変数の値は単純な文字列として扱われますが、特定の型の値を取る変数があり、それらの記述方法に関するルールがあります。

ブール値

変数がブール値を取る場合、truefalseには多くの同義語が許容されます。これらはすべて大文字と小文字を区別しません。

true

ブール値trueのリテラルは、yesontrue1です。また、= なしで定義された変数はtrueとして扱われます。

false

ブール値falseのリテラルは、noofffalse0、空文字列です。

--type=bool型指定子を使用して値を標準形式に変換する場合、git configは出力が"true"または"false"(小文字で記述)になるようにします。

整数

様々なサイズを指定する多くの変数の値には、kM…などを接尾辞として付けることができます。これは、「数値を1024倍する」、「1024x1024倍する」などを意味します。

色を取る変数の値は、色のリスト(最大2つ、1つは前景用、もう1つは背景用)と属性(いくつでも可)で、スペースで区切られています。

許容される基本色は、normalblackredgreenyellowbluemagentacyanwhitedefaultです。最初に指定された色は前景、2番目は背景です。normaldefaultを除くすべての基本色には、brightredのように色にbrightを接頭辞として付けることで指定できる明るいバリアントがあります。

normalは色を変更しません。空文字列と同じですが、背景色のみを指定する場合(例えば、「normal red」)前景の色として使用できます。

defaultは、色をターミナルのデフォルトに明示的にリセットします(例えば、クリアされた背景を指定する場合)。ターミナルによって異なりますが、通常は「white black」に設定することとは異なります。

色は0から255までの数値で指定することもできます。これらはANSI 256色モードを使用します(ただし、すべてのターミナルがこれをサポートするとは限りません)。ターミナルがサポートしている場合、#ff0ab3のような24ビットRGB値、または#f1bのような12ビットRGB値(24ビット色#ff11bbに相当)を16進数で指定することもできます。

許容される属性は、bolddimulblinkreverseitalicstrike(取り消し線付きまたは「取り消し線」の文字用)です。属性の位置(前、後、または間)は関係ありません。特定の属性は、noまたはno-を接頭辞として付けることで無効にすることができます(例:noreverseno-ulなど)。

擬似属性resetは、指定された色の適用前にすべての色と属性をリセットします。例えば、reset greenは、アクティブな属性なしで緑色の前景とデフォルトの背景になります。

空の文字列の色は、まったく色の効果を生み出しません。これは、色全体を無効にすることなく、特定の要素の色付けを避けるために使用できます。

Gitで事前に定義されている色のスロットでは、属性は色付き出力の各項目の先頭でリセットされることを意図しています。そのため、color.decorate.branchblackに設定すると、そのブランチ名は単純なblackで描画されます。これは、同じ出力行の前のもの(例えば、log --decorate出力におけるブランチ名のリストの前にある開き括弧)がboldまたはその他の属性で描画されるように設定されている場合でも同様です。ただし、カスタムログ形式では、より複雑で階層化された色付けを行うことがあり、否定形が役立つ場合があります。

パス名

パス名値を取る変数には、"~/"または"~user/"で始まる文字列を指定でき、通常のチルダ展開がそのような文字列に適用されます。"~/"は$HOMEの値に展開され、"~user/"は指定されたユーザーのホームディレクトリに展開されます。

パスが%(prefix)/で始まる場合、残りの部分はGitの「ランタイムプリフィックス」を基準とした相対パスとして解釈されます。つまり、Git自体がインストールされた場所を基準とした相対パスです。例えば、%(prefix)/bin/は、Git実行ファイル自体が存在するディレクトリを参照します。Gitがランタイムプリフィックスサポートなしでコンパイルされた場合、コンパイル時に組み込まれたプリフィックスが代わりに置換されます。文字通りのパスで展開されないものを指定する必要があるという稀なケースでは、./を接頭辞として付ける必要があります。例えば、./%(prefix)/binのようにします。

変数

このリストは網羅的ではなく、必ずしも完全ではないことに注意してください。コマンド固有の変数については、該当するマニュアルページでより詳細な説明を見つけることができます。

その他のGit関連ツールは、独自の変数を使用する場合があります。独自のツールで使用するために新しい変数を発明する際には、Git自体や他の一般的なツールで使用されている変数と名前が重複しないようにし、ドキュメントでそれらを説明してください。

add.ignoreErrors
add.ignore-errors(非推奨)

インデックス付けエラーのために一部のファイルを追加できない場合でも、git addがファイルの追加を続行するように指示します。git-add[1]--ignore-errorsオプションと同等です。add.ignore-errorsは、設定変数の通常の命名規則に従っていないため、非推奨です。

advice.*

これらの変数は、新しいユーザーを支援するために設計された様々なオプションのヘルプメッセージを制御します。設定されていない場合、Gitはメッセージとその抑制方法に関する指示と共にメッセージを表示します。対応する変数をfalseに設定することで、問題を理解し、特定のヘルプメッセージを必要としなくなったことをGitに伝えることができます。

これらは人間のユーザーを支援することを目的としているため、これらのメッセージは標準エラー出力に出力されます。Gitをサブプロセスとして実行するツールがこれらを邪魔だと判断した場合は、環境変数GIT_ADVICE=0を設定して、すべてのアドバイスメッセージを抑制することができます。

addEmbeddedRepo

ユーザーが誤って別のGitリポジトリの中にGitリポジトリを追加した場合に表示されます。

addEmptyPathspec

ユーザーがパススペックパラメーターを指定せずにgit addを実行した場合に表示されます。

addIgnoredFile

ユーザーが無視されたファイルをインデックスに追加しようとすると表示されます。

amWorkDir

git-am[1]がパッチファイルの適用に失敗した場合、ユーザーにファイルの場所を伝えるために表示されます。

ambiguousFetchRefspec

複数のリモートのリモート取得参照指定子が同じリモート追跡ブランチ名前空間にマップされ、ブランチ追跡の設定が失敗した場合に表示されます。

checkoutAmbiguousRemoteBranchName

git-checkout[1]git-switch[1]の引数が、あいまいなリモート追跡ブランチを複数リモートで解決し、そうでなければ明確な引数によってリモート追跡ブランチがチェックアウトされる状況で表示されます。このアドバイスが表示される状況で特定のリモートをデフォルトで使用する方法については、checkout.defaultRemote設定変数を参照してください。

commitBeforeMerge

ローカルの変更を上書きするのを避けるためにgit-merge[1]がマージを拒否した場合に表示されます。

detachedHead

ユーザーがgit-switch[1]またはgit-checkout[1]を使用してデタッチされたHEAD状態に移動した場合、後でローカルブランチを作成する方法をユーザーに伝えるために表示されます。

diverging

高速転送が不可能な場合に表示されます。

fetchShowForcedUpdates

git-fetch[1]が参照の更新後に強制更新の計算に長い時間がかかった場合、またはチェックが無効になっていることを警告するために表示されます。

forceDeleteBranch

ユーザーが強制オプションを設定せずに、完全にマージされていないブランチを削除しようとすると表示されます。

ignoredHook

フックが実行可能として設定されていないため、フックが無視された場合に表示されます。

implicitIdentity

システムのユーザー名とドメイン名からユーザーの情報が推測された場合に表示され、ユーザーにアイデンティティ設定方法を指示します。

mergeConflict

様々なコマンドが競合によって停止した場合に表示されます。

nestedTag

ユーザーがタグオブジェクトを再帰的にタグ付けしようとすると表示されます。

pushAlreadyExists

git-push[1]が高速フォワードできない更新(例:タグ)を拒否した場合に表示されます。

pushFetchFirst

git-push[1]が、私たちが持っていないオブジェクトを指すリモート参照を上書きしようとする更新を拒否した場合に表示されます。

pushNeedsForce

git-push[1]が、コミットではないオブジェクトを指すリモート参照を上書きしようとする更新、またはリモート参照をコミットではないオブジェクトを指すようにしようとする更新を拒否した場合に表示されます。

pushNonFFCurrent

git-push[1]が、現在のブランチへの非高速フォワード更新が原因で失敗した場合に表示されます。

pushNonFFMatching

ユーザーがgit-push[1]を実行し、「一致する参照」を明示的にプッシュした場合(つまり、:を使用するか、現在のブランチではないrefspecを指定した場合)、非高速フォワードエラーが発生した場合に表示されます。

pushRefNeedsUpdate

git-push[1]が、リモート追跡参照にローカルにない更新がある場合に、ブランチの強制更新を拒否した場合に表示されます。

pushUnqualifiedRefname

git-push[1]が、ソースと宛先の参照に基づいてソースが属するリモート参照名前空間の推測をあきらめたが、ソースオブジェクトの種類に基づいてユーザーにrefs/heads/*またはrefs/tags/*へのプッシュを提案できる場合に表示されます。

pushUpdateRejected

pushNonFFCurrentpushNonFFMatchingpushAlreadyExistspushFetchFirstpushNeedsForce、およびpushRefNeedsUpdateを同時に無効にする場合は、この変数をfalseに設定します。

rebaseTodoError

rebase ToDoリストの編集後にエラーが発生した場合に表示されます。

refSyntax

ユーザーが無効な参照名を指定した場合に表示され、参照構文のドキュメントについてユーザーに指示します。

resetNoRefresh

git-reset[1]がリセット後のインデックスの更新に2秒以上かかった場合に表示され、ユーザーに--no-refreshオプションを使用できることを伝えます。

resolveConflict

様々なコマンドで、競合によって操作が実行できない場合に表示されます。

rmHints

git-rm[1]の出力でエラーが発生した場合に表示され、現在の状態からの処理方法を指示します。

sequencerInUse

シーケンサーコマンドが既に実行中の場合に表示されます。

skippedCherryPicks

git-rebase[1]が、既に上流ブランチにチェリーピックされているコミットをスキップした場合に表示されます。

sparseIndexExpanded

スパースインデックスがフルインデックスに展開された場合に表示されます。これは、スパースチェックアウトの外側に予期しないファイルセットが存在することが原因である可能性があります。

statusAheadBehind

git-status[1]が、ローカル参照とリモート追跡参照を比較した先頭/後方のカウントを計算し、その計算が予想以上に時間がかかった場合に表示されます。status.aheadBehindがfalseの場合、または--no-ahead-behindオプションが指定されている場合は表示されません。

statusHints

git-status[1]の出力、git-commit[1]でコミットメッセージを作成する場合に表示されるテンプレート、およびブランチを切り替える際のgit-switch[1]またはgit-checkout[1]によって表示されるヘルプメッセージで、現在の状態からの処理方法を指示します。

statusUoption

git-status[1]が追跡されていないファイルの列挙に2秒以上かかった場合に表示され、ユーザーに-uオプションを使用できることを伝えます。

submoduleAlternateErrorStrategyDie

submodule.alternateErrorStrategyオプションが"die"に設定されているために致命的なエラーが発生した場合に表示されます。

submoduleMergeConflict

複雑なサブモジュールのマージ競合が発生した場合に表示されるアドバイスです。

submodulesNotUpdated

git submodule update --initが実行されていないためにサブモジュールコマンドが失敗した場合に表示されます。

suggestDetachingHead

git-switch[1]が、明示的な--detachオプションなしでHEADをデタッチすることを拒否した場合に表示されます。

updateSparsePath

git-add[1]またはgit-rm[1]が、現在のスパースチェックアウト外のインデックスエントリの更新を要求された場合に表示されます。

waitingForEditor

Gitがエディタの入力を待っている場合に表示されます。例えば、エディタがターミナル内で起動されていない場合などに関連します。

worktreeAddOrphan

ユーザーが無効な参照からワークツリーを作成しようとすると表示され、代わりに新しい未作成ブランチを作成する方法をユーザーに指示します。

alias.*

git[1]コマンドラッパーのコマンドエイリアスです。例:alias.last = cat-file commit HEADを定義した後、git lastの呼び出しはgit cat-file commit HEADと同等になります。スクリプトの使用における混乱や問題を避けるため、既存のGitコマンドを隠すエイリアスは無視されます。引数はスペースで区切られ、通常のシェルの引用とエスケープがサポートされます。引用符のペアまたはバックスラッシュを使用して引用できます。

エイリアスの最初の単語は、必ずしもコマンドである必要はありません。それはgitの呼び出しに渡されるコマンドラインオプションにすることができます。特に、-cと共にワンタイム設定を渡す場合、または-pを使用してページングを強制する場合に便利です。例えば、loud-rebase = -c commit.verbose=true rebaseを定義すると、git loud-rebaseを実行するとgit -c commit.verbose=true rebaseと同等になります。また、ps = -p statusは便利なエイリアスです。なぜなら、git psは元のコマンドではページングされないgit statusの出力をページングするからです。

エイリアスの展開が感嘆符で始まる場合、シェルコマンドとして扱われます。例えば、alias.new = !gitk --all --not ORIG_HEADを定義すると、git newの呼び出しはgitk --all --not ORIG_HEADシェルコマンドを実行するのと同じになります。

  • シェルコマンドはリポジトリのトップレベルディレクトリから実行されます。これは必ずしも現在のディレクトリではありません。

  • GIT_PREFIXは、元の現在のディレクトリからgit rev-parse --show-prefixを実行して返された値として設定されます。git-rev-parse[1]を参照してください。

  • シェルコマンドエイリアスは、常にGitコマンドラインに提供された追加の引数を位置引数として受け取ります。

    • シェルのエイリアスが複数のコマンドを持つ「1行」スクリプト(例:パイプライン内)、複数の引数を参照する、または末尾に追加された位置引数を処理できない場合などは注意が必要です。例:alias.cmd = "!echo $1 | grep $2"git cmd 1 2として呼び出すと、echo $1 | grep $2 1 2として実行されますが、これは意図したものではありません。

    • これに対処する便利な方法は、コマンドラインから任意の引数で呼び出されるインライン関数にスクリプト操作を記述することです。例:alias.cmd = "!c() { echo $1 | grep $2 ; }; c"は、前の例を正しく実行します。

    • GIT_TRACE=1を設定すると、エイリアスに対して実行されているコマンドのデバッグに役立ちます。

am.keepcr

trueの場合、git-amはmbox形式のパッチに対してパラメータ--keep-cr付きでgit-mailsplitを呼び出します。この場合、git-mailsplitは\r\nで終わる行から\rを削除しません。コマンドラインから--no-keep-crを指定することで上書きできます。git-am[1]git-mailsplit[1]を参照してください。

am.threeWay

デフォルトでは、git amはパッチがクリーンに適用されない場合に失敗します。trueに設定すると、この設定により、パッチが適用するはずのBLOBのIDを記録し、それらのBLOBがローカルに存在する場合、git amは3方向マージにフォールバックします(コマンドラインから--3wayオプションを指定するのと同じです)。デフォルトはfalseです。git-am[1]を参照してください。

apply.ignoreWhitespace

changeに設定すると、git apply--ignore-space-changeオプションと同じように、空白の変更を無視します。no、none、never、falseのいずれかに設定すると、git applyはすべての空白の違いを尊重します。git-apply[1]を参照してください。

apply.whitespace

--whitespaceオプションと同じように、git applyが空白をどのように処理するかを指定します。git-apply[1]を参照してください。

attr.tree

作業ツリー内の.gitattributesファイルではなく、属性を読み取るためのリポジトリ内のツリーへの参照です。値が有効なツリーオブジェクトに解決されない場合は、代わりに空のツリーが使用されます。GIT_ATTR_SOURCE環境変数または--attr-sourceコマンドラインオプションが使用されている場合、この設定変数は効果がありません。

注記
bitmapPseudoMerge.*内の設定オプションは実験的なものであり、将来変更される可能性、または完全に削除される可能性があります。擬似マージビットマップ機能の詳細については、gitpacking[7]の「擬似マージビットマップ」セクションを参照してください。
bitmapPseudoMerge.<name>.pattern

参照名に一致させるために使用される正規表現です。このパターンに一致する参照(およびbitmapPseudoMerge.<name>.sampleRatebitmapPseudoMerge.<name>.thresholdのような以下の基準を満たす参照)が指すコミットは、擬似マージビットマップへの包含候補として考慮されます。

コミットは、特定のコミットを指す参照がパターンに一致するかどうかを基に、擬似マージグループにグループ化されます。これは拡張正規表現です。

擬似マージグループ内では、コミットはパターン内のキャプチャグループに基づいてさらにサブグループにグループ化される場合があります。これらのサブグループ化は、正規表現のキャプチャグループを、間にハイフン(-)を挿入して連結することによって形成されます。

たとえば、パターンがrefs/tags/の場合、すべてのタグ(以下の基準を満たす場合)は同じ擬似マージグループの候補として考慮されます。しかし、パターンがrefs/remotes/([0-9])+/tags/の場合、異なるリモートからのタグは、リモート番号に基づいて個別の擬似マージグループにグループ化されます。

bitmapPseudoMerge.<name>.decay

連続する擬似マージビットマップグループのサイズが減少する速度を決定します。0以上の値でなければなりません。このパラメータは、関数f(n) = C * n^-kにおけるkと考えることができます。ここで、f(n)はn番目のグループのサイズです。

減衰率を0に設定すると、すべてのグループのサイズが同じになります。減衰率を1に設定すると、n番目のグループのサイズは最初のグループの1/nになります。減衰率の値が大きいほど、連続するグループの縮小率が高くなります。デフォルトは1です。

すべてのグループのサイズが同じ場合、新しいコミットを含むグループは、古いコミットを指す参照よりも新しいコミットを指す参照の方が更新される可能性が高いため、古いグループよりも使用頻度が低くなる可能性があります。

bitmapPseudoMerge.<name>.sampleRate

不安定な擬似マージビットマップに含めるために選択される、ビットマップ化されていないコミット(参照の先端の間)の割合を決定します。0から1(を含む)の間でなければなりません。デフォルトは1です。

bitmapPseudoMerge.<name>.threshold

不安定な擬似マージビットマップへの包含候補となる、ビットマップ化されていないコミット(上記のように参照の先端の間)の最小の経過時間を決定します。デフォルトは1.week.agoです。

bitmapPseudoMerge.<name>.maxMerges

コミットを分散させることができる擬似マージコミットの最大数を決定します。

パターンにキャプチャグループが含まれていない擬似マージグループの場合、この設定は正規表現に一致するすべてのコミットに適用されます。1つ以上のキャプチャグループを持つパターンでは、この設定は各個別キャプチャグループに適用されます。

たとえば、キャプチャグループがrefs/tags/の場合、この設定はすべてのタグを最大maxMerges個の擬似マージコミットに分散します。しかし、キャプチャグループがrefs/remotes/([0-9]+)/tags/の場合、この設定は各リモートのタグセットに個別に適用されます。

0以上の値でなければなりません。デフォルト値は64です。

bitmapPseudoMerge.<name>.stableThreshold

安定した擬似マージビットマップの候補となるコミット(上記のように参照の先端の間、ただし安定したコミットはビットマップでカバーされていても候補とみなされます)の最小の経過時間を決定します。デフォルトは1.month.agoです。

この閾値を小さな値(例:1.week.ago)に設定すると、より多くの安定したグループが生成されます(1回限りの生成コストがかかります)が、それらのグループは時間の経過とともに陳腐化する可能性が高くなります。大きな値を使用すると、反対のペナルティが発生します(より少ない安定したグループで、有用性は高くなります)。

bitmapPseudoMerge.<name>.stableSize

安定した擬似マージビットマップのサイズ(コミット数)を決定します。デフォルトは512です。

blame.blankBoundary

git-blame[1]で境界コミットの空のコミットオブジェクト名を表示します。このオプションのデフォルトはfalseです。

blame.coloring

これは、blame出力に適用されるカラーリングスキームを決定します。repeatedLineshighlightRecent、またはデフォルトのnoneにすることができます。

blame.date

git-blame[1]で日付を出力するために使用される形式を指定します。設定されていない場合、iso形式が使用されます。サポートされている値については、git-log[1]--dateオプションの説明を参照してください。

blame.showEmail

git-blame[1]で、作成者名ではなく作成者メールアドレスを表示します。このオプションのデフォルトはfalseです。

blame.showRoot

git-blame[1]でルートコミットを境界として扱いません。このオプションのデフォルトはfalseです。

blame.ignoreRevsFile

git-blame[1]で、ファイルにリストされているリビジョン(行ごとに1つの省略されていないオブジェクト名)を無視します。空白と#で始まるコメントは無視されます。このオプションは複数回繰り返すことができます。空のファイル名は、無視されるリビジョンのリストをリセットします。このオプションは、コマンドラインオプション--ignore-revs-fileの前に処理されます。

blame.markUnblamableLines

git-blame[1]の出力で、無視されたリビジョンによって変更されたが、他のコミットに属性を割り当てることができなかった行に*を付けます。

blame.markIgnoredLines

git-blame[1]の出力で、無視されたリビジョンによって変更され、他のコミットに属性を割り当てられた行に?を付けます。

branch.autoSetupMerge

git branchgit switch、およびgit checkoutに対して、git-pull[1]が開始点のブランチから適切にマージするように新しいブランチを設定するように指示します。このオプションが設定されていなくても、--trackおよび--no-trackオプションを使用して、ブランチごとにこの動作を選択できます。有効な設定は次のとおりです。false - 自動設定は行われません。true - 開始点がリモート追跡ブランチの場合、自動設定が行われます。always - 開始点がローカルブランチまたはリモート追跡ブランチのいずれかの場合、自動設定が行われます。inherit - 開始点に追跡設定がある場合、それが新しいブランチにコピーされます。simple - 開始点がリモート追跡ブランチであり、新しいブランチの名前がリモートブランチと同じ場合のみ、自動設定が行われます。このオプションのデフォルトはtrueです。

branch.autoSetupRebase

別のブランチを追跡する新しいブランチがgit branchgit switch、またはgit checkoutで作成されると、この変数はGitに対して、マージではなくリベースでプルを設定するように指示します(「branch.<name>.rebase」を参照)。neverの場合、リベースは自動的にtrueに設定されません。localの場合、他のローカルブランチの追跡ブランチに対してリベースがtrueに設定されます。remoteの場合、リモート追跡ブランチの追跡ブランチに対してリベースがtrueに設定されます。alwaysの場合、すべての追跡ブランチに対してリベースがtrueに設定されます。ブランチの追跡設定方法の詳細については、「branch.autoSetupMerge」を参照してください。このオプションのデフォルトはneverです。

branch.sort

この変数は、git-branch[1]で表示されるブランチのソート順序を制御します。 "--sort=<value>"オプションが提供されていない場合、この変数の値がデフォルトとして使用されます。有効な値については、git-for-each-ref[1]のフィールド名を参照してください。

branch.<name>.remote

<name>ブランチにいる場合、git fetchgit pushに、フェッチ元またはプッシュ先のリモートを指示します。プッシュ先のリモートは、remote.pushDefault(すべてのブランチ)で上書きできます。現在のブランチに対するプッシュ先のリモートは、branch.<name>.pushRemoteでさらに上書きできます。リモートが設定されていない場合、またはブランチにいない状態でリポジトリに複数のリモートが定義されている場合、フェッチにはorigin、プッシュにはremote.pushDefaultがデフォルトになります。さらに、.(ピリオド)は現在のローカルリポジトリ(ドットリポジトリ)です。下記のbranch.<name>.mergeの最後の注記を参照してください。

branch.<name>.pushRemote

<name>ブランチにいる場合、プッシュに関してbranch.<name>.remoteを上書きします。また、<name>ブランチからのプッシュに関してremote.pushDefaultも上書きします。ある場所(例:アップストリーム)からプルし、別の場所(例:独自の公開リポジトリ)にプッシュする場合は、remote.pushDefaultを設定してすべてのブランチのプッシュ先のリモートを指定し、このオプションを使用して特定のブランチに対して上書きします。

branch.<name>.merge

branch.<name>.merge は、branch.<name>.remote と共に、指定されたブランチの上流ブランチを定義します。これは `git fetch` / `git pull` / `git rebase` にどのブランチをマージするかを指示し、`git push` にも影響を与える可能性があります (push.default を参照)。ブランチ <name>にいる場合、`git fetch` にFETCH_HEADでマージする対象としてマークするデフォルトのrefspecを指示します。この値はrefspecのリモート部分のように扱われ、"branch.<name>.remote"で指定されたリモートからフェッチされるrefと一致する必要があります。このマージ情報は、`git pull` (最初に`git fetch`を呼び出す)によって、マージするデフォルトブランチを検索するために使用されます。このオプションがない場合、`git pull` はフェッチされた最初のrefspecをマージします。オクトパスマージを行うには、複数の値を指定します。ローカルリポジトリ内の別のブランチから<name>にマージするように`git pull`を設定したい場合は、branch.<name>.mergeを目的のブランチにポイントし、branch.<name>.remoteに相対パス設定`.`(ピリオド)を使用できます。

branch.<name>.mergeOptions

ブランチ<name>へのマージのデフォルトオプションを設定します。構文とサポートされるオプションは、git-merge[1]のものと同じですが、現在、空白文字を含むオプション値はサポートされていません。

branch.<name>.rebase

trueの場合、`git pull`の実行時にデフォルトのリモートからデフォルトブランチをマージする代わりに、フェッチされたブランチの上にブランチ<name>をrebaseします。「pull.rebase」を参照して、ブランチに依存しない方法で行ってください。

`merges` (または単に`m`)の場合、`git rebase`に`--rebase-merges`オプションを渡して、ローカルのマージコミットをrebaseに含めます(詳細についてはgit-rebase[1]を参照)。

値が`interactive`(または単に`i`)の場合、rebaseはインタラクティブモードで実行されます。

**注記**:これは危険な操作になる可能性があります。影響を理解していない限り、使用しないでください(詳細についてはgit-rebase[1]を参照)。

branch.<name>.description

ブランチの説明。`git branch --edit-description`で編集できます。ブランチの説明は、format-patchのカバーレターまたはrequest-pullのサマリーに自動的に追加されます。

browser.<tool>.cmd

指定されたブラウザを呼び出すコマンドを指定します。指定されたコマンドは、引数として渡されたURLを使用してシェルで評価されます。(git-web--browse[1]を参照)。

browser.<tool>.path

HTMLヘルプを参照するために使用できる指定されたツールのパスを上書きします(git-help[1]の`-w`オプションを参照)。または、gitwebでの作業リポジトリ(git-instaweb[1]を参照)。

bundle.*

`bundle.*`キーは、`git clone --bundle-uri`オプションによって検出されたバンドルリストファイルに表示される場合があります。これらのキーは、リポジトリ設定ファイルに配置した場合、現在は効果がありませんが、将来的に変更される予定です。詳細については、バンドルURI設計ドキュメントを参照してください。

bundle.version

この整数値は、バンドルリストで使用されるバンドルリスト形式のバージョンを示します。現在、受け入れられる値は`1`のみです。

bundle.mode

この文字列値は`all`または`any`のいずれかである必要があります。この値は、バンドルされた情報の完全な理解をアンバンドルするために、すべての宣伝されているバンドルが必要かどうか(`all`)、またはリストされているバンドルURIのいずれか1つで十分かどうか(`any`)を示します。

bundle.heuristic

この文字列値のキーが存在する場合、バンドルリストは増分`git fetch`コマンドで適切に動作するように設計されています。このヒューリスティックは、クライアントがダウンロードする必要があるバンドルのサブセットを決定するのに役立つ、各バンドルで使用できる追加のキーがあることを示します。現在理解されている値は`creationToken`のみです。

bundle.<id>.*

`bundle.<id>.*`キーは、識別目的で`<id>`の下にグループ化された、バンドルリスト内の単一アイテムを記述するために使用されます。

bundle.<id>.uri

この文字列値は、Gitがこの`<id>`の内容にアクセスできるURIを定義します。このURIは、バンドルファイルまたは別のバンドルリストである可能性があります。

checkout.defaultRemote

`git checkout <something>`または`git switch <something>`を実行し、リモートが1つしかない場合、暗黙的に`origin/<something>`などのチェックアウトとトラッキングにフォールバックすることがあります。これは、`<something>`参照を持つリモートが複数になると機能しなくなります。この設定により、あいまいさの解消において常に優先されるリモートの名前を設定できます。一般的なユースケースは、これを`origin`に設定することです。

現在、これはgit-switch[1]およびgit-checkout[1]によって、`git checkout <something>`または`git switch <something>`が別のリモートの`<something>`ブランチをチェックアウトする場合、およびgit-worktree[1]によって`git worktree add`がリモートブランチを参照する場合に使用されます。この設定は、将来的に他のチェックアウトのようなコマンドまたは機能に使用される可能性があります。

checkout.guess

`git checkout`と`git switch`の`--guess`または`--no-guess`オプションのデフォルト値を提供します。git-switch[1]git-checkout[1]を参照してください。

checkout.workers

作業ツリーの更新時に使用する並列ワーカーの数。デフォルトは1つ、つまりシーケンシャル実行です。1未満の値に設定すると、Gitは使用可能な論理コア数と同じ数のワーカーを使用します。この設定と`checkout.thresholdForParallelism`は、チェックアウトを実行するすべてのコマンドに影響します。例:checkout、clone、reset、sparse-checkoutなど。

注:並列チェックアウトは、SSD上またはNFS経由のリポジトリで通常はより良いパフォーマンスを提供します。回転ディスク上および/またはコア数の少ないマシン上のリポジトリの場合、デフォルトのシーケンシャルチェックアウトの方がパフォーマンスが向上することがよくあります。リポジトリのサイズと圧縮レベルも、並列バージョンのパフォーマンスに影響を与える可能性があります。

checkout.thresholdForParallelism

少量のファイルで並列チェックアウトを実行する場合、サブプロセスの生成とプロセス間通信のコストが並列化による利点を上回る可能性があります。この設定により、並列チェックアウトを試行するファイルの最小数を定義できます。デフォルトは100です。

clean.requireForce

-fが指定されていない限り、git-cleanがファイルの削除を拒否するようにするブール値。デフォルトはtrueです。

clone.defaultRemoteName

リポジトリをクローン作成する際に作成するリモートの名前。デフォルトは`origin`です。git-clone[1]に`--origin`コマンドラインオプションを渡すことで上書きできます。

clone.rejectShallow

シャローなリポジトリの場合、クローン作成を拒否します。これは、コマンドラインに`--reject-shallow`オプションを渡すことで上書きできます。git-clone[1]を参照してください。

clone.filterSubmodules

部分的なクローンフィルターが提供されている場合(git-rev-list[1]の`--filter`を参照)および`--recurse-submodules`が使用されている場合、フィルターをサブモジュールにも適用します。

color.advice

ヒントの色を有効/無効にします(例:プッシュが失敗した場合、リストについては`advice.*`を参照)。`always`、`false`(または`never`)、`auto`(または`true`)に設定できます。この場合、色はエラー出力がターミナルに送信されるときにのみ使用されます。設定されていない場合、`color.ui`の値が使用されます(デフォルトは`auto`)。

color.advice.hint

ヒントのカスタマイズされた色を使用します。

color.blame.highlightRecent

行の年齢に応じて、`git blame --color-by-age`の行の注釈の色を指定します。

この設定は、色と日付の設定のカンマ区切りリストに設定する必要があります。最初と最後は色で、日付は古い順に設定する必要があります。行が指定されたタイムスタンプの前に導入された場合、メタデータは指定された色で色付けされ、古いタイムスタンプの色が上書きされます。

絶対タイムスタンプの代わりに、相対タイムスタンプも機能します。例:`2.weeks.ago`は、2週間より古いものをすべて対象とするために有効です。

デフォルトは`blue,12 month ago,white,1 month ago,red`で、1年以上前のものはすべて青色、1ヶ月から1年前の最近の変更は白色、過去1ヶ月以内に導入された行は赤色になります。

color.blame.repeatedLines

`git blame --color-lines`の行の注釈を色付けするために指定された色を使用します。前の行と同じコミットからのものの場合。デフォルトはシアンです。

color.branch

git-branch[1]の出力の色を有効/無効にするブール値。`always`、`false`(または`never`)、`auto`(または`true`)に設定できます。この場合、色は出力がターミナルの場合にのみ使用されます。設定されていない場合、`color.ui`の値が使用されます(デフォルトは`auto`)。

color.branch.<slot>

ブランチの色のカスタマイズされた色を使用します。<slot>は、`current`(現在のブランチ)、`local`(ローカルブランチ)、`remote`(refs/remotes/内のリモート追跡ブランチ)、`upstream`(上流追跡ブランチ)、`plain`(その他のrefs)のいずれかです。

color.diff

パッチに色を追加するためにANSIエスケープシーケンスを使用するかどうか。これが`always`に設定されている場合、git-diff[1]git-log[1]、およびgit-show[1]はすべてのパッチに色を使用します。`true`または`auto`に設定されている場合、これらのコマンドは出力がターミナルの場合にのみ色を使用します。設定されていない場合、`color.ui`の値が使用されます(デフォルトは`auto`)。

これはgit-format-patch[1]または`git-diff-*` plumbingコマンドには影響しません。`--color[=<when>]`オプションを使用してコマンドラインで上書きできます。

color.diff.<slot>

差分の色付けにカスタムカラーを使用します。<slot> はパッチのどの部分を指定した色で表示するかを指定し、context(コンテキストテキスト - plain は旧称)、meta(メタ情報)、frag(ハンクヘッダー)、func(ハンクヘッダー内の関数)、old(削除された行)、new(追加された行)、commit(コミットヘッダー)、whitespace(空白エラーの強調表示)、oldMoved(移動された削除行)、newMoved(移動された追加行)、oldMovedDimmedoldMovedAlternativeoldMovedAlternativeDimmednewMovedDimmednewMovedAlternativenewMovedAlternativeDimmed(詳細は git-diff[1]--color-moved<mode> 設定を参照)、contextDimmedoldDimmednewDimmedcontextBoldoldBoldnewBold(詳細は git-range-diff[1] を参照)のいずれかです。

color.decorate.<slot>

git log --decorate 出力のカスタムカラーを使用します。<slot> は、それぞれローカルブランチ、リモートトラッキングブランチ、タグ、スタッシュ、HEAD に対して、branchremoteBranchtagstashHEAD のいずれか、および移植されたコミットに対して grafted のいずれかです。

color.grep

always に設定すると、常に一致部分を強調表示します。false(または never)の場合、強調表示しません。true または auto に設定すると、出力がターミナルに出力される場合にのみ色を使用します。設定されていない場合、color.ui の値が使用されます(デフォルトは auto)。

color.grep.<slot>

grep の色付けにカスタムカラーを使用します。<slot> は、行のどの部分を指定した色で表示するかを指定し、以下のいずれかです。

context

コンテキスト行内の一致しないテキスト(-A-B、または -C を使用する場合)

filename

ファイル名プレフィックス(-h を使用しない場合)

function

関数名行(-p を使用する場合)

lineNumber

行番号プレフィックス(-n を使用する場合)

column

列番号プレフィックス(--column を使用する場合)

match

一致するテキスト(matchContextmatchSelected を設定するのと同じ)

matchContext

コンテキスト行内の一致するテキスト

matchSelected

選択行内の一致するテキスト。また、以下の git-log[1] サブコマンドのカスタマイズにも使用されます:--grep--author--committer

selected

選択行内の一致しないテキスト。また、以下の git-log[1] サブコマンドのカスタマイズにも使用されます:--grep--author--committer

separator

行間のフィールドのセパレータ(:-=)とハンク間のセパレータ(--

color.interactive

always に設定すると、対話型プロンプトと表示(「git-add --interactive」や「git-clean --interactive」で使用されるものなど)に常に色を使用します。false(または never)の場合、使用しません。true または auto に設定すると、出力がターミナルに出力される場合にのみ色を使用します。設定されていない場合、color.ui の値が使用されます(デフォルトは auto)。

color.interactive.<slot>

git add --interactive および git clean --interactive 出力のカスタムカラーを使用します。<slot> は、対話型コマンドからの4種類の通常の出力に対して、promptheaderhelperror のいずれかになります。

color.pager

auto カラーモードがページャーに出力されるテキストの色付けを行うかどうかを指定するブール値です。デフォルトは true です。ページャーが ANSI カラーコードを理解しない場合は、false に設定します。

color.push

プッシュエラーの色付けを有効/無効にするブール値です。alwaysfalse(または never)、または auto(または true)に設定できます。後者の場合、エラー出力がターミナルに出力される場合にのみ色を使用します。設定されていない場合、color.ui の値が使用されます(デフォルトは auto)。

color.push.error

プッシュエラーのカスタムカラーを使用します。

color.remote

設定されている場合、行の先頭のキーワードが強調表示されます。キーワードは "error"、"warning"、"hint"、"success" で、大文字と小文字は区別されません。alwaysfalse(または never)、または auto(または true)に設定できます。設定されていない場合、color.ui の値が使用されます(デフォルトは auto)。

color.remote.<slot>

各リモートキーワードのカスタムカラーを使用します。<slot> は、対応するキーワードに一致する hintwarningsuccesserror のいずれかになります。

color.showBranch

git-show-branch[1] の出力の色付けを有効/無効にするブール値です。alwaysfalse(または never)、または auto(または true)に設定できます。後者の場合、出力がターミナルに出力される場合にのみ色を使用します。設定されていない場合、color.ui の値が使用されます(デフォルトは auto)。

color.status

git-status[1] の出力の色付けを有効/無効にするブール値です。alwaysfalse(または never)、または auto(または true)に設定できます。後者の場合、出力がターミナルに出力される場合にのみ色を使用します。設定されていない場合、color.ui の値が使用されます(デフォルトは auto)。

color.status.<slot>

ステータスの色付けにカスタムカラーを使用します。<slot> は、header(ステータスメッセージのヘッダーテキスト)、added または updated(追加されたがコミットされていないファイル)、changed(変更されたがインデックスに追加されていないファイル)、untracked(Git によって追跡されていないファイル)、branch(現在のブランチ)、nobranch(「ブランチなし」警告が表示される色、デフォルトは赤)、localBranch または remoteBranch(ブランチと追跡情報がステータスの短形式で表示される場合のローカルブランチ名とリモートブランチ名)、unmerged(マージされていない変更があるファイル)のいずれかです。

color.transport

プッシュが拒否された場合の色付けを有効/無効にするブール値です。alwaysfalse(または never)、または auto(または true)に設定できます。後者の場合、エラー出力がターミナルに出力される場合にのみ色を使用します。設定されていない場合、color.ui の値が使用されます(デフォルトは auto)。

color.transport.rejected

プッシュが拒否された場合のカスタムカラーを使用します。

color.ui

この変数は、コマンドファミリごとに色の使用を制御する color.diffcolor.grep などの変数のデフォルト値を決定します。その範囲は、--color オプションのデフォルトを設定する構成を学習するコマンドが増えるにつれて拡大します。Git コマンドで明示的に他の設定や --color オプションで有効にしない限り、色を使用しない方が良い場合は、false または never に設定します。機械による消費を意図していないすべての出力が色を使用する場合は always に、そのような出力がターミナルに出力される場合に色を使用する場合は true または auto に設定します(Git 1.8.4 以降のデフォルト)。

column.ui

サポートされているコマンドが列形式で出力するかどうかを指定します。この変数は、スペースまたはコンマで区切られたトークンのリストで構成されます。

これらのオプションは、機能を有効にするタイミングを制御します(デフォルトは never)。

always

常に列表示する

never

決して列表示しない

auto

出力がターミナルに出力される場合に列表示する

これらのオプションはレイアウトを制御します(デフォルトは column)。alwaysneverauto のいずれも指定されていない場合、これらのいずれかを設定すると always が暗黙的に指定されます。

column

行よりも先に列を埋める

row

列よりも先に行を埋める

plain

1列で表示する

最後に、これらのオプションはレイアウトオプションと組み合わせることができます(デフォルトは nodense)。

dense

より多くのスペースを利用するために、列のサイズが異なるようにする

nodense

列のサイズを同じにする

column.branch

git branch でブランチ一覧を列形式で出力するかどうかを指定します。詳細は column.ui を参照してください。

column.clean

git clean -i で項目を一覧表示する場合のレイアウトを指定します。これは常にファイルとディレクトリを列形式で表示します。詳細は column.ui を参照してください。

column.status

git status で追跡されていないファイルを列形式で出力するかどうかを指定します。詳細は column.ui を参照してください。

column.tag

git tag でタグ一覧を列形式で出力するかどうかを指定します。詳細は column.ui を参照してください。

commit.cleanup

この設定は、git commitにおける--cleanup オプションのデフォルト値を上書きします。git-commit[1] を参照ください。デフォルト値を変更すると、ログメッセージの先頭がコメント文字#で始まる行を常に保持したい場合に便利です。その場合は、git config commit.cleanup whitespaceを実行します(ただし、これを行う場合は、コミットログテンプレートの先頭が#で始まるヘルプ行を自分で削除する必要があります)。

commit.gpgSign

すべてのコミットにGPG署名をするかどうかを指定するブール値です。rebaseなどの操作でこのオプションを使用すると、多数のコミットに署名される可能性があります。GPGパスフレーズを何度も入力するのを避けるために、エージェントを使用すると便利です。

commit.status

エディタを使用してコミットメッセージを作成する際に、コミットメッセージテンプレートにステータス情報を含めるかどうかを有効/無効にするブール値です。デフォルトはtrueです。

commit.template

新しいコミットメッセージのテンプレートとして使用するファイルのパス名を指定します。

commit.verbose

git commitの詳細度レベルを指定するブール値または整数値です。git-commit[1]を参照ください。

commitGraph.generationVersion

コミットグラフファイルの書き込みまたは読み込み時に使用する生成番号バージョンの種類を指定します。バージョン1を指定すると、修正されたコミット日は書き込まれたり読み取られたりしません。デフォルトは2です。

commitGraph.maxNewFilters

git commit-graph write--max-new-filtersオプションのデフォルト値を指定します(git-commit-graph[1]参照)。

commitGraph.readChangedPaths

非推奨。trueの場合はcommitGraph.changedPathsVersion=-1、falseの場合はcommitGraph.changedPathsVersion=0と同等です。(commitGraph.changedPathVersionも設定されている場合、commitGraph.changedPathsVersionが優先されます)。

commitGraph.changedPathsVersion

Gitが読み書きする変更パスBloomフィルタのバージョンを指定します。-1、0、1、または2にすることができます。1より大きい値は、それらのバージョンをまだ理解していない古いバージョンのGitと互換性がない可能性があります。混合バージョン環境で操作する際には注意が必要です。

デフォルトは-1です。

-1の場合、Gitはリポジトリ内の変更パスBloomフィルタのバージョンを使用し、存在しない場合はデフォルトで1になります。

0の場合、GitはBloomフィルタを読み取らず、書き込みが指示された場合にバージョン1のBloomフィルタを書き込みます。

1の場合、Gitはバージョン1のBloomフィルタのみを読み取り、バージョン1のBloomフィルタを書き込みます。

2の場合、Gitはバージョン2のBloomフィルタのみを読み取り、バージョン2のBloomフィルタを書き込みます。

git-commit-graph[1] を参照ください。

completion.commands

これは、git-completion.bashによってのみ使用され、完了したコマンドのリストにコマンドを追加または削除します。通常、ポーセレンコマンドと少数の選択されたコマンドのみが完了します。この変数に、スペースで区切ったさらに多くのコマンドを追加できます。コマンドの前に-を付けると、既存のリストから削除されます。

core.fileMode

作業ツリー内のファイルの実行ビットを尊重するかどうかをGitに指示します。

実行可能としてマークされているファイルをチェックアウトすると、一部のファイルシステムでは実行ビットが失われたり、実行ビットがオンになっている実行不可能なファイルがチェックアウトされたりします。git-clone[1]またはgit-init[1]は、ファイルシステムが実行ビットを正しく処理するかどうかを調べ、必要に応じてこの変数が自動的に設定されます。

ただし、リポジトリはファイルモードを正しく処理するファイルシステム上にある場合があり、作成時にこの変数はtrueに設定されますが、後でファイルモードを失う別の環境からアクセスできるようになる可能性があります(例:CIFSマウントを介したext4のエクスポート、Git for WindowsまたはEclipseでCygwinによって作成されたリポジトリへのアクセス)。そのような場合は、この変数をfalseに設定する必要がある場合があります。git-update-index[1]を参照ください。

デフォルトはtrueです(core.filemodeが設定ファイルに指定されていない場合)。

core.hideDotFiles

(Windowsのみ) trueの場合、新しく作成されたディレクトリと、名前の先頭がドットで始まるファイルを非表示としてマークします。dotGitOnlyの場合、.git/ディレクトリのみが非表示になりますが、ドットで始まる他のファイルは非表示になりません。デフォルトモードはdotGitOnlyです。

core.ignoreCase

APFS、HFS+、FAT、NTFSなど、大文字と小文字を区別しないファイルシステムでGitがより適切に機能するように、さまざまな回避策を有効にする内部変数です。たとえば、ディレクトリ一覧でGitが「Makefile」を期待しているときに「makefile」が見つかった場合、Gitはそれが実際には同じファイルであると仮定し、「Makefile」として記憶し続けます。

デフォルトはfalseですが、git-clone[1]またはgit-init[1]は、リポジトリが作成されるときに適切であれば、core.ignoreCaseをtrueにプローブして設定します。

Gitは、オペレーティングシステムとファイルシステムのこの変数の適切な構成に依存します。この値を変更すると、予期しない動作が発生する可能性があります。

core.precomposeUnicode

このオプションは、GitのMac OS実装によってのみ使用されます。core.precomposeUnicode=trueの場合、GitはMac OSによって行われたファイル名のUnicode分解を元に戻します。これは、Mac OSとLinuxまたはWindows間でリポジトリを共有する場合に役立ちます。(Git for Windows 1.7.10以降が必要、またはcygwin 1.7下のGit)。falseの場合、ファイル名はGitによって完全に透過的に処理され、古いバージョンのGitとの下位互換性を保ちます。

core.protectHFS

trueに設定されている場合、HFS+ファイルシステムで.gitと等価と見なされるパスのチェックアウトを許可しません。Mac OSではtrue、それ以外の場所ではfalseがデフォルトです。

core.protectNTFS

trueに設定されている場合、NTFSファイルシステムに問題を引き起こす可能性のあるパスのチェックアウトを許可しません(例:8.3「短い」名前との競合)。Windowsではtrue、それ以外の場所ではfalseがデフォルトです。

core.fsmonitor

trueに設定されている場合、この作業ディレクトリに組み込みのファイルシステムモニタデーモンを有効にします(git-fsmonitor--daemon[1])。

フックベースのファイルシステムモニタと同様に、組み込みのファイルシステムモニタは、多くのファイルを含む作業ディレクトリで、Gitインデックスを更新する必要があるGitコマンド(例:git status)の速度を向上させることができます。組み込みのモニタを使用すると、外部のサードパーティツールをインストールおよび保守する必要がなくなります。

組み込みのファイルシステムモニタは、現在、サポートされているプラットフォームの限られたセットでのみ使用できます。現在、WindowsとMacOSが含まれています。

Otherwise, this variable contains the pathname of the "fsmonitor"
hook command.

このフックコマンドは、要求された日時以降に変更された可能性のあるすべてのファイルを識別するために使用されます。この情報は、変更されていないファイルのスキャンを回避することにより、Gitの速度を向上させるために使用されます。

githooks[5]の「fsmonitor-watchman」セクションを参照ください。

コマンドラインで1つのバージョン、IDEツールで別のバージョンなど、複数のバージョンのGitを同時に使用する場合、core.fsmonitorの定義が拡張され、フックパス名に加えてブール値が許可されるようになったことに注意してください。Gitバージョン2.35.1以前はブール値を理解せず、「true」または「false」の値を呼び出すフックパス名と見なします。Gitバージョン2.26から2.35.1までは、デフォルトでフックプロトコルV2を使用し、fsmonitorなし(フルスキャン)にフォールバックします。2.26より前のGitバージョンは、デフォルトでフックプロトコルV1を使用し、変更が報告されていないと黙って仮定します(スキャンなし)。そのため、statusコマンドは不完全な結果を報告する場合があります。このため、組み込みのファイルシステムモニタを使用する前に、すべてのGitバージョンをアップグレードすることをお勧めします。

core.fsmonitorHookVersion

「fsmonitor」フックを呼び出す際に使用するプロトコルバージョンを設定します。

現在、バージョン1とバージョン2があります。これが設定されていない場合、最初にバージョン2が試行され、失敗した場合にバージョン1が試行されます。バージョン1はタイムスタンプを入力として使用して、その時間以降に変更されたファイルを決定しますが、Watchmanなどのモニターでは、タイムスタンプで使用する場合に競合状態が発生します。バージョン2は不透明な文字列を使用するため、モニターは競合状態なしに変更されたファイルを決定するために使用できるものを返すことができます。

core.trustctime

falseの場合、インデックスと作業ツリー間のctimeの差は無視されます。これは、inode変更時間がGit以外のもので定期的に変更される場合(ファイルシステムクローラーや一部のバックアップシステム)に役立ちます。git-update-index[1]を参照ください。デフォルトはtrueです。

core.splitIndex

trueの場合、インデックスの分割インデックス機能が使用されます。git-update-index[1]を参照ください。デフォルトはfalseです。

core.untrackedCache

インデックスのuntrackedキャッシュ機能についてどうするかを決定します。この変数が設定されていないか、keepに設定されている場合、保持されます。trueに設定されている場合、自動的に追加されます。そして、falseに設定されている場合、自動的に削除されます。trueに設定する前に、mtimeがシステムで正しく機能していることを確認する必要があります。git-update-index[1]を参照ください。デフォルトはkeepですが、feature.manyFilesが有効になっていると、デフォルトでtrueに設定されます。

core.checkStat

存在しない場合、またはdefaultに設定されている場合、stat構造体の多くのフィールドがチェックされ、Gitが最後に確認してからファイルが変更されたかどうかが検出されます。この設定変数がminimalに設定されている場合、mtimeとctimeのサブ秒部分、ファイルの所有者のuidとgid、inode番号(およびGitがそれを使用するようにコンパイルされている場合のデバイス番号)は、これらのフィールドのチェックから除外され、mtime(およびcore.trustCtimeが設定されている場合のctime)の秒単位の部分とファイルサイズのみがチェックされます。

一部のフィールドに有用な値を残さないGitの実装があります(例:JGit)。これらのフィールドを比較から除外することにより、minimalモードは、同じリポジトリがこれらの他のシステムによって同時に使用される場合の相互運用性を向上させるのに役立ちます。

core.quotePath

パスを出力するコマンド(例:ls-filesdiff)は、パス名内の「特殊な」文字を二重引用符で囲み、Cが制御文字をエスケープする方法(例:TABの場合は\t、LFの場合は\n、バックスラッシュの場合は\\)または0x80より大きい値のバイト(例:UTF-8の「マイクロ」の場合は8進数の\302\265)をバックスラッシュでエスケープすることにより、引用符で囲みます。この変数がfalseに設定されている場合、0x80より大きいバイトは「特殊な」ものとは見なされなくなります。二重引用符、バックスラッシュ、制御文字は、この変数の設定に関係なく常にエスケープされます。単純なスペース文字は「特殊な」ものとは見なされません。多くのコマンドは、-zオプションを使用してパス名を完全にそのまま出力できます。デフォルト値はtrueです。

core.eol

テキストとしてマークされたファイル(text 属性が設定されているか、text=auto で Git がコンテンツをテキストとして自動検出したファイル)の作業ディレクトリで使用される行末タイプを設定します。選択肢は *lf*、*crlf*、およびプラットフォームのネイティブな行末を使用する *native* です。デフォルト値は native です。行末変換の詳細については、gitattributes[5] を参照してください。core.autocrlftrue または input に設定されている場合、この値は無視されます。

core.safecrlf

true の場合、行末変換がアクティブなときに CRLF の変換が可逆的かどうかを Git にチェックさせます。Git は、コマンドが作業ツリー内のファイルを直接的または間接的に変更するかどうかを確認します。たとえば、ファイルをコミットしてから同じファイルをチェックアウトすると、作業ツリーに元のファイルが生成されます。これが core.autocrlf の現在の設定では当てはまらない場合、Git はファイルを拒否します。この変数は "warn" に設定することもでき、その場合、Git は不可逆変換について警告するだけで、操作を続行します。

CRLF 変換には、データが破損する可能性がわずかにあります。有効になっている場合、Git はコミット時に CRLF を LF に、チェックアウト時に LF を CRLF に変換します。コミット前に LF と CRLF が混在するファイルは、Git では再作成できません。テキストファイルの場合、これは正しい処理です。リポジトリに LF 行末のみが存在するように行末を修正します。しかし、誤ってテキストとして分類されたバイナリファイルの場合、変換によってデータが破損する可能性があります。

そのような破損を早期に認識した場合、.gitattributes で変換タイプを明示的に設定することで簡単に修正できます。コミット直後には、作業ツリーに元のファイルが残っており、このファイルはまだ破損していません。このファイルがバイナリファイルであることを Git に明示的に指示すると、Git はファイルを適切に処理します。

残念ながら、行末が混在するテキストファイルをクリーンアップするという目的の効果と、バイナリファイルを破損させるという望ましくない効果を区別することはできません。どちらの場合も、CRLF は不可逆的な方法で削除されます。テキストファイルの場合、CRLF は行末であるためこれは正しい処理ですが、バイナリファイルの場合、CRLF を変換するとデータが破損します。

この安全チェックは、core.eolcore.autocrlf の設定が異なる場合に、チェックアウトによって生成されるファイルが元のファイルと同一になることを意味するものではなく、現在の設定のみを対象としています。たとえば、LF を含むテキストファイルは core.eol=lf で受け入れられ、後で core.eol=crlf でチェックアウトできます。その場合、結果として生成されるファイルには CRLF が含まれますが、元のファイルには LF が含まれていました。ただし、どちらの作業ツリーでも、行末はすべて LF またはすべて CRLF のいずれかであり、混在することはありません。行末が混在するファイルは、core.safecrlf メカニズムによって報告されます。

core.autocrlf

この変数を "true" に設定すると、すべてのファイルの text 属性が "auto" に、core.eol が "crlf" に設定されることと同じです。作業ディレクトリに CRLF 行末を配置し、リポジトリに LF 行末がある場合に true に設定します。この変数は *input* に設定することもでき、その場合、出力変換は実行されません。

core.checkRoundtripEncoding

working-tree-encoding 属性で使用されている場合に、Git が UTF-8 ラウンドトリップチェックを実行するエンコーディングのコンマおよび/または空白で区切られたリストです(gitattributes[5] を参照)。デフォルト値は SHIFT-JIS です。

false の場合、シンボリックリンクは、リンクテキストを含む小さなプレーンテキストファイルとしてチェックアウトされます。git-update-index[1]git-add[1] は、記録されたタイプを通常のファイルに変更しません。シンボリックリンクをサポートしていない FAT などのファイルシステムで役立ちます。

デフォルトは true です。ただし、git-clone[1] または git-init[1] は、リポジトリの作成時に適切な場合に core.symlinks を false にプローブして設定します。

core.gitProxy

フェッチに Git プロトコルを使用する場合に、リモートサーバーへの直接接続を確立する代わりに実行する「プロキシコマンド」(command host port の形式)です。変数の値が「DOMAIN のための COMMAND」形式の場合、コマンドは指定されたドメイン文字列で終わるホスト名にのみ適用されます。この変数は複数回設定でき、指定された順序で一致されます。最初に一致したものが優先されます。

GIT_PROXY_COMMAND 環境変数で上書きできます(これは常に普遍的に適用され、「for」処理の特殊な処理は行われません)。

特別な文字列 none をプロキシコマンドとして使用して、特定のドメインパターンに対してプロキシを使用しないように指定できます。これは、ファイアウォール内のサーバーをプロキシの使用から除外しながら、外部ドメインに共通のプロキシをデフォルトで使用するのに役立ちます。

core.sshCommand

この変数が設定されている場合、git fetchgit push は、リモートシステムに接続する必要があるときに ssh の代わりに指定されたコマンドを使用します。このコマンドは GIT_SSH_COMMAND 環境変数と同じ形式であり、環境変数が設定されている場合は上書きされます。

core.ignoreStat

true の場合、Git は lstat() 呼び出しを使用してファイルの変更を検出せず、インデックスと作業ツリーの両方で同じように更新された追跡済みファイルに対して "assume-unchanged" ビットを設定します。

Git の外部でファイルが変更された場合、ユーザーは変更されたファイルを明示的にステージングする必要があります(たとえば、git-update-index[1] の「例」セクションを参照)。Git は通常、これらのファイルの変更を検出しません。

これは、CIFS/Microsoft Windows など、lstat() 呼び出しが非常に遅いシステムで役立ちます。

デフォルトは false です。

core.preferSymlinkRefs

HEAD やその他のシンボリック参照ファイルのデフォルトの "symref" 形式の代わりに、シンボリックリンクを使用します。これは、HEAD をシンボリックリンクとして期待する古いスクリプトを使用する必要がある場合に必要になることがあります。

core.alternateRefsCommand

代替からの利用可能な履歴のヒントをアドバタイズする際に、git-for-each-ref[1] の代わりに、指定されたコマンドをシェルで実行します。最初の引数は代替の絶対パスです。出力には、行ごとに 1 つの 16 進数のオブジェクト ID を含める必要があります(つまり、git for-each-ref --format='%(objectname)' で生成されるものと同じです)。

リポジトリパスを引数として受け取らないため、一般的に git for-each-ref を直接設定値に入れることはできません(ただし、上記のコマンドをシェルスクリプトでラップすることはできます)。

core.alternateRefsPrefixes

代替から参照をリストする場合、指定されたプレフィックスで始まる参照のみをリストします。プレフィックスは、git-for-each-ref[1] に引数として渡された場合と同じように一致されます。複数のプレフィックスをリストするには、空白で区切ります。core.alternateRefsCommand が設定されている場合、core.alternateRefsPrefixes を設定しても効果はありません。

core.bare

true の場合、このリポジトリは *bare* であると想定され、それに関連付けられた作業ディレクトリはありません。git-add[1]git-merge[1] など、作業ディレクトリを必要とする多くのコマンドが無効になります。

この設定は、リポジトリの作成時に git-clone[1] または git-init[1] によって自動的に推測されます。デフォルトでは、"/\.git" で終わるリポジトリは bare でないと想定され(bare = false)、他のすべてのリポジトリは bare であると想定されます(bare = true)。

core.worktree

作業ツリーのルートへのパスを設定します。GIT_COMMON_DIR 環境変数が設定されている場合、core.worktree は無視され、作業ツリーのルートの決定には使用されません。これは、GIT_WORK_TREE 環境変数と --work-tree コマンドラインオプションで上書きできます。値は、絶対パスにすることも、--git-dir または GIT_DIR で指定されているか、または自動的に検出される .git ディレクトリへのパスに対する相対パスにすることもできます。--git-dir または GIT_DIR が指定されているが、--work-treeGIT_WORK_TREE、および core.worktree のいずれも指定されていない場合、現在の作業ディレクトリが作業ツリーの最上位レベルと見なされます。

この変数は、ディレクトリの ".git" サブディレクトリにある設定ファイルに設定されている場合でも、その値が後者のディレクトリと異なる場合でも(たとえば、"/path/to/.git/config" に core.worktree が "/different/path" に設定されている場合)尊重されます。これは、ほとんどの場合、誤った設定です。"path/to" ディレクトリで Git コマンドを実行しても、作業ツリーのルートとして "/different/path" が引き続き使用され、意図している動作が理解できていない限り(たとえば、リポジトリの通常の作業ツリーとは異なる場所に同じインデックスの読み取り専用スナップショットを作成している場合)、混乱が生じる可能性があります。

core.logAllRefUpdates

reflog を有効にします。 ref <ref> の更新は、新しい SHA-1 と古い SHA-1、日付/時刻、および更新の理由を追加することで、ファイル "$GIT_DIR/logs/<ref>" にログに記録されますが、ファイルが存在する場合のみです。この設定変数を true に設定すると、不足している "$GIT_DIR/logs/<ref>" ファイルが、ブランチヘッド(つまり、refs/heads/ の下)、リモート ref(つまり、refs/remotes/ の下)、ノート ref(つまり、refs/notes/ の下)、およびシンボリック ref HEAD に対して自動的に作成されます。always に設定されている場合、refs/ の下の任意の ref に対して、不足している reflog が自動的に作成されます。

この情報は、「2 日前」のブランチの先端がどのコミットであったかを判断するために使用できます。

この値は、作業ディレクトリが関連付けられているリポジトリではデフォルトで true、bare リポジトリではデフォルトで false です。

core.repositoryFormatVersion

リポジトリの形式とレイアウトのバージョンを識別する内部変数です。

core.sharedRepository

group(またはtrue)の場合、リポジトリはグループ内の複数のユーザー間で共有可能になります(すべてのファイルとオブジェクトがグループ書き込み可能であることを確認します)。all(またはworldeverybody)の場合、リポジトリはグループ共有可能であることに加えて、すべてのユーザーが読み取ることができます。umask(またはfalse)の場合、Gitはumask(2)によって報告されたパーミッションを使用します。0xxx0xxxは8進数)の場合、リポジトリ内のファイルはこのモード値を持ちます。0xxxはユーザーのumask値を上書きします(他のオプションは、ユーザーのumask値の要求された部分のみを上書きします)。例:0660は、所有者とグループに対して読み書き可能だが、他のユーザーにはアクセスできないリポジトリにします(umaskが例えば0022でない限り、groupと同等です)。0640は、グループで読み取り可能だが、グループで書き込み不可能なリポジトリです。git-init[1]を参照してください。デフォルトはFalseです。

core.warnAmbiguousRefs

trueの場合、Gitは渡された参照名が曖昧で、リポジトリ内の複数の参照と一致する可能性がある場合に警告します。デフォルトはTrueです。

core.compression

デフォルトの圧縮レベルを示す整数 -1~9。-1はzlibのデフォルトです。0は圧縮なし、1~9は速度とサイズの様々なトレードオフを表し、9が最も遅いです。設定されている場合、core.looseCompressionpack.compressionなどの他の圧縮変数のデフォルト値となります。

core.looseCompression

パックファイルに含まれていないオブジェクトの圧縮レベルを示す整数 -1~9。-1はzlibのデフォルトです。0は圧縮なし、1~9は速度とサイズの様々なトレードオフを表し、9が最も遅いです。設定されていない場合は、core.compressionのデフォルト値を使用します。それが設定されていない場合は、1(最速)がデフォルトになります。

core.packedGitWindowSize

一度のマッピング操作でメモリにマップするパックファイルのバイト数。ウィンドウサイズを大きくすると、システムはより少ない数の大きなパックファイルをより迅速に処理できる場合があります。ウィンドウサイズを小さくすると、オペレーティングシステムのメモリマネージャーへの呼び出しが増えるためパフォーマンスが低下しますが、多数の大きなパックファイルにアクセスする場合のパフォーマンスが向上する可能性があります。

コンパイル時にNO_MMAPが設定されている場合は1 MiB、そうでない場合は32ビットプラットフォームで32 MiB、64ビットプラットフォームで1 GiBがデフォルトです。これはすべてのユーザー/オペレーティングシステムにとって妥当な値です。この値を調整する必要はほとんどありません。

km、またはgの一般的な単位サフィックスがサポートされています。

core.packedGitLimit

パックファイルから同時にメモリにマップするバイト数の最大値。Gitが操作を完了するためにこれよりも多くのバイト数に一度にアクセスする必要がある場合、既存の領域をアンマップして、プロセス内の仮想アドレス空間を再利用します。

32ビットプラットフォームではデフォルトは256 MiB、64ビットプラットフォームでは32 TiB(事実上無制限)です。これは、最大のプロジェクトを除くすべてのユーザー/オペレーティングシステムにとって妥当な値です。この値を調整する必要はほとんどありません。

km、またはgの一般的な単位サフィックスがサポートされています。

core.deltaBaseCacheLimit

複数のデルタイズされたオブジェクトによって参照される可能性のある基本オブジェクトのキャッシュに予約するスレッドあたりのバイト数の最大値。圧縮解除された基本オブジェクト全体をキャッシュに保存することで、Gitは頻繁に使用される基本オブジェクトの複数回のパック解除と圧縮解除を回避できます。

すべてのプラットフォームでデフォルトは96 MiBです。これは、最大のプロジェクトを除くすべてのユーザー/オペレーティングシステムにとって妥当な値です。この値を調整する必要はほとんどありません。

km、またはgの一般的な単位サフィックスがサポートされています。

core.bigFileThreshold

"大きな"ファイルと見なされるファイルのサイズ。以下で説明するように、これは多数のgitコマンドの動作、およびそのようなファイルがリポジトリ内にどのように保存されるかを変更します。デフォルトは512 MiBです。km、またはgの一般的な単位サフィックスがサポートされています。

設定された制限を超えるファイルは、

  • デルタ圧縮を試みることなく、パックファイルに圧縮して保存されます。

    デフォルトの制限は、主にこのユースケースを念頭に置いて設定されています。これにより、ほとんどのプロジェクトではソースコードやその他のテキストファイルがデルタ圧縮されますが、より大きなバイナリメディアファイルは圧縮されません。

    デルタ圧縮を行わずに大きなファイルを保存すると、過剰なメモリ使用を回避できますが、ディスク使用量はやや増加します。

  • "バイナリ"とラベル付けされたものとして扱われます(gitattributes[5]を参照)。例:git-log[1]git-diff[1]はこの制限を超えるファイルの差分を計算しません。

  • 書き込み時に一般的にストリーミングされます。これにより、過剰なメモリ使用を回避できますが、いくつかの固定オーバーヘッドが発生します。これを使用するコマンドには、git-archive[1]git-fast-import[1]git-index-pack[1]git-unpack-objects[1]git-fsck[1]などがあります。

core.excludesFile

.gitignore(ディレクトリごと)と.git/info/excludeに加えて、追跡されないパスを記述するパターンを含むファイルのパス名を指定します。デフォルトは$XDG_CONFIG_HOME/git/ignoreです。$XDG_CONFIG_HOMEが設定されていないか空の場合は、代わりに$HOME/.config/git/ignoreが使用されます。gitignore[5]を参照してください。

core.askPass

対話的にパスワードを要求する一部のコマンド(例:svnとhttpインターフェース)は、この変数の値によって指定された外部プログラムを使用するように指示できます。GIT_ASKPASS環境変数によって上書きできます。設定されていない場合は、SSH_ASKPASS環境変数の値にフォールバックするか、そうでない場合は単純なパスワードプロンプトを使用します。外部プログラムには、コマンドライン引数として適切なプロンプトが与えられ、パスワードがSTDOUTに書き込まれます。

core.attributesFile

.gitattributes(ディレクトリごと)と.git/info/attributesに加えて、Gitはこのファイルで属性を探します(gitattributes[5]を参照)。パス展開は、core.excludesFileと同じ方法で行われます。デフォルト値は$XDG_CONFIG_HOME/git/attributesです。$XDG_CONFIG_HOMEが設定されていないか空の場合は、代わりに$HOME/.config/git/attributesが使用されます。

core.hooksPath

デフォルトでは、Gitは$GIT_DIR/hooksディレクトリでフックを探します。これを異なるパス(例:/etc/git/hooks)に設定すると、Gitは$GIT_DIR/hooks/pre-receiveではなく、そのディレクトリ(例:/etc/git/hooks/pre-receive)でフックを探します。

パスは絶対パスでも相対パスでもかまいません。相対パスは、フックが実行されるディレクトリからの相対パスとして扱われます(githooks[5]の「DESCRIPTION」セクションを参照)。

この設定変数は、リポジトリごとに設定するのではなく、Gitフックを一元的に設定する場合、またはデフォルトのフックを変更したinit.templateDirのより柔軟で一元的な代替手段として役立ちます。

core.editor

エディターを起動してメッセージを編集できるようにするcommittagなどのコマンドは、この変数が設定されていて、環境変数GIT_EDITORが設定されていない場合に、この変数の値を使用します。git-var[1]を参照してください。

core.commentChar
core.commentString

メッセージを編集できるようにするcommittagなどのコマンドは、この文字で始まる行をコメントとして扱い、エディターが戻った後に削除します(デフォルトは#)。

"auto"に設定されている場合、git-commitは既存のコミットメッセージの行の先頭文字ではない文字を選択します。

これらの2つの変数は互いにエイリアスであり、最新のGitバージョンでは、commentCharで文字列(例://または⁑⁕⁑)を使用できます。v2.45.0より前のバージョンのGitはcommentStringを無視しますが、複数のASCIIバイトで構成されるcommentCharの値を拒否します。古いバージョンと新しいバージョンのGitで設定を使用する予定がある場合は、両方を含めて指定することをお勧めします。

[core]
# single character for older versions
commentChar = "#"
# string for newer versions (which will override commentChar
# because it comes later in the file)
commentString = "//"
core.filesRefLockTimeout

個々の参照のロックを試行する際の再試行時間(ミリ秒単位)。値0はまったく再試行しないことを意味し、-1は無期限に再試行することを意味します。デフォルトは100(つまり、100ms再試行)です。

core.packedRefsTimeout

packed-refsファイルのロックを試行する際の再試行時間(ミリ秒単位)。値0はまったく再試行しないことを意味し、-1は無期限に再試行することを意味します。デフォルトは1000(つまり、1秒間再試行)です。

core.pager

Gitコマンドで使用されるテキストビューアー(例:less)。値はシェルによって解釈されることを意図しています。優先順位は、$GIT_PAGER環境変数、core.pager設定、$PAGER、そしてコンパイル時に選択されたデフォルト(通常はless)の順です。

LESS環境変数が設定されていない場合、GitはそれをFRXに設定します(LESS環境変数が設定されている場合、Gitはそれをまったく変更しません)。LESSのGitのデフォルト設定を選択的に上書きする場合は、core.pagerless -Sなどに設定できます。これはGitによってシェルに渡され、最終的なコマンドがLESS=FRX less -Sに変換されます。環境はSオプションを設定しませんが、コマンドラインは設定し、lessに長い行を切り捨てるように指示します。同様に、core.pagerless -+Fに設定すると、環境によって指定されたFオプションがコマンドラインから無効になり、lessの「1画面で終了」動作が無効になります。特定のコマンドに対して特定のフラグを有効にすることができます。たとえば、pager.blameless -Sに設定すると、git blameに対してのみ行の切り捨てが有効になります。

同様に、LV環境変数が設定されていない場合、Gitはそれを-cに設定します。別の値でLVをエクスポートするか、core.pagerlv +cに設定することで、この設定を上書きできます。

core.whitespace

認識する一般的な空白の問題のカンマ区切りリスト。git diffcolor.diff.whitespaceを使用してそれらを強調表示し、git apply --whitespace=errorはそれらをエラーと見なします。前に-を付けて無効にすることができます(例:-trailing-space)。

  • blank-at-eolは、行末の末尾の空白をエラーとして扱います(デフォルトで有効)。

  • space-before-tabは、行の先頭インデント部分にあるタブの直前にスペース文字がある場合をエラーとして扱います(デフォルトで有効)。

  • indent-with-non-tabは、同等のタブではなくスペース文字でインデントされている行をエラーとして扱います(デフォルトでは無効)。

  • tab-in-indentは、行の先頭インデント部分にあるタブ文字をエラーとして扱います(デフォルトでは無効)。

  • blank-at-eofは、ファイルの最後に追加された空行をエラーとして扱います(デフォルトで有効)。

  • trailing-spaceは、blank-at-eolblank-at-eofの両方をカバーする省略形です。

  • cr-at-eolは、行末のキャリッジリターンを行終端子の一部として扱います。つまり、これを使用すると、そのキャリッジリターンの前の文字が空白でない場合、trailing-spaceはトリガーされません(デフォルトでは無効)。

  • tabwidth=<n>は、タブが占める文字位置数を示します。これは、indent-with-non-tabと、Gitがtab-in-indentエラーを修正する場合に関連します。デフォルトのタブ幅は8です。許容値は1〜63です。

core.fsync

リポジトリのコンポーネントのカンマ区切りリストです。これらは、作成または変更時に `core.fsyncMethod` を介して強化されます。任意のコンポーネントの強化を無効にするには、先頭に `-` を付けることができます。強化されていない項目は、システムのクリーンでないシャットダウン時に失われる可能性があります。特別な要件がない限り、このオプションを空のままにするか、`committed`、`added`、または`all` のいずれかを選択することをお勧めします。

この設定が検出されると、コンポーネントのセットはプラットフォームのデフォルト値で始まり、無効化されたコンポーネントは削除され、追加のコンポーネントが追加されます。`none` は状態をリセットするため、プラットフォームのデフォルトが無視されます。

空文字列は、fsync 設定をプラットフォームのデフォルトにリセットします。ほとんどのプラットフォームでのデフォルトは `core.fsync=committed,-loose-object` と同等であり、パフォーマンスは良好ですが、システムのクリーンでないシャットダウン時に最近の作業が失われるリスクがあります。

  • `none` は、fsync されたコンポーネントのセットをクリアします。

  • `loose-object` は、ルーズオブジェクト形式でリポジトリに追加されたオブジェクトを強化します。

  • `pack` は、パックファイル形式でリポジトリに追加されたオブジェクトを強化します。

  • `pack-metadata` は、パックファイルのビットマップとインデックスを強化します。

  • `commit-graph` は、コミットグラフファイルを強化します。

  • `index` は、インデックスが変更されたときに強化します。

  • `objects` は、`loose-object,pack` と同等の集約オプションです。

  • `reference` は、リポジトリで変更された参照を強化します。

  • `derived-metadata` は、`pack-metadata,commit-graph` と同等の集約オプションです。

  • `committed` は、現在 `objects` と同等の集約オプションです。このモードでは、パフォーマンスを犠牲にして、`git commit` などのコマンドでリポジトリにコミットされた作業が強化されるようにします。

  • `added` は、現在 `committed,index` と同等の集約オプションです。このモードでは、パフォーマンスをさらに犠牲にして、`git add` などのコマンドの結果が強化されるようにします。

  • `all` は、上記のすべての個々のコンポーネントを同期する集約オプションです。

core.fsyncMethod

Git が fsync および関連プリミティブを使用してリポジトリデータを強化するために使用する戦略を示す値です。

  • `fsync` は、`fsync()` システムコールまたはプラットフォーム同等のものを利用します。

  • `writeout-only` はページキャッシュの書き戻し要求を発行しますが、ファイルシステムとストレージハードウェアによっては、システムクラッシュが発生した場合、リポジトリに追加されたデータが永続的ではない可能性があります。これはmacOSでのデフォルトモードです。

  • `batch` は、ディスク書き戻しキャッシュに複数の更新をステージングし、最後にダミーファイルの完全な fsync を実行して操作の最後にディスクキャッシュのフラッシュをトリガーする、writeout-only フラッシュを使用するモードを有効にします。

    現在、`batch` モードはルーズオブジェクトファイルのみに適用されます。他のリポジトリデータは、`fsync` が指定された場合と同様に永続化されます。このモードは、HFS+ または APFS ファイルシステム上に保存されたリポジトリの macOS と、NTFS または ReFS ファイルシステム上に保存されたリポジトリの Windows で、`fsync` と同様に安全であると予想されます。

core.fsyncObjectFiles

このブール値は、オブジェクトファイルの書き込み時に `fsync()` を有効にします。この設定は非推奨です。`core.fsync` を代わりに使用してください。

この設定は、ルーズオブジェクト形式でGitリポジトリに追加されたデータに影響します。`true` に設定されている場合、Git は fsync または同様のシステムコールを発行してキャッシュをフラッシュするため、システムのクリーンでないシャットダウン時でもルーズオブジェクトは整合性を維持します。

core.preloadIndex

`git diff` などの操作の並列インデックスプリロードを有効にします。

特に、キャッシングセマンティクスが弱く、IOレイテンシが比較的高いNFSのようなファイルシステムでは、`git diff` や `git status` などの操作を高速化できます。有効にすると、Git はファイルシステムデータとのインデックス比較を並列で行い、IOのオーバーラップを可能にします。デフォルトはtrueです。

core.unsetenvvars

Windows のみ: 他のプロセスを生成する前にアンセットする必要がある環境変数の名前のカンマ区切りリストです。Git for Windows は独自の Perl インタープリタを使用することにこだわっているため、デフォルトは `PERL5LIB` です。

core.restrictinheritedhandles

Windows のみ: 生成されたプロセスが標準ファイルハンドル(`stdin`、`stdout`、`stderr`)のみを継承するか、すべてのハンドルを継承するかをオーバーライドします。`auto`、`true`、または `false` のいずれかになります。デフォルトは `auto` であり、Windows 7 以降では `true`、それより古い Windows バージョンでは `false` を意味します。

core.createObject

`link` に設定できます。この場合、ソースの削除に続くハードリンクを使用して、オブジェクトの作成で既存のオブジェクトが上書きされないようにします。

一部のファイルシステム/オペレーティングシステムの組み合わせでは、これは信頼性がありません。その場合は、この設定を `rename` に設定します。ただし、これにより、既存のオブジェクトファイルが上書きされないことを確認するチェックが削除されます。

core.notesRef

コミットメッセージを表示する際に、指定された参照に保存されているノートも表示します。参照は完全修飾されている必要があります。指定された参照が存在しない場合、エラーではありませんが、ノートを表示しないことを意味します。

この設定のデフォルトは "refs/notes/commits" であり、`GIT_NOTES_REF` 環境変数でオーバーライドできます。 git-notes[1] を参照してください。

core.commitGraph

`true` の場合、git は(存在する場合)コミットグラフファイルを読み込んで、コミットのグラフ構造を解析します。デフォルトは `true` です。詳細については、git-commit-graph[1] を参照してください。

core.useReplaceRefs

`false` に設定されている場合、コマンドラインで `--no-replace-objects` オプションが指定された場合と同じように動作します。詳細については、git[1]git-replace[1] を参照してください。

core.multiPackIndex

マルチパックインデックスファイルを使用して、単一のインデックスで複数のパックファイルをトラッキングします。詳細については、git-multi-pack-index[1] を参照してください。デフォルトは `true` です。

core.sparseCheckout

"スパースチェックアウト"機能を有効にします。詳細については、git-sparse-checkout[1] を参照してください。

core.sparseCheckoutCone

スパースチェックアウト機能の "コーンモード" を有効にします。スパースチェックアウトファイルにパターンが限定的に含まれている場合、このモードは大幅なパフォーマンス向上をもたらします。この変数を `false` に設定することで、より柔軟なパターンを指定できるように "非コーンモード" を要求できます。詳細については、git-sparse-checkout[1] を参照してください。

core.abbrev

オブジェクト名が短縮される長さを設定します。指定されていないか "auto" に設定されている場合、リポジトリ内のパックオブジェクトの概数に基づいて適切な値が計算されます。これは、短縮されたオブジェクト名がしばらくの間一意のままであるのに十分なはずです。"no" に設定されている場合、短縮は行われず、オブジェクト名は全長で表示されます。最小の長さは4です。

core.maxTreeDepth

ツリーのトラバース中に Git が再帰的に処理する最大深度です(例:"a/b/cde/f" の深さは 4 です)。これは、Git がクリーンに中止できるようにするためのフェールセーフであり、一般的に調整する必要はありません。Git が MSVC でコンパイルされている場合、デフォルトは 512 です。それ以外の場合は、デフォルトは 2048 です。

credential.helper

ユーザー名またはパスワードの資格情報が必要な場合に呼び出される外部ヘルパーを指定します。ヘルパーは外部ストレージを参照して、ユーザーに資格情報の入力を求めるのを回避できます。通常は、可能な引数を含む資格情報ヘルパーの名前ですが、引数を含む絶対パス、または `!` を先頭に付けたシェルコマンドでもかまいません。

複数のヘルパーを定義できることに注意してください。詳細と例については、gitcredentials[7] を参照してください。

credential.interactive

デフォルトでは、Git と設定されている資格情報ヘルパーは、新しい資格情報が必要な場合にユーザー入力を求めます。これらのヘルパーの多くは、資格情報がまだ有効であれば、保存されている資格情報に基づいて成功します。Gitからのユーザーインタラクティブの可能性を回避するには、`credential.interactive=false` を設定します。一部の資格情報ヘルパーもこのオプションを尊重します。

credential.useHttpPath

資格情報を取得する際、http または https URL の "path" コンポーネントを重要であると見なします。デフォルトは `false` です。詳細については、gitcredentials[7] を参照してください。

credential.username

ネットワーク認証でユーザー名が設定されていない場合、デフォルトでこのユーザー名を使用します。以下の credential.<context>.* と gitcredentials[7] を参照してください。

credential.<url>.*

上記の credential.* オプションのいずれかを、一部の資格情報に選択的に適用できます。たとえば、"credential.https://example.com.username" は、example.com への https 接続に対してのみデフォルトのユーザー名を設定します。URL の照合方法の詳細については、gitcredentials[7] を参照してください。

credentialCache.ignoreSIGHUP

git-credential-cache—​daemon に SIGHUP を無視し、終了しないように指示します。

credentialStore.lockTimeoutMS

git-credential-store が資格情報ファイルのロックを試行する際の再試行時間(ミリ秒単位)。0 の値はまったく再試行しないことを意味し、-1 は無期限に再試行することを意味します。デフォルトは 1000(つまり、1 秒間再試行)です。

diff.autoRefreshIndex

作業ツリーファイルと比較するために `git diff` を使用する場合、stat のみの変更を 変更済みと見なさないでください。代わりに、`git update-index --refresh` を実行して、作業ツリー内のコンテンツがインデックス内のコンテンツと一致するパスのキャッシュされた stat 情報を更新します。このオプションのデフォルトは `true` です。これは `git diff` Porcelain のみに影響し、`git diff-files` などのより低レベルの `diff` コマンドには影響しません。

diff.dirstat

git-diff[1] などに対する `--dirstat` オプションのデフォルトの動作を指定する `--dirstat` パラメータのカンマ区切りリストです。デフォルトはコマンドラインでオーバーライドできます(`--dirstat=<param1,param2,...>` を使用)。(`diff.dirstat` で変更されていない場合の)フォールバックデフォルトは `changes,noncumulative,3` です。次のパラメータを使用できます。

changes

ソースから削除された行、または宛先に追加された行をカウントすることで、dirstat 数を計算します。ファイル内の純粋なコードの移動量は無視されます。つまり、ファイル内の行を並べ替えることは、他の変更ほどカウントされません。パラメータが指定されていない場合のデフォルトの動作です。

lines

通常の行ベースの diff 解析を実行し、削除/追加された行数を合計することで、dirstat 数を計算します。(バイナリファイルの場合、バイナリファイルには行の自然な概念がないため、代わりに 64 バイトのチャンクをカウントします)。これは `changes` 動作よりも高価な `--dirstat` 動作ですが、ファイル内の並べ替えられた行を他の変更と同じくらいカウントします。結果の出力は、他の `--*stat` オプションから取得したものと一貫しています。

files

変更されたファイル数を数えることで、dirstat数値を計算します。変更された各ファイルは、dirstat分析において均等にカウントされます。これは、ファイルの内容を全く調べる必要がないため、計算コストが最も低い--dirstatの動作です。

cumulative

子ディレクトリの変更を親ディレクトリにもカウントします。cumulativeを使用する場合、報告されるパーセンテージの合計は100%を超える可能性があることに注意してください。デフォルト(非累積)の動作は、noncumulativeパラメータで指定できます。

<limit>

整数パラメータは、カットオフパーセント(デフォルトは3%)を指定します。このパーセンテージ未満の変更に寄与するディレクトリは、出力に表示されません。

例:以下は、変更されたファイルをカウントし、変更されたファイルの総量の10%未満のディレクトリを無視し、親ディレクトリに子ディレクトリの数を累積します:files,10,cumulative

diff.statNameWidth

--stat出力におけるファイル名部分の幅を制限します。設定されている場合、format-patchを除く、--stat出力を生成するすべてのコマンドに適用されます。

diff.statGraphWidth

--stat出力におけるグラフ部分の幅を制限します。設定されている場合、format-patchを除く、--stat出力を生成するすべてのコマンドに適用されます。

diff.context

デフォルトの3行ではなく、<n>行のコンテキストを含むdiffを生成します。この値は-Uオプションによってオーバーライドされます。

diff.interHunkContext

指定された行数まで、diffの塊間のコンテキストを表示し、互いに近い塊を融合します。この値は、--inter-hunk-contextコマンドラインオプションのデフォルトとして機能します。

diff.external

この設定変数が設定されている場合、内部のdiff機構ではなく、指定されたコマンドを使用してdiff生成が行われます。`GIT_EXTERNAL_DIFF`環境変数で上書きできます。コマンドは、git[1]の「git Diffs」で説明されているように、パラメータと共に呼び出されます。注:ファイルのサブセットでのみ外部diffプログラムを使用する場合は、代わりにgitattributes[5]を使用することを検討してください。

diff.trustExitCode

このブール値がtrueに設定されている場合、diff.externalコマンドは、入力ファイルが等しいとみなす場合は終了コード0を、異なるものとみなす場合は終了コード1を返すことが期待されます(diff(1)と同様)。デフォルトのfalseに設定されている場合、コマンドは等しさに関係なく終了コード0を返すことが期待されます。その他の終了コードは、Gitが致命的なエラーを報告する原因となります。

diff.ignoreSubmodules

--ignore-submodulesのデフォルト値を設定します。これは、git diff-filesなどの下位レベルのdiffコマンドではなく、git diff Porcelainのみに影響することに注意してください。git checkoutgit switchも、未コミットの変更を報告する際にこの設定を尊重します。これをallに設定すると、status.submoduleSummaryが設定されている場合に、git commitgit statusによって通常表示されるサブモジュールのサマリーが無効になります(ただし、--ignore-submodulesコマンドラインオプションでオーバーライドされる場合を除きます)。git submoduleコマンドはこの設定の影響を受けません。デフォルトでは、追跡されていないサブモジュールは無視されるように、untrackedに設定されています。

diff.mnemonicPrefix

設定されている場合、git diffは、比較対象に応じて標準の "a/" と "b/" とは異なるプレフィックスペアを使用します。この設定が有効な場合、逆diff出力もプレフィックスの順序を入れ替えます。

git diff

(i)ndexと(w)ork treeを比較します。

git diff HEAD

(c)ommitと(w)ork treeを比較します。

git diff --cached

(c)ommitと(i)ndexを比較します。

git diff HEAD:file1 file2

(o)bjectと(w)ork treeエンティティを比較します。

git diff --no-index a b

2つの非Gitのもの(1)と(2)を比較します。

diff.noPrefix

設定されている場合、git diffはソースまたは宛先のプレフィックスを表示しません。

diff.srcPrefix

設定されている場合、git diffはこのソースプレフィックスを使用します。デフォルトは "a/" です。

diff.dstPrefix

設定されている場合、git diffはこの宛先プレフィックスを使用します。デフォルトは "b/" です。

diff.relative

trueに設定されている場合、git diffはディレクトリ外の変更を表示せず、現在のディレクトリを基準としたパス名を表示します。

diff.orderFile

diff内でファイルをソートする方法を示すファイルです。詳細は、git-diff[1]-Oオプションを参照してください。diff.orderFileが相対パス名の場合、作業ツリーの一番上から相対パスとして扱われます。

diff.renameLimit

コピー/リネーム検出の網羅的な部分で考慮するファイル数です。git diffオプション-lと同等です。設定されていない場合、現在のデフォルト値は1000です。リネーム検出が無効になっている場合、この設定は効果がありません。

diff.renames

Gitがリネームを検出する方法と、検出するかどうか。 "false"に設定すると、リネーム検出が無効になります。"true"に設定すると、基本的なリネーム検出が有効になります。"copies"または"copy"に設定すると、Gitはコピーも検出します。デフォルトはtrueです。これは、git-diff[1]git-log[1]のようなgit diff Porcelainのみに影響し、git-diff-files[1]などの下位レベルのコマンドには影響しないことに注意してください。

diff.suppressBlankEmpty

空の出力行の前にスペースを印刷するという標準の動作を抑制するブール値です。デフォルトはfalseです。

diff.submodule

サブモジュールでの違いが表示される形式を指定します。"short"形式は、範囲の開始と終了時点のコミット名のみを表示します。"log"形式は、git-submodule[1]summaryのように、範囲内のコミットをリストします。"diff"形式は、サブモジュールの変更された内容のインラインdiffを表示します。デフォルトは"short"です。

diff.wordRegex

単語単位の差分計算を行う際に、「単語」を決定するために使用されるPOSIX拡張正規表現です。正規表現に一致する文字列は「単語」であり、その他の文字は無視可能な空白です。

diff.<driver>.command

カスタムdiffドライバコマンド。詳細はgitattributes[5]を参照してください。

diff.<driver>.trustExitCode

このブール値がtrueに設定されている場合、diff.<driver>.commandコマンドは、入力ファイルが等しいとみなす場合は終了コード0を、異なるものとみなす場合は終了コード1を返すことが期待されます(diff(1)と同様)。デフォルトのfalseに設定されている場合、コマンドは等しさに関係なく終了コード0を返すことが期待されます。その他の終了コードは、Gitが致命的なエラーを報告する原因となります。

diff.<driver>.xfuncname

diffドライバがハンクヘッダーを認識するために使用する正規表現です。組み込みパターンも使用できます。詳細はgitattributes[5]を参照してください。

diff.<driver>.binary

このオプションをtrueに設定して、diffドライバにファイルをバイナリとして扱うようにします。詳細はgitattributes[5]を参照してください。

diff.<driver>.textconv

diffドライバがファイルのテキスト変換バージョンを生成するために呼び出すコマンドです。変換の結果は、人間が読めるdiffを生成するために使用されます。詳細はgitattributes[5]を参照してください。

diff.<driver>.wordRegex

diffドライバが行内の単語を分割するために使用する正規表現です。詳細はgitattributes[5]を参照してください。

diff.<driver>.cachetextconv

このオプションをtrueに設定して、diffドライバにテキスト変換の出力をキャッシュさせるようにします。詳細はgitattributes[5]を参照してください。

  • araxis

  • bc

  • codecompare

  • deltawalker

  • diffmerge

  • diffuse

  • ecmerge

  • emerge

  • examdiff

  • guiffy

  • gvimdiff

  • kdiff3

  • kompare

  • meld

  • nvimdiff

  • opendiff

  • p4merge

  • smerge

  • tkdiff

  • vimdiff

  • vscode

  • winmerge

  • xxdiff

diff.indentHeuristic

パッチを読みやすくするためにdiffの塊の境界をシフトするというデフォルトのヒューリスティックを無効にするには、このオプションをfalseに設定します。

diff.algorithm

diffアルゴリズムを選択します。バリエーションは以下のとおりです。

defaultmyers

基本的な貪欲diffアルゴリズムです。現在、これがデフォルトです。

minimal

最小限のdiffが生成されるようにするために、余分な時間を費やします。

patience

パッチを生成する際に「patience diff」アルゴリズムを使用します。

histogram

このアルゴリズムは、patienceアルゴリズムを拡張して、「低頻度の共通要素をサポート」します。

diff.wsErrorHighlight

diffのcontextold、またはnew行の空白エラーを強調表示します。複数の値はカンマで区切られ、noneは以前の値をリセットし、defaultはリストをnewにリセットし、allold,new,contextの略記です。空白エラーはcolor.diff.whitespaceで色付けされます。コマンドラインオプション--ws-error-highlight=<kind>はこの設定をオーバーライドします。

diff.colorMoved

有効な<mode>または真の値に設定されている場合、diff内の移動された行は異なる色で表示されます。有効なモードの詳細については、git-diff[1]--color-movedを参照してください。単にtrueに設定すると、デフォルトの色モードが使用されます。falseに設定すると、移動された行は色付けされません。

diff.colorMovedWS

移動された行が例えばdiff.colorMoved設定を使用して色付けされる場合、このオプションはスペースの処理方法を<mode>制御します。有効なモードの詳細については、git-diff[1]--color-moved-wsを参照してください。

diff.tool

git-difftool[1]で使用される差分ツールを制御します。この変数はmerge.toolで設定された値を上書きします。以下に、有効な組み込み値を示します。その他の値はカスタム差分ツールとして扱われ、対応するdifftool.<tool>.cmd変数の定義が必要です。

diff.guitool

-g/--guiフラグが指定された場合にgit-difftool[1]で使用される差分ツールを制御します。この変数はmerge.guitoolで設定された値を上書きします。以下に、有効な組み込み値を示します。その他の値はカスタム差分ツールとして扱われ、対応するdifftool.<guitool>.cmd変数の定義が必要です。

difftool.<tool>.cmd

指定された差分ツールを起動するコマンドを指定します。指定されたコマンドは、以下の変数が使用可能なシェルで評価されます。LOCALは差分の前画像の内容を含む一時ファイルの名前に設定され、REMOTEは差分の後画像の内容を含む一時ファイルの名前に設定されます。

git-difftool[1]--tool=<tool>オプションの詳細を参照してください。

difftool.<tool>.path

指定されたツールのパスを上書きします。ツールがPATHにない場合に便利です。

difftool.trustExitCode

起動された差分ツールがゼロ以外の終了ステータスを返した場合、difftoolを終了します。

git-difftool[1]--trust-exit-codeオプションの詳細を参照してください。

difftool.prompt

差分ツールの起動前にプロンプトを表示します。

difftool.guiDefault

デフォルトでdiff.guitoolを使用するにはtrueを、DISPLAY環境変数の値の有無に応じてdiff.guitoolまたはdiff.toolを選択するにはautoを設定します。デフォルトはfalseで、diff.guitoolを使用するには--gui引数を明示的に指定する必要があります。

extensions.objectFormat

使用するハッシュアルゴリズムを指定します。許容される値はsha1sha256です。指定しない場合、sha1が想定されます。core.repositoryFormatVersionが1でない限り、このキーを指定することはエラーです。

この設定はgit-init[1]またはgit-clone[1]によってのみ設定する必要があります。初期化後に変更しようとすると機能せず、診断が困難な問題が発生します。

extensions.compatObjectFormat

使用する互換性のあるハッシュアルゴリズムを指定します。許容される値はsha1sha256です。指定された値はextensions.objectFormatの値と異なる必要があります。これにより、objectFormatがこのcompatObjectFormatと一致するGitリポジトリ間のクライアントレベルの相互運用性が可能になります。特に、完全に実装されると、objectFormatがcompatObjectFormatと一致するリポジトリからのプッシュとプルが可能になります。また、objectFormatでエンコードされたOIDに加えて、compatObjectFormatでエンコードされたOIDを使用して、ローカルでオブジェクトを指定することもできます。

extensions.refStorage

使用する参照ストレージ形式を指定します。許容される値は次のとおりです。

  • files: packed-refsを含む個別のファイル。これがデフォルトです。

  • reftable: reftable形式。この形式は実験的なもので、内部構造は変更される可能性があります。

core.repositoryFormatVersionが1でない限り、このキーを指定することはエラーです。

この設定はgit-init[1]またはgit-clone[1]によってのみ設定する必要があります。初期化後に変更しようとすると機能せず、診断が困難な問題が発生します。

extensions.worktreeConfig

有効にすると、ワークツリーは$GIT_COMMON_DIR/configファイルに加えて$GIT_DIR/config.worktreeファイルから設定を読み込みます。メインのワークツリーでは$GIT_COMMON_DIR$GIT_DIRは同じですが、その他のワークツリーでは$GIT_DIR$GIT_COMMON_DIR/worktrees/<id>/になります。config.worktreeファイルの設定は、他の設定ファイルの設定を上書きします。

extensions.worktreeConfigを有効にする場合は、必要に応じて、共通の設定ファイルからメインのワークツリーのconfig.worktreeファイル(存在する場合)に特定の値を移動する必要があります。

  • core.worktree$GIT_COMMON_DIR/configから$GIT_COMMON_DIR/config.worktreeに移動する必要があります。

  • core.bareがtrueの場合、$GIT_COMMON_DIR/configから$GIT_COMMON_DIR/config.worktreeに移動する必要があります。

    各ワークツリーのカスタマイズ可能なsparse-checkout設定に応じて、core.sparseCheckoutcore.sparseCheckoutConeの場所を調整することもできます。デフォルトでは、git sparse-checkoutビルトインはextensions.worktreeConfigを有効にし、これらの設定値をワークツリーごとに割り当て、$GIT_DIR/info/sparse-checkoutファイルを使用して各ワークツリーのスパース性を個別に指定します。git-sparse-checkout[1]の詳細を参照してください。

    歴史的な理由から、extensions.worktreeConfigcore.repositoryFormatVersion設定に関係なく尊重されます。

fastimport.unpackLimit

git-fast-import[1]によってインポートされたオブジェクト数がこの制限を下回っている場合、オブジェクトは個別のオブジェクトファイルに展開されます。ただし、インポートされたオブジェクト数がこの制限に達するか、またはそれを超える場合、パックはパックとして保存されます。fast-importからのパックを保存すると、特にファイルシステムが遅い場合、インポート操作をより高速に完了できます。設定されていない場合、代わりにtransfer.unpackLimitの値が使用されます。

feature.*

feature.で始まる設定は、他の設定のグループのデフォルトを変更します。これらのグループは、Git開発者コミュニティによって推奨されるデフォルトとして作成され、変更される可能性があります。特に、新しい設定オプションが異なるデフォルトで追加される可能性があります。

feature.experimental

Gitの新機能であり、将来のデフォルトとして検討されている設定オプションを有効にします。ここに含まれる設定は、マイナーバージョンの更新を含む各リリースで追加または削除される可能性があります。これらの設定は非常に新しいものであるため、意図しない相互作用が発生する可能性があります。実験的機能に関するフィードバックを提供することに関心がある場合は、この設定を有効にしてください。新しいデフォルト値は次のとおりです。

  • fetch.negotiationAlgorithm=skippingは、一度にスキップするコミット数を増やすことでフェッチネゴシエーション時間を改善し、ラウンドトリップ数を減らす可能性があります。

  • pack.useBitmapBoundaryTraversal=trueは、少ないオブジェクトを歩くことでビットマップトラバーサル時間を改善する可能性があります。

  • pack.allowPackReuse=multiは、1つのパックだけでなく複数のパックからオブジェクトを再利用することで、パックの作成にかかる時間を短縮する可能性があります。

feature.manyFiles

作業ディレクトリに多くのファイルがあるリポジトリを最適化する設定オプションを有効にします。多くのファイルでは、git statusgit checkoutなどのコマンドが遅くなる可能性があり、これらの新しいデフォルトによりパフォーマンスが向上します。

  • index.skipHash=trueは、末尾のチェックサムを計算しないことでインデックスの書き込みを高速化します。これにより、2.13.0より前のGitバージョンはインデックスの解析を拒否し、2.40.0より前のGitバージョンはgit fsck中に破損したインデックスを報告することに注意してください。

  • index.version=4は、インデックスでパスプレフィックス圧縮を有効にします。

  • core.untrackedCache=trueは、未追跡キャッシュを有効にします。この設定は、お使いのマシンでmtimeが機能していることを前提としています。

fetch.recurseSubmodules

このオプションは、git fetch(およびgit pullの基本となるfetch)が、設定されたサブモジュールに再帰的にフェッチするかどうかを制御します。このオプションは、ブール値またはon-demandに設定できます。ブール値に設定すると、trueに設定するとサブモジュールに無条件に再帰的にフェッチとプルを行い、falseに設定するとまったく再帰しないように動作が変わります。on-demandに設定すると、フェッチとプルは、そのスーパープロジェクトがサブモジュールの参照を更新するコミットを取得した場合にのみ、設定されたサブモジュールに再帰的に行われます。デフォルトはon-demand、またはsubmodule.recurseが設定されている場合はその値です。

fetch.fsckObjects

trueに設定されている場合、git-fetch-packはフェッチされたすべてのオブジェクトをチェックします。チェックされる内容についてはtransfer.fsckObjectsを参照してください。デフォルトはfalseです。設定されていない場合、代わりにtransfer.fsckObjectsの値が使用されます。

fetch.fsck.<msg-id>

fsck.<msg-id>のように動作しますが、git-fsck[1]ではなくgit-fetch-pack[1]によって使用されます。詳細については、fsck.<msg-id>のドキュメントを参照してください。

fetch.fsck.skipList

fsck.skipListのように動作しますが、git-fsck[1]ではなくgit-fetch-pack[1]によって使用されます。詳細については、fsck.skipListのドキュメントを参照してください。

fetch.unpackLimit

Gitネイティブ転送を介してフェッチされたオブジェクト数がこの制限を下回っている場合、オブジェクトは個別のオブジェクトファイルに展開されます。ただし、受信したオブジェクト数がこの制限に達するか、またはそれを超える場合、不足しているデルタベースを追加した後に、受信したパックはパックとして保存されます。プッシュからのパックを保存すると、特にファイルシステムが遅い場合、プッシュ操作をより高速に完了できます。設定されていない場合、代わりにtransfer.unpackLimitの値が使用されます。

fetch.prune

trueの場合、fetchはコマンドラインで--pruneオプションが指定された場合と同じように動作します。remote.<name>.prunegit-fetch[1]のPRUNINGセクションも参照してください。

fetch.pruneTags

trueの場合、すでに設定されていない場合、プルーニング時にrefs/tags/*:refs/tags/* refspecが指定された場合と同じようにfetchが動作します。これにより、このオプションとfetch.pruneの両方を設定して、上流の参照との1対1のマッピングを維持できます。remote.<name>.pruneTagsgit-fetch[1]のPRUNINGセクションも参照してください。

fetch.all

trueの場合、fetchは使用可能なすべてのリモートの更新を試みます。この動作は、--no-allを渡すか、フェッチするリモートを1つ以上明示的に指定することで上書きできます。デフォルトはfalseです。

fetch.output

参照更新ステータスの表示方法を制御します。有効な値はfullcompactです。デフォルト値はfullです。git-fetch[1]のOUTPUTセクションの詳細を参照してください。

fetch.negotiationAlgorithm

ローカルリポジトリ内のコミットに関する情報を、サーバーが送信するパックファイルの内容をネゴシエートする際に送信する方法を制御します。「consecutive」に設定すると、連続するコミットを1つずつ確認するアルゴリズムを使用します。「skipping」に設定すると、より高速に収束させるためにコミットをスキップするアルゴリズムを使用しますが、必要以上に大きなパックファイルになる可能性があります。「noop」に設定すると、情報をまったく送信しません。これにより、ほとんど確実に必要以上に大きなパックファイルになりますが、ネゴシエーションステップをスキップします。「default」に設定すると、以前に設定された設定を上書きし、デフォルトの動作を使用します。デフォルトは通常「consecutive」ですが、feature.experimentalがtrueの場合、「skipping」になります。不明な値が指定されると、git fetchはエラーを発生させます。

git-fetch[1]--negotiate-onlyオプションと--negotiation-tipオプションも参照してください。

fetch.showForcedUpdates

git-fetch[1]およびgit-pull[1]コマンドで--no-show-forced-updatesを有効にするには、falseに設定します。デフォルトはtrueです。

fetch.parallel

一度に並列実行されるフェッチ操作の最大数を指定します(git-fetch[1]--multipleオプションが有効な場合のサブレポジトリまたはリモート)。

0の値は、ある程度の妥当なデフォルト値を返します。設定されていない場合、デフォルトは1になります。

サブレポジトリの場合、この設定はsubmodule.fetchJobsコンフィグ設定を使用してオーバーライドできます。

fetch.writeCommitGraph

リモートからパックファイルをダウンロードするgit fetchコマンドを実行するたびにコミットグラフを書き込むには、trueに設定します。--splitオプションを使用すると、ほとんどの実行で既存のコミットグラフファイルの上に非常に小さなコミットグラフファイルが作成されます。場合によっては、これらのファイルがマージされ、書き込みに時間がかかることがあります。更新されたコミットグラフファイルがあると、git merge-basegit push -fgit log --graphなど、多くのGitコマンドのパフォーマンスが向上します。デフォルトはfalseです。

fetch.bundleURI

この値は、元のGitサーバーから増分フェッチを実行する前に、バンドルURIからGitオブジェクトデータをダウンロードするためのURIを格納します。これは、git-clone[1]--bundle-uriオプションの動作と同様です。指定されたバンドルURIが増分フェッチのために編成されたバンドルリストを含む場合、git clone --bundle-urifetch.bundleURI値を設定します。

この値を変更し、リポジトリにfetch.bundleCreationToken値がある場合は、新しいバンドルURIからフェッチする前に、そのfetch.bundleCreationToken値を削除してください。

fetch.bundleCreationToken

"creationToken"ヒューリスティックを使用するバンドルリストから増分的にフェッチするためにfetch.bundleURIを使用する場合、このコンフィグ値は、ダウンロードされたバンドルの最大creationToken値を格納します。この値は、広告されているcreationTokenがこの値よりも厳密に大きい場合、将来バンドルをダウンロードしないようにするために使用されます。

creation token値は、特定のバンドルURIを提供するプロバイダーによって選択されます。fetch.bundleURIのURIを変更する場合は、フェッチする前にfetch.bundleCreationToken値の値を削除してください。

filter.<driver>.clean

チェックイン時にワークツリーファイルの内容をブロブに変換するために使用されるコマンドです。詳細はgitattributes[5]を参照してください。

filter.<driver>.smudge

チェックアウト時にブロブオブジェクトの内容をワークツリーファイルに変換するために使用されるコマンドです。詳細はgitattributes[5]を参照してください。

format.attach

format-patchのデフォルトとしてmultipart/mixed添付ファイルを有効にします。値は二重引用符で囲まれた文字列にすることもでき、添付ファイルをデフォルトとして有効にし、値を境界として設定します。git-format-patch[1]の--attachオプションを参照してください。以前の値を無効にするには、空文字列に設定します。

format.from

format-patchへの--fromオプションのデフォルト値を提供します。ブール値、または名前とメールアドレスを受け入れます。falseの場合、format-patchは--no-fromをデフォルトで使用し、パッチメールの「From:」フィールドにコミットの作者を直接使用します。trueの場合、format-patchは--fromをデフォルトで使用し、パッチメールの「From:」フィールドにコミッターのIDを使用し、異なる場合はパッチメールの本文に「From:」フィールドを含めます。ブール値以外の値に設定すると、format-patchはコミッターのIDの代わりにその値を使用します。デフォルトはfalseです。

format.forceInBodyFrom

format-patchへの--[no-]force-in-body-fromオプションのデフォルト値を提供します。デフォルトはfalseです。

format.numbered

パッチの件名にシーケンス番号を有効または無効にすることができるブール値です。デフォルトは「auto」で、パッチが2つ以上ある場合にのみ有効になります。「true」または「false」に設定することにより、すべてのメッセージに対して有効または無効にすることができます。git-format-patch[1]の--numberedオプションを参照してください。

format.headers

メールで送信されるパッチに含める追加のメールヘッダーです。git-format-patch[1]を参照してください。

format.to
format.cc

メールで送信されるパッチに含める追加の受信者です。git-format-patch[1]の--toオプションと--ccオプションを参照してください。

format.subjectPrefix

format-patchのデフォルトでは、[PATCH]という件名プレフィックスが付いたファイルが出力されます。この変数を使用して、そのプレフィックスを変更します。

format.coverFromDescription

format-patchがブランチの説明を使用してカバーレターのどの部分を移入するかを決定するデフォルトモードです。git-format-patch[1]--cover-from-descriptionオプションを参照してください。

format.signature

format-patchのデフォルトでは、Gitのバージョン番号を含む署名が出力されます。この変数を使用して、そのデフォルトを変更します。署名の生成を抑制するには、この変数を空文字列("")に設定します。

format.signatureFile

format.signatureとまったく同じように機能しますが、この変数で指定されたファイルの内容が署名として使用されます。

format.suffix

format-patchのデフォルトでは、サフィックス.patchが付いたファイルが出力されます。この変数を使用して、そのサフィックスを変更します(必要な場合はドットを含めてください)。

format.encodeEmailHeaders

非ASCII文字を含むメールヘッダーを、メール送信のために「Q-encoding」(RFC 2047で説明)でエンコードします。デフォルトはtrueです。

format.pretty

log/show/whatchangedコマンドのデフォルトのprettyフォーマットです。git-log[1]git-show[1]git-whatchanged[1]を参照してください。

format.thread

git format-patchのデフォルトのスレッディングスタイルです。ブール値、またはshallowまたはdeepにすることができます。shallowスレッディングは、すべてのメールをシリーズの先頭に返信します。先頭は、カバーレター、--in-reply-to、最初のメールからこの順序で選択されます。deepスレッディングは、すべてのメールを前のメールに返信します。ブール値trueはshallowと同じであり、false値はスレッディングを無効にします。

format.signOff

format-patchの-s/--signoffオプションをデフォルトで有効にすることができるブール値です。**注:** Signed-off-byトレーラーをパッチに追加することは、意識的な行為であり、同じオープンソースライセンスの下でこの作業を送信する権利を証明することを意味します。詳細は、SubmittingPatchesドキュメントを参照してください。

format.coverLetter

format-patchが呼び出されたときにカバーレターを生成するかどうかを制御するブール値ですが、パッチが2つ以上ある場合にのみカバーレターを生成するように「auto」に設定することもできます。デフォルトはfalseです。

format.outputDirectory

現在の作業ディレクトリの代わりに、結果ファイルを保存するカスタムディレクトリを設定します。すべてのディレクトリコンポーネントが作成されます。

format.filenameMaxLength

format-patchコマンドによって生成される出力ファイル名の最大長です。デフォルトは64です。--filename-max-length=<n>コマンドラインオプションでオーバーライドできます。

format.useAutoBase

format-patchの--base=autoオプションをデフォルトで有効にすることができるブール値です。適切なベースが利用可能な場合は--base=autoを有効にすることを許可しますが、そうでない場合はフォーマットが終了せずにベース情報の追加をスキップするように「whenAble」に設定することもできます。

format.notes

format-patchへの--notesオプションのデフォルト値を提供します。ブール値、またはメモを取得する場所を指定するrefを受け入れます。falseの場合、format-patchは--no-notesをデフォルトで使用します。trueの場合、format-patchは--notesをデフォルトで使用します。ブール値以外の値に設定すると、format-patchは--notes=<ref>をデフォルトで使用します。ここでrefはブール値以外の値です。デフォルトはfalseです。

refs/notes/trueというrefを使用する場合は、そのリテラルを使用してください。

複数のnotes refを含めることができるように、この設定を複数回指定できます。その場合、渡された複数の--[no-]notes[=]オプションと同様に動作します。つまり、trueの値はデフォルトのメモを表示し、<ref>の値はそのnotes refからのメモも表示し、falseの値は以前の設定を無効にしてメモを表示しません。

例えば、

[format]
	notes = true
	notes = foo
	notes = false
	notes = bar

refs/notes/barからのメモのみを表示します。

format.mboxrd

--stdoutが使用されている場合に堅牢な"mboxrd"形式を有効にして"^>+From "行をエスケープするブール値です。

format.noprefix

設定されている場合、パッチにソースまたはデスティネーションのプレフィックスを表示しません。これは、git diffで使用されるdiff.noprefixオプションと同等ですが(ただし、format-patchでは尊重されません)、この設定を行うと、生成するパッチの受信者は-p0オプションを使用して適用する必要があります。

fsck.<msg-id>

fsck実行中に、現在のGitバージョンでは生成されず、transfer.fsckObjectsが設定されている場合にも転送されないレガシーデータに関する問題が検出される場合があります。この機能は、このようなデータを含むレガシーリポジトリを扱うことを目的としています。

fsck.<msg-id>の設定はgit-fsck[1]によって認識されますが、このようなデータのプッシュを受け入れるにはreceive.fsck.<msg-id>を設定し、クローンまたはフェッチするにはfetch.fsck.<msg-id>を設定します。

簡潔にするため、以降のドキュメントではfsck.*について説明しますが、対応するreceive.fsck.*およびfetch.fsck.*変数にも同じことが当てはまります。

color.uicore.editorなどの変数とは異なり、receive.fsck.<msg-id>およびfetch.fsck.<msg-id>変数は、設定されていない場合、fsck.<msg-id>設定値を引き継ぎません。異なる状況で同じfsck設定を一貫して構成するには、これら3つの変数すべてに同じ値を設定する必要があります。

fsck.<msg-id>が設定されている場合、エラーを警告に、警告をエラーに変更できます。<msg-id>はfsckメッセージID、値はerrorwarnignoreのいずれかです。便宜上、fsckはメッセージIDをエラー/警告の前に付加します。例えば、「missingEmail: invalid author/committer line - missing email」の場合、fsck.missingEmail = ignoreを設定すると、その問題は非表示になります。

一般的に、問題のあるオブジェクトの種類を無視するリストを作成する代わりに、fsck.skipListを使用して問題のある既存のオブジェクトを列挙する方が優れています。後者の方法では、同じ種類の新しい問題を見逃す可能性があるためです。

未知のfsck.<msg-id>値を設定すると、fsckは異常終了しますが、receive.fsck.<msg-id>およびfetch.fsck.<msg-id>で同じことを行っても、Gitは警告するだけです。

サポートされている<msg-id>の値については、git-fsck[1]の「Fsck Messages」セクションを参照してください。

fsck.skipList

非致命的エラーがあり、無視する必要があるオブジェクト名(1行につき1つの非省略SHA-1)のリストへのパス。Git 2.20以降のバージョンでは、コメント(#)、空行、先頭と末尾の空白は無視されます。古いバージョンでは、SHA-1以外のものはエラーになります。

この機能は、無効なコミッターメールアドレスなど、安全に無視できるエラーを含む初期コミットが存在するプロジェクトを、そのエラーがあっても受け入れる必要がある場合に役立ちます。注:この設定では、破損したオブジェクトをスキップすることはできません。

fsck.<msg-id>と同様に、この変数には対応するreceive.fsck.skipListfetch.fsck.skipListのバリアントがあります。

color.uicore.editorなどの変数とは異なり、receive.fsck.skipListおよびfetch.fsck.skipList変数は、設定されていない場合、fsck.skipList設定値を引き継ぎません。異なる状況で同じfsck設定を一貫して構成するには、これら3つの変数すべてに同じ値を設定する必要があります。

Git 2.20より前の古いバージョンでは、オブジェクト名のリストはソートする必要があると記載されていました。これは必須ではありませんでした。オブジェクト名は任意の順序で表示できますが、リストを読み取る際にリストがソートされているかどうかを追跡して、内部のバイナリ検索実装で作業を削減していました。リストが非常に巨大でない限り、リストを事前にソートする必要はありませんでした。Git 2.20以降はハッシュ実装が使用されるため、リストを事前にソートする必要がなくなりました。

fsmonitor.allowRemote

デフォルトでは、fsmonitorデーモンはネットワークマウントされたリポジトリでの動作を拒否します。fsmonitor.allowRemotetrueに設定すると、この動作が無効になります。core.fsmonitortrueに設定されている場合のみ有効です。

fsmonitor.socketDir

このMac OS固有のオプションは、設定されている場合、fsmonitorデーモンと様々なGitコマンド間の通信に使用されるUnixドメインソケットを作成するディレクトリを指定します。このディレクトリは、ネイティブのMac OSファイルシステム上に存在する必要があります。core.fsmonitortrueに設定されている場合のみ有効です。

gc.aggressiveDepth

git gc --aggressiveで使用されるデルタ圧縮アルゴリズムで使用されるdepthパラメータ。デフォルトは50で、--aggressiveを使用しない場合の--depthオプションのデフォルト値と同じです。

詳細については、git-repack[1]--depthオプションのドキュメントを参照してください。

gc.aggressiveWindow

git gc --aggressiveで使用されるデルタ圧縮アルゴリズムで使用されるウィンドウサイズパラメータ。デフォルトは250で、デフォルトの--window値である10よりもはるかに大きなウィンドウサイズです。

詳細については、git-repack[1]--windowオプションのドキュメントを参照してください。

gc.auto

リポジトリにこの数よりも多くの分離オブジェクトがある場合、git gc --autoはそれらをパックします。一部のPorcelainコマンドは、このコマンドを使用して、時々軽量のガベージコレクションを実行します。デフォルト値は6700です。

これを0に設定すると、分離オブジェクトの数に基づく自動パッキングだけでなく、gc.autoPackLimitなど、git gc --autoが作業の有無を判断するために使用するその他のヒューリスティックも無効になります。

gc.autoPackLimit

*.keepファイルでマークされていないパックがリポジトリにこの数よりも多く存在する場合、git gc --autoはそれらを1つの大きなパックに統合します。デフォルト値は50です。これを0に設定すると無効になります。gc.autoを0に設定しても無効になります。

以下のgc.bigPackThreshold設定変数を参照してください。使用されている場合、自動パック制限の動作に影響します。

gc.autoDetach

システムがサポートしている場合、git gc --autoを直ちに返し、バックグラウンドで実行します。デフォルトはtrueです。この設定変数は、maintenance.autoDetachが設定されていない場合のフォールバックとして機能します。

gc.bigPackThreshold

0以外の場合、git gcの実行時に、この制限よりも大きいすべての非クラフトパックが保持されます。これは、最大のパックだけでなく、しきい値を満たすすべての非クラフトパックが保持される点を除いて、--keep-largest-packと非常に似ています。デフォルトはゼロです。km、またはgの一般的な単位サフィックスがサポートされています。

保持されるパック数がgc.autoPackLimitを超える場合、この設定変数は無視され、ベースパック以外のすべてのパックが再パックされます。その後、パック数はgc.autoPackLimitを下回り、gc.bigPackThresholdが再び尊重されるようになります。

git repackをスムーズに実行するために推定されるメモリ量が不足しており、gc.bigPackThresholdが設定されていない場合、最大のパックも除外されます(これは--keep-largest-packを使用してgit gcを実行することと同等です)。

gc.writeCommitGraph

trueの場合、git-gc[1]の実行時にコミットグラフファイルが書き換えられます。git gc --autoを使用する場合、ハウスキーピングが必要な場合はコミットグラフが更新されます。デフォルトはtrueです。git-commit-graph[1]を参照してください。

gc.logExpiry

gc.logファイルが存在する場合、そのファイルがgc.logExpiryよりも古い場合を除き、git gc --autoはその内容を出力してステータス0で終了します。デフォルトは "1.day" です。値の指定方法については、gc.pruneExpireを参照してください。

gc.packRefs

リポジトリでgit pack-refsを実行すると、HTTPなどのダムトランスポートを介して、1.5.1.2より前のGitバージョンではクローンできなくなります。この変数は、git gcgit pack-refsを実行するかどうかを決定します。これをnotbareに設定すると、すべての非ベアリポジトリで有効になります。ブール値にも設定できます。デフォルトはtrueです。

gc.cruftPacks

到達不能なオブジェクトを分離オブジェクトとしてではなく、クラフトパック(git-repack[1]を参照)に格納します。デフォルトはtrueです。

gc.maxCruftSize

再パック時の新しいクラフトパックのサイズを制限します。--max-cruft-sizeに加えて指定された場合、コマンドラインオプションが優先されます。git-repack[1]--max-cruft-sizeオプションを参照してください。

gc.pruneExpire

git gcが実行されると、prune --expire 2.weeks.ago(およびgc.cruftPacksまたは--cruftを使用してクラフトパックを使用する場合はrepack --cruft --cruft-expiration 2.weeks.ago)が呼び出されます。この設定変数を使用して猶予期間を上書きします。"now"という値を使用すると、この猶予期間を無効にして到達不能なオブジェクトをすぐに削除し、"never"を使用すると削除を抑制できます。この機能は、git gcが別のプロセスがリポジトリに書き込んでいるのと同時に実行される場合の破損を防ぐのに役立ちます。git-gc[1]の「NOTES」セクションを参照してください。

gc.worktreePruneExpire

git gcが実行されると、git worktree prune --expire 3.months.agoが呼び出されます。この設定変数を使用して、異なる猶予期間を設定できます。"now"という値を使用すると、猶予期間を無効にして$GIT_DIR/worktreesをすぐに削除し、"never"を使用すると削除を抑制できます。

gc.reflogExpire
gc.<pattern>.reflogExpire

git reflog expireはこの時間よりも古いreflogエントリを削除します。デフォルトは90日です。"now"という値を使用すると、すべてのエントリがすぐに期限切れになり、"never"を使用すると、期限切れが完全に抑制されます。中央に"<pattern>"(例:"refs/stash")がある場合、設定はその<pattern>に一致するrefsのみに適用されます。

gc.reflogExpireUnreachable
gc.<pattern>.reflogExpireUnreachable

git reflog expireはこの時間よりも古く、現在の先端から到達できないreflogエントリを削除します。デフォルトは30日です。"now"という値を使用すると、すべてのエントリがすぐに期限切れになり、"never"を使用すると、期限切れが完全に抑制されます。中央に"<pattern>"(例:"refs/stash")がある場合、設定はその<pattern>に一致するrefsのみに適用されます。

これらのタイプのエントリは、一般的にgit commit --amendまたはgit rebaseの使用によって作成され、修正またはリベースが行われる前のコミットです。これらの変更は現在のプロジェクトの一部ではないため、ほとんどのユーザーはそれらをより早く期限切れにしたいと考えており、デフォルトがgc.reflogExpireよりも積極的である理由です。

gc.recentObjectsHook

オブジェクトを削除するかどうかを検討する際に(クラフトパックを生成する場合でも、到達不能なオブジェクトを分離オブジェクトとして格納する場合でも)、シェルを使用して指定されたコマンドを実行します。その出力をオブジェクトIDとして解釈し、Gitはそれらを年齢に関係なく「最近の」オブジェクトとして扱います。それらのmtimesを「now」として扱うことで、出力に記載されているオブジェクト(およびその子孫)は、実際の年齢に関係なく保持されます。

出力は、1行に正確に1つの16進オブジェクトIDを含み、それ以外は何も含まれてはいけません。リポジトリに見つからないオブジェクトは無視されます。複数のフックがサポートされていますが、すべてが正常に終了する必要があります。そうでなければ、操作(クラフトパックの生成または到達不能なオブジェクトのアンパック)は停止されます。

gc.repackFilter

再パック時に、指定されたフィルターを使用して特定のオブジェクトを別のパックファイルに移動します。git-repack[1]--filter=<filter-spec>オプションを参照してください。

gc.repackFilterTo

リパック時にフィルタを使用する場合(gc.repackFilter参照)、指定された場所にフィルタリングされたオブジェクトを含むパックファイルが作成されます。 **警告:** 指定された場所は、例えばGitの代替機構を使用してアクセス可能である必要があります。アクセスできない場合、Gitはそのパックファイル内のオブジェクトにアクセスできず、リポジトリが破損していると見なされる可能性があります。 git-repack[1]--filter-to=<dir> オプションと、gitrepository-layout[5]objects/info/alternates セクションを参照してください。

gc.rerereResolved

以前に解決した競合マージの記録は、git rerere gcの実行時に、この期間分保存されます。「1.month.ago」など、より人間が読みやすい表記も使用できます。デフォルトは60日間です。git-rerere[1]を参照してください。

gc.rerereUnresolved

解決していない競合マージの記録は、git rerere gcの実行時に、この期間分保存されます。「1.month.ago」など、より人間が読みやすい表記も使用できます。デフォルトは15日間です。git-rerere[1]を参照してください。

gitcvs.commitMsgAnnotation

各コミットメッセージにこの文字列を追加します。この機能を無効にするには、空文字列に設定します。デフォルトは「via git-CVS emulator」です。

gitcvs.enabled

このリポジトリでCVSサーバーインターフェースを有効にするかどうか。git-cvsserver[1]を参照してください。

gitcvs.logFile

CVSサーバーインターフェースが様々な情報をログ出力するログファイルへのパス。git-cvsserver[1]を参照してください。

gitcvs.usecrlfattr

trueの場合、サーバーはファイルの改行変換属性を検索して使用する-kモードを決定します。属性によってGitがファイルをテキストとして扱うことが強制される場合、-kモードは空白のままになり、CVSクライアントはそれをテキストとして扱います。テキスト変換が抑制される場合、ファイルは-kbモードで設定され、クライアントが実行する可能性のある改行の変更が抑制されます。属性でファイルの種類を決定できない場合は、gitcvs.allBinaryが使用されます。gitattributes[5]を参照してください。

gitcvs.allBinary

gitcvs.usecrlfattrが正しい-kbモードを解決できない場合に使用されます。trueの場合、解決されていないすべてのファイルは-kbモードでクライアントに送信されます。これにより、クライアントはそれらをバイナリファイルとして扱い、それ以外の場合は行われる可能性のある改行の変更が抑制されます。「guess」に設定されている場合、ファイルの内容が調べられ、core.autocrlfと同様にバイナリかどうかが決定されます。

gitcvs.dbName

Gitリポジトリから取得したリビジョン情報をキャッシュするためにgit-cvsserverで使用されるデータベース。正確な意味は使用されるデータベースドライバによって異なります。SQLite(デフォルトドライバ)の場合、これはファイル名です。変数置換をサポートします(詳細についてはgit-cvsserver[1]を参照)。セミコロン(;)を含めることはできません。デフォルト:%Ggitcvs.%m.sqlite

gitcvs.dbDriver

使用するPerl DBIドライバ。ここでは使用可能なドライバを指定できますが、動作しない場合があります。git-cvsserverはDBD::SQLiteでテストされており、DBD::Pgでも動作すると報告されていますが、DBD::mysqlでは動作しないと報告されています。実験的な機能です。ダブルコロン(:)を含めることはできません。デフォルト:SQLitegit-cvsserver[1]を参照してください。

gitcvs.dbUser, gitcvs.dbPass

データベースのユーザー名とパスワード。SQLiteにはデータベースユーザーやパスワードの概念がないため、gitcvs.dbDriverを設定する場合にのみ役立ちます。gitcvs.dbUserは変数置換をサポートします(詳細についてはgit-cvsserver[1]を参照)。

gitcvs.dbTableNamePrefix

データベーステーブル名のプレフィックス。使用されるデータベーステーブル名に付加され、単一のデータベースを複数のリポジトリで使用することを可能にします。変数置換をサポートします(詳細についてはgit-cvsserver[1]を参照)。英数字以外の文字はアンダースコアに置き換えられます。

gitcvs.usecrlfattrgitcvs.allBinaryを除くすべてのgitcvs変数は、gitcvs.<access_method>.<varname>(ここでaccess_methodは「ext」と「pserver」のいずれか)として指定して、特定のアクセス方法のみに適用させることができます。

gitweb.category
gitweb.description
gitweb.owner
gitweb.url

gitweb[1]の説明を参照してください。

gitweb.avatar
gitweb.blame
gitweb.grep
gitweb.highlight
gitweb.patches
gitweb.pickaxe
gitweb.remote_heads
gitweb.showSizes
gitweb.snapshot

gitweb.conf[5]の説明を参照してください。

gpg.program

PGP署名を作成または検証する際に、$PATHにある"gpg"の代わりにこのカスタムプログラムを使用します。このプログラムは、GPGと同じコマンドラインインターフェースをサポートする必要があります。つまり、分離された署名を検証するには"gpg --verify $signature - <$file"を実行し、プログラムはコード0で終了することで有効な署名を知らせます。ASCIIアーマードの分離された署名を生成するには、"gpg -bsau $key"の標準入力に署名する内容を入力し、プログラムは結果を標準出力に出力する必要があります。

gpg.format

--gpg-signで署名する際に使用するキー形式を指定します。デフォルトは「openpgp」です。他の可能な値は「x509」、「ssh」です。

選択したgpg.formatに基づいて異なる署名形式については、gitformat-signature[5]を参照してください。

gpg.<format>.program

選択した署名形式に使用するプログラムをカスタマイズするために使用します(gpg.programgpg.formatを参照)。gpg.programは、gpg.openpgp.programのレガシーシノニムとして引き続き使用できます。gpg.x509.programのデフォルト値は「gpgsm」、gpg.ssh.programのデフォルト値は「ssh-keygen」です。

gpg.minTrustLevel

署名検証の最小信頼レベルを指定します。このオプションが設定されていない場合、マージ操作の署名検証には、少なくともmarginalの信頼レベルを持つキーが必要です。署名検証を実行するその他の操作には、少なくともundefinedの信頼レベルを持つキーが必要です。このオプションを設定すると、すべての操作に必要な信頼レベルが上書きされます。サポートされる値(重要度の昇順)

  • undefined

  • never

  • marginal

  • fully

  • ultimate

gpg.ssh.defaultKeyCommand

user.signingkeyが設定されておらず、ssh署名が要求された場合に実行されるコマンド。正常に終了すると、その出力の最初の行にkey::で始まる有効なssh公開キーが期待されます。これにより、user.signingKeyを静的に構成することが実際的でない場合に、正しい公開キーの動的な検索を行うスクリプトを使用できます。たとえば、キーやSSH証明書が頻繁にローテーションされる場合、または適切なキーの選択がGitでは不明な外部要因に依存する場合などです。

gpg.ssh.allowedSignersFile

信頼するssh公開キーを含むファイル。このファイルは、プリンシパルに続く1つ以上の行とssh公開キーで構成されます。例:user1@example.com,user2@example.com ssh-rsa AAAAX1... 詳細については、ssh-keygen(1)の「ALLOWED SIGNERS」を参照してください。プリンシパルはキーを識別するためだけに使用され、署名を検証する際に利用できます。

SSHには、gpgのような信頼レベルの概念がありません。有効な署名と信頼できる署名を区別するために、公開キーがallowedSignersFileにある場合、署名検証の信頼レベルはfullyに設定されます。それ以外の場合は、信頼レベルはundefinedになり、git verify-commit/tagは失敗します。

このファイルはリポジトリ外の場所に設定でき、各開発者は独自の信頼ストアを維持できます。中央リポジトリサーバーは、プッシュアクセスを持つsshキーからこのファイルを自動的に生成して、コードを検証することができます。企業環境では、このファイルは、開発者のsshキーを既に処理している自動化によってグローバルな場所で生成される可能性があります。

署名されたコミットのみを許可するリポジトリは、作業ツリーの最上位レベルからの相対パスを使用して、ファイルをリポジトリ自体に保存できます。これにより、既に有効なキーを持つコミッターのみがキーリング内のキーを追加または変更できます。

OpenSSH 8.8以降、このファイルでは、有効期限後と有効期限前のオプションを使用してキーの有効期間を指定できます。署名作成時に署名キーが有効であった場合、Gitは署名を有効とマークします。これにより、ユーザーは署名キーを変更しても、以前に作成された署名がすべて無効になることはありません。

cert-authorityオプション(ssh-keygen(1)の「CERTIFICATES」を参照)を使用したSSH CAキーも有効です。

gpg.ssh.revocationFile

SSH KRL、または取り消された公開キーのリスト(プリンシパルのプレフィックスなし)。詳細については、ssh-keygen(1)を参照してください。このファイルに公開キーが見つかった場合、常に信頼レベル「never」として扱われ、署名は無効として表示されます。

grep.lineNumber

trueに設定すると、デフォルトで-nオプションが有効になります。

grep.column

trueに設定すると、デフォルトで--columnオプションが有効になります。

grep.patternType

デフォルトの一致動作を設定します。basicextendedfixed、またはperlの値を使用すると、それぞれ--basic-regexp--extended-regexp--fixed-strings、または--perl-regexpオプションが有効になり、defaultの値を使用すると、grep.extendedRegexpオプションを使用してbasicextendedのどちらかを選択します。

grep.extendedRegexp

true に設定すると、--extended-regexp オプションがデフォルトで有効になります。このオプションは、grep.patternType オプションが default 以外の値に設定されている場合は無視されます。

grep.threads

使用する grep ワーカー スレッドの数です。設定されていない場合(または 0 に設定されている場合)、Git は使用可能な論理コア数と同じ数のスレッドを使用します。

grep.fullName

true に設定すると、--full-name オプションがデフォルトで有効になります。

grep.fallbackToNoIndex

true に設定すると、Git リポジトリの外で git grep が実行された場合、git grep --no-index にフォールバックします。デフォルトは false です。

gui.commitMsgWidth

git-gui[1] でのコミットメッセージウィンドウの幅を定義します。"75" がデフォルトです。

gui.diffContext

git-gui[1] が行う diff 呼び出しで使用するコンテキスト行数を指定します。デフォルトは "5" です。

gui.displayUntracked

git-gui[1] がファイル一覧に追跡されていないファイルを表示するかどうかを決定します。デフォルトは "true" です。

gui.encoding

git-gui[1]gitk[1] でのファイル内容の表示に使用するデフォルトの文字エンコーディングを指定します。これは、関連するファイルの encoding 属性を設定することで上書きできます(gitattributes[5] を参照)。このオプションが設定されていない場合、ツールはロケールエンコーディングをデフォルトで使用します。

gui.matchTrackingBranch

git-gui[1] で作成された新しいブランチが、名前が一致するリモートブランチをデフォルトで追跡するかどうかを決定します。デフォルト: "false"。

gui.newBranchTemplate

git-gui[1] を使用して新しいブランチを作成するときの候補名として使用されます。

gui.pruneDuringFetch

git-gui[1] がフェッチの実行時にリモート追跡ブランチをプルーニングする場合は "true"。デフォルト値は "false" です。

gui.trustmtime

git-gui[1] がファイルの最終更新時刻を信頼するかどうかを決定します。デフォルトでは、タイムスタンプは信頼されません。

gui.spellingDictionary

git-gui[1] でコミットメッセージのスペルチェックに使用される辞書を指定します。"none" に設定すると、スペルチェックが無効になります。

gui.fastCopyBlame

true の場合、git gui blame は元の場所の検出に -C -C の代わりに -C を使用します。これにより、大規模なリポジトリでの blame が大幅に高速化されますが、コピー検出の精度は低下します。

gui.copyBlameThreshold

git gui blame の元の場所の検出で使用するしきい値を、英数字文字数で指定します。コピー検出の詳細については、git-blame[1] のマニュアルを参照してください。

gui.blamehistoryctx

git gui blame から "Show History Context" メニュー項目が呼び出された場合、gitk[1] に選択されたコミットに対して表示する履歴コンテキストの範囲(日数)を指定します。この変数が 0 に設定されている場合、履歴全体が表示されます。

guitool.<name>.cmd

git-gui[1]Tools メニューの対応する項目が呼び出されたときに実行するシェルコマンドラインを指定します。このオプションはすべてのツールで必須です。コマンドは作業ディレクトリのルートから実行され、環境ではツールの名前が GIT_GUITOOL、現在選択されているファイルの名前が FILENAME、現在のブランチの名前が CUR_BRANCH として渡されます(HEAD がデタッチされている場合、CUR_BRANCH は空です)。

guitool.<name>.needsFile

GUI で diff が選択されている場合のみ、ツールを実行します。これにより、FILENAME が空ではないことが保証されます。

guitool.<name>.noConsole

出力を表示するウィンドウを作成せずに、コマンドをサイレントに実行します。

guitool.<name>.noRescan

ツールの実行後、変更について作業ディレクトリを再スキャンしません。

guitool.<name>.confirm

ツールを実際に実行する前に確認ダイアログを表示します。

guitool.<name>.argPrompt

ユーザーから文字列引数を要求し、ARGS 環境変数を通してツールに渡します。引数を要求することは確認を意味するため、これが有効になっている場合は confirm オプションは効果がありません。オプションが trueyes、または 1 に設定されている場合、ダイアログは組み込みの汎用プロンプトを使用します。それ以外の場合は、変数の正確な値が使用されます。

guitool.<name>.revPrompt

ユーザーから有効な単一のレビジョンを要求し、REVISION 環境変数を設定します。その他の点では、このオプションは argPrompt と似ており、これと組み合わせて使用できます。

guitool.<name>.revUnmerged

revPrompt サブダイアログにマージされていないブランチのみを表示します。これは、マージやリベースのようなツールには便利ですが、チェックアウトやリセットのようなものには適していません。

guitool.<name>.title

プロンプトダイアログに使用するタイトルを指定します。デフォルトはツールの名前です。

guitool.<name>.prompt

argPromptrevPrompt のセクションの前に、ダイアログの上部に表示する一般的なプロンプト文字列を指定します。デフォルト値には実際のコマンドが含まれています。

help.browser

web 形式でヘルプを表示するために使用されるブラウザを指定します。git-help[1] を参照してください。

help.format

git-help[1] が使用するデフォルトのヘルプ形式を上書きします。maninfowebhtml がサポートされています。man がデフォルトです。webhtml は同じです。

help.autoCorrect

Git がタイプミスを検出し、エラーと類似した有効なコマンドを正確に1つ特定できる場合、Git は正しいコマンドを提案したり、提案を自動的に実行したりしようとします。可能な設定値は次のとおりです。

  • 0 (デフォルト): 提案されたコマンドを表示します。

  • 正の数: 指定された 1/10 秒後(0.1 秒)に提案されたコマンドを実行します。

  • "immediate": 提案されたコマンドをすぐに実行します。

  • "prompt": 提案を表示し、コマンドを実行するかどうかを確認を求めます。

  • "never": 提案されたコマンドを実行したり表示したりしません。

help.htmlPath

HTML ドキュメントが存在するパスを指定します。ファイルシステムパスと URL がサポートされています。ヘルプが web 形式で表示される場合、HTML ページにはこのパスが接頭辞として付けられます。これは、Git インストールのドキュメントパスをデフォルトで使用します。

http.proxy

http_proxyhttps_proxyall_proxy 環境変数を使用して通常構成される HTTP プロキシを上書きします(curl(1) を参照)。curl で理解される構文に加えて、ユーザー名を含むがパスワードを含まないプロキシ文字列を指定することもできます。その場合、Git は他の認証情報の場合と同じ方法でパスワードを取得しようとします。gitcredentials[7] で詳細情報をご覧ください。構文は [protocol://][user[:password]@]proxyhost[:port][/path] です。これはリモートごとに上書きできます。remote.<name>.proxy を参照してください。

ただし、どのように構成されていても、すべてのプロキシは完全に透過的でなければならず、リクエストまたはレスポンスをいかなる方法でも変更、変換、またはバッファしてはなりません。完全に透過的でないプロキシは、Git でさまざまな種類の障害を引き起こすことが知られています。

http.proxyAuthMethod

HTTP プロキシに対して認証を行う方法を設定します。これは、構成されたプロキシ文字列にユーザー名部分が含まれている場合(つまり、user@host または user@host:port の形式である場合)のみ有効になります。これはリモートごとに上書きできます。remote.<name>.proxyAuthMethod を参照してください。両方とも GIT_HTTP_PROXY_AUTHMETHOD 環境変数によって上書きできます。可能な値は次のとおりです。

  • anyauth - 適切な認証方法を自動的に選択します。プロキシは、認証されていないリクエストに対して 407 ステータスコードと、サポートされている認証方法を含む 1 つ以上の Proxy-authenticate ヘッダーで応答すると想定されています。これがデフォルトです。

  • basic - HTTP 基本認証

  • digest - HTTP ダイジェスト認証。これにより、パスワードがクリアテキストでプロキシに送信されるのを防ぎます。

  • negotiate - GSS-Negotiate 認証(curl(1) の --negotiate オプションと比較)

  • ntlm - NTLM 認証(curl(1) の --ntlm オプションと比較)

http.proxySSLCert

HTTPS プロキシとの認証に使用するクライアント証明書を格納するファイルのパス名です。GIT_PROXY_SSL_CERT 環境変数によって上書きできます。

http.proxySSLKey

HTTPS プロキシとの認証に使用する秘密鍵を格納するファイルのパス名です。GIT_PROXY_SSL_KEY 環境変数によって上書きできます。

http.proxySSLCertPasswordProtected

プロキシ SSL 証明書に対して Git のパスワードプロンプトを有効にします。それ以外の場合は、証明書または秘密鍵が暗号化されている場合、OpenSSL がユーザーに(おそらく何度も)プロンプトを表示します。GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED 環境変数によって上書きできます。

http.proxySSLCAInfo

HTTPS プロキシを使用する場合に、プロキシの検証に使用する証明書バンドルを含むファイルのパス名です。GIT_PROXY_SSL_CAINFO 環境変数によって上書きできます。

http.emptyAuth

ユーザー名またはパスワードを求めることなく認証を試みます。これは、libcurl が通常認証にユーザー名を求めるため、URL にユーザー名を指定せずに GSS-Negotiate 認証を試みるために使用できます。

http.proactiveAuth

最初に認証されていない試行を行い、401 レスポンスを受信せずに認証を試みます。これは、すべてのリクエストが認証されるようにするために使用できます。http.emptyAuth が true に設定されている場合、この値は無効になります。

使用されている認証ヘルパーが認証スキームを指定する場合(つまり、authtype フィールドを介して)、その値が使用されます。スキームなしでユーザー名とパスワードが提供されている場合、基本認証が使用されます。オプションの値は、ヘルパーから要求されるスキームを決定します。可能な値は次のとおりです。

  • basic - ヘルパーから基本認証を要求します。

  • auto - ヘルパーが適切なスキームを選択できるようにします。

  • none - プロアクティブな認証を無効にします。

基本認証が選択されている場合、プレーンテキストの資格情報を誤って公開してしまう可能性があるため、この構成では常に TLS を使用する必要があります。

http.delegation

GSSAPI 資格情報の委任を制御します。委任は、バージョン 7.21.7 以降の libcurl ではデフォルトで無効になっています。ユーザー資格情報に関する委任が許可されていることをサーバーに伝えるパラメーターを設定します。GSS/kerberos と共に使用します。可能な値は次のとおりです。

  • none - 委任を許可しません。

  • policy - KerberosサービスチケットにOK-AS-DELEGATEフラグが設定されている場合にのみ委任します。これはレルムポリシーの問題です。

  • always - サーバーによる委任を無条件に許可します。

http.extraHeader

サーバーとの通信時に追加のHTTPヘッダーを渡します。複数のそのようなエントリが存在する場合、すべてが追加ヘッダーとして追加されます。システム設定から継承された設定を上書きできるように、空の値は追加ヘッダーを空のリストにリセットします。

http.cookieFile

以前に保存されたcookie行を含むファイルのパス名です。サーバーと一致する場合、Gitのhttpセッションで使用されます。cookieを読み込むファイルのファイル形式は、プレーンなHTTPヘッダーまたはNetscape/Mozillaのcookieファイル形式である必要があります(curl(1)を参照)。空の文字列に設定すると、サーバーからの新しいcookieのみを受け入れ、同じ接続内の連続するリクエストでそれらを返送します。http.saveCookiesが設定されていない限り、http.cookieFileで指定されたファイルは入力としてのみ使用されることに注意してください。

http.saveCookies

設定されている場合、リクエスト中に受信したcookieをhttp.cookieFileで指定されたファイルに保存します。http.cookieFileが設定されていない場合、または空の文字列に設定されている場合は、効果がありません。

http.version

サーバーと通信する際に、指定されたHTTPプロトコルバージョンを使用します。デフォルトを強制する場合。使用可能なバージョンとデフォルトのバージョンはlibcurlに依存します。現在、このオプションの可能な値は次のとおりです。

  • HTTP/2

  • HTTP/1.1

http.curloptResolve

HTTPリクエストを送信する際にlibcurlが最初に使用するホスト名解決情報。この情報は、次のいずれかの形式である必要があります。

  • [+]HOST:PORT:ADDRESS[,ADDRESS]

  • -HOST:PORT

最初の形式は、指定されたHOST:PORTへのすべてのリクエストを、指定されたADDRESSにリダイレクトします。2番目の形式は、そのHOST:PORTの組み合わせに関する以前のすべての設定値をクリアします。システム設定から継承されたすべての設定を簡単に上書きできるように、空の値はすべての解決情報を空のリストにリセットします。

http.sslVersion

SSL接続をネゴシエートする際に使用するSSLバージョン(デフォルトを強制する場合)。使用可能なバージョンとデフォルトのバージョンは、libcurlがNSSまたはOpenSSLに対してビルドされたか、および使用中の暗号ライブラリの特定の設定に依存します。内部的には、CURLOPT_SSL_VERSIONオプションを設定します。このオプションの形式とサポートされているsslバージョンについては、libcurlのドキュメントを参照してください。現在、このオプションの可能な値は次のとおりです。

  • sslv2

  • sslv3

  • tlsv1

  • tlsv1.0

  • tlsv1.1

  • tlsv1.2

  • tlsv1.3

GIT_SSL_VERSION環境変数で上書きできます。gitにlibcurlのデフォルトのsslバージョンを使用させ、明示的なhttp.sslversionオプションを無視するには、GIT_SSL_VERSIONを空の文字列に設定します。

http.sslCipherList

SSL接続をネゴシエートする際に使用するSSL暗号のリスト。使用可能な暗号は、libcurlがNSSまたはOpenSSLに対してビルドされたか、および使用中の暗号ライブラリの特定の設定に依存します。内部的には、CURLOPT_SSL_CIPHER_LISTオプションを設定します。このリストの形式の詳細については、libcurlのドキュメントを参照してください。

GIT_SSL_CIPHER_LIST環境変数で上書きできます。gitにlibcurlのデフォルトの暗号リストを使用させ、明示的なhttp.sslCipherListオプションを無視するには、GIT_SSL_CIPHER_LISTを空の文字列に設定します。

http.sslVerify

HTTPS経由でフェッチまたはプッシュする際にSSL証明書を検証するかどうか。デフォルトはtrueです。GIT_SSL_NO_VERIFY環境変数で上書きできます。

http.sslCert

HTTPS経由でフェッチまたはプッシュする際のSSL証明書を含むファイル。GIT_SSL_CERT環境変数で上書きできます。

http.sslKey

HTTPS経由でフェッチまたはプッシュする際のSSL秘密鍵を含むファイル。GIT_SSL_KEY環境変数で上書きできます。

http.sslCertPasswordProtected

SSL証明書のパスワードプロンプトを有効にします。それ以外の場合は、証明書または秘密鍵が暗号化されている場合、OpenSSLがユーザーに(おそらく何度も)プロンプトを表示します。GIT_SSL_CERT_PASSWORD_PROTECTED環境変数で上書きできます。

http.sslCAInfo

HTTPS経由でフェッチまたはプッシュする際にピアを検証するための証明書を含むファイル。GIT_SSL_CAINFO環境変数で上書きできます。

http.sslCAPath

HTTPS経由でフェッチまたはプッシュする際にピアを検証するためのCA証明書を含むファイルを含むパス。GIT_SSL_CAPATH環境変数で上書きできます。

http.sslBackend

使用するSSLバックエンドの名前(例:「openssl」または「schannel」)。cURLがランタイムでSSLバックエンドを選択するサポートに欠けている場合、このオプションは無視されます。

http.schannelCheckRevoke

http.sslBackendが「schannel」に設定されている場合に、cURLで証明書の失効チェックを強制または無効にするために使用されます。設定されていない場合はtrueがデフォルトです。Gitで一貫してエラーが発生し、メッセージが証明書の失効状態の確認に関するものである場合にのみ、これを無効にする必要があります。cURLがランタイムで関連するSSLオプションを設定するサポートに欠けている場合、このオプションは無視されます。

http.schannelUseSSLCAInfo

cURL v7.60.0以降、セキュアチャネルバックエンドはhttp.sslCAInfoを介して提供された証明書バンドルを使用できますが、これによりWindows証明書ストアが上書きされます。これはデフォルトでは望ましくないため、http.sslBackendを介してschannelバックエンドが設定されている場合、GitはデフォルトでcURLにそのバンドルを使用しないように指示しますが、http.schannelUseSSLCAInfoがこの動作をオーバーライドする場合を除きます。

http.pinnedPubkey

httpsサービスの公開鍵。PEMまたはDERでエンコードされた公開鍵ファイルのファイル名、またはsha256//で始まる文字列(公開鍵のbase64でエンコードされたsha256ハッシュが続きます)のいずれかになります。libcurlのCURLOPT_PINNEDPUBLICKEYも参照してください。このオプションが設定されているがcURLでサポートされていない場合、gitはエラーで終了します。

http.sslTry

通常のFTPプロトコルを介して接続するときに、AUTH SSL/TLSと暗号化されたデータ転送を使用しようとします。これは、FTPサーバーがセキュリティ上の理由でそれを要求する場合、またはリモートFTPサーバーがそれをサポートするたびに安全に接続する場合に必要になる場合があります。誤って構成されたサーバーで証明書検証エラーが発生する可能性があるため、デフォルトはfalseです。

http.maxRequests

並行して起動するHTTPリクエストの数。GIT_HTTP_MAX_REQUESTS環境変数で上書きできます。デフォルトは5です。

http.minSessions

リクエスト間で保持されるcurlセッションの数(スロット全体でカウント)。http_cleanup()が呼び出されるまで、curl_easy_cleanup()で終了されません。USE_CURL_MULTIが定義されていない場合、この値は1に制限されます。デフォルトは1です。

http.postBuffer

リモートシステムにデータをPOSTする際にスマートHTTPトランスポートで使用されるバッファーの最大サイズ(バイト単位)。このバッファーサイズよりも大きいリクエストでは、HTTP/1.1とTransfer-Encoding: chunkedを使用して、ローカルに巨大なパックファイルを作成することを回避します。デフォルトは1MiBで、ほとんどのリクエストには十分です。

この制限を引き上げるのは、チャンク転送エンコーディングを無効にする場合にのみ有効であることに注意してください。したがって、リモートサーバーまたはプロキシがHTTP/1.0のみをサポートしている場合、またはHTTP標準に準拠していない場合にのみ使用する必要があります。一般的に、これを引き上げることはほとんどのプッシュの問題に対する効果的な解決策ではありませんが、小さいプッシュでもバッファー全体が割り当てられるため、メモリ消費量を大幅に増やす可能性があります。

http.lowSpeedLimit, http.lowSpeedTime

HTTP転送速度(秒あたりのバイト数)がhttp.lowSpeedLimitより長くhttp.lowSpeedTime秒間より低い場合、転送は中止されます。GIT_HTTP_LOW_SPEED_LIMITおよびGIT_HTTP_LOW_SPEED_TIME環境変数で上書きできます。

http.noEPSV

curlによるEPSV ftpコマンドの使用を無効にするブール値。EPSVモードをサポートしていない一部の「貧弱な」ftpサーバーで役立ちます。GIT_CURL_FTP_NO_EPSV環境変数で上書きできます。デフォルトはfalseです(curlはEPSVを使用します)。

http.userAgent

HTTPサーバーに提示されるHTTP USER_AGENT文字列。デフォルト値は、git/1.7.1などのGitクライアントのバージョンを表します。このオプションを使用すると、この値をMozilla/4.0などのより一般的な値に上書きできます。たとえば、HTTP接続を一般的なUSER_AGENT文字列のセット(git/1.7.1などではない)に制限するファイアウォールを介して接続する場合に必要になる場合があります。GIT_HTTP_USER_AGENT環境変数で上書きできます。

http.followRedirects

gitがHTTPリダイレクトをフォローするかどうか。trueに設定されている場合、gitは検出したサーバーによって発行されたリダイレクトを透過的にフォローします。falseに設定されている場合、gitはすべてのリダイレクトをエラーとして扱います。initialに設定されている場合、gitはリモートへの最初のリクエストに対してのみリダイレクトをフォローしますが、後続のフォローアップHTTPリクエストに対してはフォローしません。gitはリダイレクトされたURLをフォローアップリクエストのベースとして使用するため、これは一般的に十分です。デフォルトはinitialです。

http.<url>.*

上記のhttp.*オプションのいずれかを、一部のURLに選択的に適用できます。設定キーがURLと一致するには、設定キーの各要素が、次の順序でURLの要素と比較されます。

  1. スキーム(例:「https://example.com/」の「https」)。このフィールドは、設定キーとURLの間で完全に一致する必要があります。

  2. ホスト/ドメイン名(例:https://example.com/example.com)。このフィールドは、設定キーとURLの間で一致する必要があります。ホスト名の部分に*を指定して、このレベルのすべてのサブドメインに一致させることができます。例えば、https://*.example.com/https://foo.example.com/ には一致しますが、https://foo.bar.example.com/ には一致しません。

  3. ポート番号(例:http://example.com:8080/8080)。このフィールドは、設定キーとURLの間で完全に一致する必要があります。省略されたポート番号は、照合前にスキームの正しいデフォルト値に自動的に変換されます。

  4. パス(例:https://example.com/repo.gitrepo.git)。設定キーのパスフィールドは、URLのパスフィールドと完全に一致するか、スラッシュで区切られたパス要素のプレフィックスとして一致する必要があります。つまり、パスがfoo/ の設定キーは、URLパスfoo/bar に一致します。プレフィックスはスラッシュ(/)の境界でのみ一致できます。より長い一致が優先されます(そのため、パスがfoo/bar の設定キーは、パスがfoo/だけの設定キーよりも、URLパスfoo/barとの一致度が高くなります)。

  5. ユーザー名(例:https://user@example.com/repo.gituser)。設定キーにユーザー名がある場合、URLのユーザー名と完全に一致する必要があります。設定キーにユーザー名がない場合、その設定キーは任意のユーザー名(なしを含む)を持つURLと一致しますが、ユーザー名を持つ設定キーよりも優先順位が低くなります。

上記のリストは、優先順位の高い順に並んでいます。設定キーのパスと一致するURLは、ユーザー名と一致するURLよりも優先されます。例えば、URLがhttps://user@example.com/foo/bar の場合、https://example.com/foo の設定キーの一致は、https://user@example.com の設定キーの一致よりも優先されます。

すべてのURLは、照合を試みる前に正規化されます(URLに埋め込まれている場合、パスワード部分は照合目的では常に無視されます)。そのため、スペルが異なるだけで等価なURLは適切に一致します。環境変数の設定は、常にすべての照合を上書きします。照合されるURLは、Gitコマンドに直接指定されたものです。つまり、リダイレクトの結果としてアクセスされたURLは、照合には参加しません。

i18n.commitEncoding

コミットメッセージが保存される文字エンコーディングです。Git自体は特に気にしませんが、この情報は、例えばメールからコミットをインポートする場合や、gitkグラフィカル履歴ブラウザ(そして将来他の場所や他のポーセリンで)で必要になります。git-mailinfo[1]を参照してください。デフォルトはutf-8です。

i18n.logOutputEncoding

git logなどを実行するときに、コミットメッセージが変換される文字エンコーディングです。

imap.folder

メールを保存するフォルダで、通常はドラフトフォルダです。例:「INBOX.Drafts」、「INBOX/Drafts」、「[Gmail]/Drafts」。必須です。

imap.tunnel

サーバーへの直接ネットワーク接続ではなく、コマンドがパイプされるIMAPサーバーへのトンネルを設定するために使用されるコマンド。imap.hostが設定されていない場合に必要です。

imap.host

サーバーを識別するURL。安全でない接続にはimap://プレフィックスを、安全な接続にはimaps://プレフィックスを使用します。imap.tunnelが設定されている場合は無視されますが、それ以外の場合は必須です。

imap.user

サーバーへのログイン時に使用するユーザー名。

imap.pass

サーバーへのログイン時に使用するパスワード。

imap.port

サーバーに接続する整数ポート番号。imap://ホストの場合は143、imaps://ホストの場合は993がデフォルトです。imap.tunnelが設定されている場合は無視されます。

imap.sslverify

SSL/TLS接続で使用されるサーバー証明書の検証を有効/無効にするブール値。デフォルトはtrueです。imap.tunnelが設定されている場合は無視されます。

imap.preformattedHTML

パッチを送信するときにhtmlエンコーディングの使用を有効/無効にするブール値。htmlエンコードされたパッチは<pre>で囲まれ、コンテンツタイプはtext/htmlになります。皮肉なことに、このオプションを有効にすると、Thunderbirdはパッチをプレーンテキスト、format=fixedのメールとして送信します。デフォルトはfalseです。

imap.authMethod

IMAPサーバーとの認証のための認証方法を指定します。GitがNO_CURLオプションでビルドされている場合、またはcurlのバージョンが7.34.0より古い場合、または--no-curlオプションでgit-imap-sendを実行している場合は、サポートされる方法はCRAM-MD5のみです。これが設定されていない場合、git imap-sendは基本的なIMAPプレーンテキストLOGINコマンドを使用します。

include.path
includeIf.<condition>.path

他の設定ファイルを含めるための特別な変数です。メインのgit-config[1]ドキュメントの「設定ファイル」セクション、特に「インクルード」と「条件付きインクルード」のサブセクションを参照してください。

index.recordEndOfIndexEntries

インデックスファイルに「インデックスエントリの終わり」セクションを含めるかどうかを指定します。これにより、マルチプロセッサマシンでのインデックスのロード時間が短縮されますが、2.20より前のGitバージョンを使用してインデックスを読み取ると、「EOIE拡張機能を無視しています」というメッセージが表示されます。index.threadsが明示的に有効になっている場合はtrue、それ以外の場合はfalseがデフォルトです。

index.recordOffsetTable

インデックスファイルに「インデックスエントリオフセットテーブル」セクションを含めるかどうかを指定します。これにより、マルチプロセッサマシンでのインデックスのロード時間が短縮されますが、2.20より前のGitバージョンを使用してインデックスを読み取ると、「IEOT拡張機能を無視しています」というメッセージが表示されます。index.threadsが明示的に有効になっている場合はtrue、それ以外の場合はfalseがデフォルトです。

index.sparse

有効にすると、スパースディレクトリエントリを使用してインデックスを書き込みます。これは、core.sparseCheckoutcore.sparseCheckoutConeの両方が有効になっている場合にのみ効果があります。デフォルトはfalseです。

index.threads

インデックスのロード時に生成するスレッド数を指定します。これは、マルチプロセッサマシンでのインデックスのロード時間を短縮することを目的としています。0またはtrueを指定すると、GitはCPU数を自動検出し、スレッド数をそれに応じて設定します。1またはfalseを指定すると、マルチスレッド処理が無効になります。デフォルトはtrueです。

index.version

新しいインデックスファイルの初期化に使用するバージョンを指定します。これは既存のリポジトリには影響しません。feature.manyFilesが有効になっている場合、デフォルトは4です。

index.skipHash

有効にすると、インデックスファイルの末尾のハッシュを計算しません。これにより、git addgit commitgit statusなど、インデックスを操作するGitコマンドが高速化されます。チェックサムを保存する代わりに、値がゼロの末尾のバイトセットを書き込み、計算がスキップされたことを示します。

index.skipHashを有効にすると、2.13.0より前のGitクライアントはインデックスの解析を拒否し、2.40.0より前のGitクライアントはgit fsck実行中にエラーを報告します。

init.templateDir

テンプレートをコピーするディレクトリを指定します。(git-init[1]の「テンプレートディレクトリ」セクションを参照してください。)

init.defaultBranch

新しいリポジトリを初期化する場合などに、デフォルトのブランチ名を上書きできます。

init.defaultObjectFormat

新しいリポジトリのデフォルトのオブジェクト形式を上書きできます。git-init[1]--object-format=を参照してください。コマンドラインオプションとGIT_DEFAULT_HASH環境変数の両方が、この設定よりも優先されます。

init.defaultRefFormat

新しいリポジトリのデフォルトの参照ストレージ形式を上書きできます。git-init[1]--ref-format=を参照してください。コマンドラインオプションとGIT_DEFAULT_REF_FORMAT環境変数の両方が、この設定よりも優先されます。

instaweb.browser

作業リポジトリをgitwebで閲覧するために使用されるプログラムを指定します。git-instaweb[1]を参照してください。

instaweb.httpd

作業リポジトリでgitwebを起動するHTTPデーモンコマンドラインを指定します。git-instaweb[1]を参照してください。

instaweb.local

trueの場合、git-instaweb[1]によって起動されたWebサーバーはローカルIP(127.0.0.1)にバインドされます。

instaweb.modulePath

/usr/lib/apache2/modulesの代わりに使用するgit-instaweb[1]のデフォルトのモジュールパスです。httpdがApacheの場合にのみ使用されます。

instaweb.port

gitweb httpdをバインドするポート番号を指定します。git-instaweb[1]を参照してください。

interactive.singleKey

trueに設定すると、ユーザーはインタラクティブコマンドで1文字の入力を1つのキーで(つまり、Enterキーを押さずに)入力できます。現在、これはgit-add[1]git-checkout[1]git-restore[1]git-commit[1]git-reset[1]git-stash[1]--patchモードで使用されています。

interactive.diffFilter

インタラクティブコマンド(git add --patchなど)がカラー化されたdiffを表示する場合、gitはdiffをこの設定変数で定義されたシェルコマンドにパイプします。コマンドは、元のdiffの行との1対1の対応関係を維持する限り、人間が理解しやすいようにdiffをさらにマークアップできます。デフォルトでは無効(フィルタリングなし)です。

log.abbrevCommit

trueの場合、git-log[1]git-show[1]git-whatchanged[1]--abbrev-commitが想定されます。このオプションは--no-abbrev-commitで上書きできます。

log.date

logコマンドのデフォルトの日時モードを設定します。log.dateの値を設定することは、git log--dateオプションを使用することに似ています。git-log[1]で詳細を確認してください。

フォーマットが「auto:foo」に設定され、ページャーが使用されている場合、「foo」形式が日付形式として使用されます。それ以外の場合は「default」が使用されます。

log.decorate

logコマンドによって表示されるコミットのリファレンス名を印刷します。shortが指定されている場合、リファレンス名のプレフィックスrefs/heads/refs/tags/refs/remotes/は印刷されません。fullが指定されている場合、完全なリファレンス名(プレフィックスを含む)が印刷されます。autoが指定されている場合、出力が端末の場合、shortが指定されているかのようにリファレンス名が示され、それ以外の場合はリファレンス名は表示されません。これはgit log--decorateオプションと同じです。

log.initialDecorationSet

デフォルトでは、git logは特定の既知のリファレンスネームスペースの装飾のみを表示します。allが指定されている場合、すべてのリファレンスを装飾として表示します。

log.excludeDecoration

指定されたパターンをログの装飾から除外します。これは--decorate-refs-excludeコマンドラインオプションに似ていますが、configオプションは--decorate-refsオプションで上書きできます。

log.diffMerges

--diff-merges=onが指定されている場合に使用されるdiff形式を設定します。git-log[1]--diff-mergesで詳細を確認してください。デフォルトはseparateです。

log.follow

trueの場合、単一の<path>が指定されているときに、git log--followオプションが使用されたかのように動作します。これは--followと同じ制限があり、つまり複数のファイルをフォローするために使用できず、非線形履歴ではうまく機能しません。

log.graphColors

git log --graphで履歴行を描画するために使用できる、カンマで区切られた色のリストです。

log.showRoot

trueの場合、最初のコミットは大きな作成イベントとして表示されます。これは空のツリーに対するdiffと同等です。通常、ルートコミットを非表示にするgit-log[1]git-whatchanged[1]などのツールでも、これが表示されるようになります。デフォルトではtrueです。

log.showSignature

trueの場合、git-log[1]git-show[1]、およびgit-whatchanged[1]--show-signatureが想定されます。

log.mailmap

trueの場合、git-log[1]git-show[1]、およびgit-whatchanged[1]--use-mailmapが想定され、それ以外の場合は--no-use-mailmapが想定されます。デフォルトではtrueです。

lsrefs.unborn

"advertise"(デフォルト)、"allow"、または"ignore"のいずれかになります。"advertise"の場合、サーバーはクライアントが"unborn"を送信する(gitprotocol-v2[5]で説明されているとおり)ことに応答し、プロトコルv2の機能アドバタイズメント中にこの機能のサポートをアドバタイズします。"allow"は"advertise"と同じですが、サーバーはこの機能のサポートをアドバタイズしません。これは、(たとえば)アトミックに更新できないロードバランスされたサーバーに役立ちます。管理者は"allow"を設定してから、遅延の後で"advertise"を設定できます。

mailinfo.scissors

trueの場合、git-mailinfo[1](そしてその結果git-am[1])は、コマンドラインで--scissorsオプションが提供されたかのようにデフォルトで動作します。有効になっている場合、この機能は、はさみ線(つまり、主に「>8」、「8<」、「-」で構成される)の前にメッセージ本文からすべてを削除します。

mailmap.file

拡張メールマップファイルの場所。リポジトリのルートにあるデフォルトのメールマップが最初にロードされ、次にこの変数によって示されるメールマップファイルがロードされます。メールマップファイルの場所は、リポジトリのサブディレクトリ内、またはリポジトリ外のいずれかにある可能性があります。git-shortlog[1]およびgit-blame[1]を参照してください。

mailmap.blob

mailmap.fileと同様ですが、値をリポジトリ内のblobへの参照として考慮します。mailmap.filemailmap.blobの両方が指定されている場合、両方が解析され、mailmap.fileのエントリが優先されます。ベアリポジトリでは、これはHEAD:.mailmapをデフォルトとします。ベアリポジトリではないリポジトリでは、空をデフォルトとします。

maintenance.auto

このブール型のconfigオプションは、いくつかのコマンドが通常の作業の後でgit maintenance run --autoを実行するかどうかを制御します。デフォルトはtrueです。

maintenance.autoDetach

多くのGitコマンドは、リポジトリにデータを書き込んだ後に自動メンテナンスをトリガーします。このブール型のconfigオプションは、この自動メンテナンスがフォアグラウンドで行われるか、メンテナンスプロセスがデタッチしてバックグラウンドで実行を継続するかどうかを制御します。

設定されていない場合、gc.autoDetachの値がフォールバックとして使用されます。どちらも設定されていない場合はデフォルトでtrueになり、メンテナンスプロセスはデタッチされます。

maintenance.strategy

この文字列型のconfigオプションは、バックグラウンドメンテナンスのために推奨されるいくつかのスケジュールを指定する方法を提供します。これは、--task=<task>引数が提供されていない場合に、git maintenance run --schedule=Xコマンド中に実行されるタスクのみに影響します。さらに、maintenance.<task>.schedule config値が設定されている場合、maintenance.strategyで提供される値の代わりにその値が使用されます。可能な戦略文字列は

  • none:このデフォルト設定は、どのスケジュールでもタスクが実行されないことを意味します。

  • incremental:この設定は、データを削除しない小さなメンテナンスアクティビティを実行するために最適化されています。これはgcタスクをスケジュールしませんが、prefetchcommit-graphタスクを毎時、loose-objectsincremental-repackタスクを毎日、pack-refsタスクを毎週実行します。

maintenance.<task>.enabled

このブール型のconfigオプションは、git maintenance run--taskオプションが指定されていない場合に、名前が<task>であるメンテナンスタスクが実行されるかどうかを制御します。これらのconfig値は、--taskオプションが存在する場合は無視されます。デフォルトでは、maintenance.gc.enabledのみがtrueです。

maintenance.<task>.schedule

このconfigオプションは、指定された<task>git maintenance run --schedule=<frequency>コマンド中に実行されるかどうかを制御します。値は"hourly"、"daily"、または"weekly"のいずれかである必要があります。

maintenance.commit-graph.auto

この整数型のconfigオプションは、git maintenance run --autoの一部としてcommit-graphタスクをどのくらいの頻度で実行するかを制御します。0の場合、commit-graphタスクは--autoオプションでは実行されません。負の値は、タスクを毎回強制的に実行します。それ以外の場合は、正の値は、コミットグラフファイルにない到達可能なコミット数がmaintenance.commit-graph.autoの値以上の場合にコマンドを実行することを意味します。デフォルト値は100です。

maintenance.loose-objects.auto

この整数型のconfigオプションは、git maintenance run --autoの一部としてloose-objectsタスクをどのくらいの頻度で実行するかを制御します。0の場合、loose-objectsタスクは--autoオプションでは実行されません。負の値は、タスクを毎回強制的に実行します。それ以外の場合は、正の値は、ルーズオブジェクトの数がmaintenance.loose-objects.autoの値以上の場合にコマンドを実行することを意味します。デフォルト値は100です。

maintenance.incremental-repack.auto

この整数型のconfigオプションは、git maintenance run --autoの一部としてincremental-repackタスクをどのくらいの頻度で実行するかを制御します。0の場合、incremental-repackタスクは--autoオプションでは実行されません。負の値は、タスクを毎回強制的に実行します。それ以外の場合は、正の値は、マルチパックインデックスにないパックファイルの数がmaintenance.incremental-repack.autoの値以上の場合にコマンドを実行することを意味します。デフォルト値は10です。

man.viewer

man形式でヘルプを表示するために使用できるプログラムを指定します。git-help[1]を参照してください。

man.<tool>.cmd

指定されたmanビューアを呼び出すコマンドを指定します。指定されたコマンドは、manページを引数としてシェルで評価されます。(git-help[1]を参照してください。)

man.<tool>.path

man形式でヘルプを表示するために使用できる、指定されたツールのパスを上書きします。git-help[1]を参照してください。

merge.conflictStyle

マージ時に競合するハンクがワーキングツリーファイルに書き出されるスタイルを指定します。デフォルトは"merge"で、<<<<<<<競合マーカー、一方側による変更、=======マーカー、もう一方側による変更、そして>>>>>>>マーカーが表示されます。代替スタイルの"diff3"は、|||||||マーカーと=======マーカーの前に元のテキストを追加します。"merge"スタイルは、元のテキストの除外と、2つの側の行のサブセットが一致する場合に競合領域から削除されるため、diff3よりも小さな競合領域を生成する傾向があります。別の代替スタイルである"zdiff3"はdiff3に似ていますが、それらのマッチングラインが競合領域の先頭または末尾の近くに表示される場合、2つの側のマッチングラインを競合領域から削除します。

merge.defaultToUpstream

コミット引数なしでマージが呼び出された場合、それらのリモート追跡ブランチに保存されている最後に観察された値を使用して、現在のブランチに設定されている上流ブランチをマージします。branch.<current branch>.remoteによって名前付けられたリモートにあるブランチに名前を付けるbranch.<current branch>.mergeの値が参照され、次にremote.<remote>.fetchを介して対応するリモート追跡ブランチにマッピングされ、これらの追跡ブランチの先端がマージされます。デフォルトはtrueです。

merge.ff

デフォルトでは、Gitは現在のコミットの子孫であるコミットをマージするときに余分なマージコミットを作成しません。代わりに、現在のブランチの先端は高速転送されます。falseに設定すると、この変数はGitにそのような場合に余分なマージコミットを作成するように指示します(コマンドラインから--no-ffオプションを与えることと同等です)。onlyに設定すると、そのような高速転送マージのみが許可されます(コマンドラインから--ff-onlyオプションを与えることと同等です)。

merge.verifySignatures

trueの場合、これは--verify-signaturesコマンドラインオプションと同等です。詳細はgit-merge[1]を参照してください。

merge.branchdesc

ブランチ名に加えて、ログメッセージに関連付けられたブランチの説明テキストを入力します。デフォルトはfalseです。

merge.log

ブランチ名に加えて、マージされている実際のコミットから最大指定された数の1行の説明をログメッセージに入力します。デフォルトはfalseで、trueは20と同義です。

merge.suppressDest

統合ブランチの名前と一致するglobをこの複数値の構成変数に追加することにより、これらの統合ブランチへのマージのために計算されたデフォルトのマージメッセージから、「into <branch name>」がタイトルから省略されます。

空の値を持つ要素を使用して、以前の構成エントリから蓄積されたglobのリストをクリアできます。merge.suppressDest変数が定義されていない場合、下位互換性のためにmasterのデフォルト値が使用されます。

merge.renameLimit

マージ中に名前の変更検出の包括的な部分で考慮されるファイルの数。指定されていない場合、diff.renameLimitの値をデフォルトとします。merge.renameLimitとdiff.renameLimitのどちらも指定されていない場合、現在は7000をデフォルトとします。名前の変更検出が無効になっている場合、この設定は効果がありません。

merge.renames

Gitが名前の変更を検出するかどうか。 "false"に設定すると、名前の変更検出は無効になります。"true"に設定すると、基本的な名前の変更検出が有効になります。diff.renamesの値をデフォルトとします。

merge.directoryRenames

Gitがディレクトリの名前変更を検出するかどうかを指定します。これは、履歴の一方の側でディレクトリが名前変更された場合に、履歴のもう一方の側にそのディレクトリに追加された新しいファイルがマージ時にどうなるかに影響します。merge.directoryRenamesが"false"に設定されている場合、ディレクトリの名前変更検出は無効になり、そのような新しいファイルは古いディレクトリに残されます。"true"に設定されている場合、ディレクトリの名前変更検出が有効になり、そのような新しいファイルは新しいディレクトリに移動されます。"conflict"に設定されている場合、そのようなパスに対して競合が報告されます。merge.renamesがfalseの場合、merge.directoryRenamesは無視され、falseとして扱われます。デフォルトは"conflict"です。

merge.renormalize

リポジトリ内のファイルの標準表現が時間の経過とともに変化したことをGitに知らせます(例:以前のコミットはCRLF改行でテキストファイルを記録していましたが、最近のコミットではLF改行を使用しています)。このようなリポジトリでは、Gitはコミットに記録されたデータを標準形式に変換してからマージを実行することで、不要な競合を減らすことができます。詳細については、gitattributes[5]の「チェックイン/チェックアウト属性が異なるブランチのマージ」セクションを参照してください。

merge.stat

マージの最後に、ORIG_HEADとマージ結果の間のdiffstatを出力するかどうかを指定します。デフォルトではTrueです。

merge.autoStash

trueに設定されている場合、操作開始前に一時的なstashエントリを自動的に作成し、操作終了後に適用します。これは、ダーティなワークツリーでマージを実行できることを意味します。ただし、注意して使用してください。成功したマージ後の最終的なstashの適用により、複雑な競合が発生する可能性があります。このオプションは、git-merge[1]--no-autostashおよび--autostashオプションで上書きできます。デフォルトはfalseです。

merge.tool

git-mergetool[1]で使用されるマージツールを制御します。以下に有効な組み込み値を示します。その他の値はカスタムマージツールとして扱われ、対応するmergetool.<tool>.cmd変数が定義されている必要があります。

merge.guitool

-g/--guiフラグが指定されている場合、git-mergetool[1]で使用されるマージツールを制御します。以下に有効な組み込み値を示します。その他の値はカスタムマージツールとして扱われ、対応するmergetool.<guitool>.cmd変数が定義されている必要があります。

  • araxis

  • bc

  • codecompare

  • deltawalker

  • diffmerge

  • diffuse

  • ecmerge

  • emerge

  • examdiff

  • guiffy

  • gvimdiff

  • kdiff3

  • meld

  • nvimdiff

  • opendiff

  • p4merge

  • smerge

  • tkdiff

  • tortoisemerge

  • vimdiff

  • vscode

  • winmerge

  • xxdiff

merge.verbosity

再帰的なマージ戦略によって表示される出力量を制御します。レベル0は、競合が検出された場合に最終的なエラーメッセージ以外何も出力しません。レベル1は競合のみを出力し、レベル2は競合とファイルの変更を出力します。レベル5以上はデバッグ情報を出力します。デフォルトはレベル2です。GIT_MERGE_VERBOSITY環境変数で上書きできます。

merge.<driver>.name

カスタム低レベルマージドライバの分かりやすい名前を定義します。gitattributes[5]で詳細を参照してください。

merge.<driver>.driver

カスタム低レベルマージドライバを実装するコマンドを定義します。gitattributes[5]で詳細を参照してください。

merge.<driver>.recursive

共通の祖先間で内部マージを実行する際に使用する低レベルマージドライバを指定します。gitattributes[5]で詳細を参照してください。

mergetool.<tool>.path

指定されたツールのパスを上書きします。ツールがPATHにない場合に便利です。

mergetool.<tool>.cmd

指定されたマージツールを呼び出すコマンドを指定します。指定されたコマンドはシェルで評価され、以下の変数が使用可能です。 *BASE*はマージするファイルの共通の基底を含む一時ファイルの名前(存在する場合)、*LOCAL*は現在のブランチのファイルの内容を含む一時ファイルの名前、*REMOTE*はマージするブランチからのファイルの内容を含む一時ファイルの名前、*MERGED*はマージツールが成功したマージの結果を書き込むファイルの名前です。

mergetool.<tool>.hideResolved

特定のツールに対してグローバルなmergetool.hideResolved値を上書きできます。完全な説明についてはmergetool.hideResolvedを参照してください。

mergetool.<tool>.trustExitCode

カスタムマージコマンドの場合、マージコマンドの終了コードを使用してマージが成功したかどうかを判断できるかどうかを指定します。これがtrueに設定されていない場合、マージターゲットファイルのタイムスタンプがチェックされ、ファイルが更新されている場合、マージは成功したと見なされます。そうでない場合、マージの成功をユーザーに指示するよう求められます。

mergetool.meld.hasOutput

古いバージョンのmeld--outputオプションをサポートしていません。Gitはmeld --helpの出力を検査することで、meld--outputをサポートしているかどうかを検出しようとします。mergetool.meld.hasOutputを設定すると、Gitはこれらのチェックをスキップし、代わりに設定された値を使用します。mergetool.meld.hasOutputtrueに設定すると、Gitは条件なしで--outputオプションを使用し、falseに設定すると--outputを使用しません。

mergetool.meld.useAutoMerge

--auto-mergeが与えられると、meldはすべての非競合部分を自動的にマージし、競合部分を強調表示して、ユーザーの決定を待ちます。mergetool.meld.useAutoMergetrueに設定すると、Gitは条件なしでmeld--auto-mergeオプションを使用します。この値をautoに設定すると、gitは--auto-mergeがサポートされているかどうかを検出し、利用可能な場合にのみ--auto-mergeを使用します。falseという値は--auto-mergeをまったく使用せず、デフォルト値です。

mergetool.<vimdiff variant>.layout

vimdiffの<variant>vimdiffnvimdiffgvimdiffのいずれか)のスプリットウィンドウレイアウトを設定します。--tool=<variant>を使用して(またはmerge.tool<variant>として設定されている場合は--toolなしで)git mergetoolを起動すると、Gitはツールのレイアウトを決定するためにmergetool.<variant>.layoutを参照します。バリアント固有の設定が利用できない場合、vimdiffの設定がフォールバックとして使用されます。それも利用できない場合、4つのウィンドウを持つデフォルトのレイアウトが使用されます。レイアウトの設定については、git-mergetool[1]の「BACKEND SPECIFIC HINTS」セクションを参照してください。

mergetool.hideResolved

マージ中に、Gitは可能な限り多くの競合を自動的に解決し、解決できない競合の周りに競合マーカーを含む*MERGED*ファイルを作成します。*LOCAL*と*REMOTE*は通常、Gitの競合解決前のファイルのバージョンを表します。このフラグにより、*LOCAL*と*REMOTE*が上書きされ、解決されていない競合のみがマージツールに提示されます。mergetool.<tool>.hideResolved設定変数を使用して、ツールごとに設定できます。デフォルトはfalseです。

mergetool.keepBackup

マージを実行した後、競合マーカーを含む元のファイルは.orig拡張子のファイルとして保存できます。この変数がfalseに設定されている場合、このファイルは保存されません。デフォルトはtrue(つまり、バックアップファイルを残す)です。

mergetool.keepTemporaries

カスタムマージツールを呼び出す場合、Gitはツールに渡す一時ファイルのセットを使用します。ツールがエラーを返し、この変数がtrueに設定されている場合、これらの一時ファイルは保存されます。そうでない場合、ツールが終了した後、削除されます。デフォルトはfalseです。

mergetool.writeToTemp

Gitはデフォルトで、ワークツリーに競合するファイルの一時的な*BASE*、*LOCAL*、*REMOTE*バージョンを書き込みます。trueに設定されている場合、Gitはこれらのファイルに一時ディレクトリを使用しようとします。デフォルトはfalseです。

mergetool.prompt

マージ解決プログラムを呼び出すたびにプロンプトを表示します。

mergetool.guiDefault

デフォルトでmerge.guitoolを使用するにはtrueに設定し(--gui引数を指定するのと同じ)、DISPLAY環境変数の値の有無に応じてmerge.guitoolまたはmerge.toolを選択するにはautoに設定します。デフォルトはfalseで、merge.guitoolを使用するには--gui引数を明示的に指定する必要があります。

notes.mergeStrategy

ノートの競合を解決する際にデフォルトで選択するマージ戦略を指定します。manualourstheirsunioncat_sort_uniqのいずれかでなければなりません。デフォルトはmanualです。各戦略の詳細については、git-notes[1]の「NOTES MERGE STRATEGIES」セクションを参照してください。

この設定は、git-notes[1]--strategyオプションを渡すことで上書きできます。

notes.<name>.mergeStrategy

refs/notes/<name>へのノートのマージを行う際に選択するマージ戦略を指定します。より一般的な"notes.mergeStrategy"を上書きします。利用可能な戦略の詳細については、git-notes[1]の「NOTES MERGE STRATEGIES」セクションを参照してください。

notes.displayRef

core.notesRefまたはGIT_NOTES_REFによって設定されたデフォルトセットに加えて、どのref(またはglob、または複数回指定されている場合はrefs)からノートを読み込むかを指定します。これは、git logコマンド群を使用してコミットメッセージを表示する際に使用されます。

この設定は、GIT_NOTES_DISPLAY_REF環境変数で上書きできます。この変数は、コロンで区切られたrefsまたはglobのリストでなければなりません。

存在しないrefsに対しては警告が表示されますが、どのrefsにも一致しないglobはサイレントに無視されます。

この設定は、git logコマンド群の--no-notesオプション、またはこれらのコマンドで受け入れられる--notes=<ref>オプションで無効にすることができます。

"core.notesRef"の有効値(GIT_NOTES_REFによって上書きされる可能性があります)も、表示されるrefsのリストに暗黙的に追加されます。

notes.rewrite.<command>

<command>(現在はamendまたはrebase)を使用してコミットを書き換える場合、この変数がfalseの場合、gitは元のコミットから書き換えられたコミットにノートをコピーしません。デフォルトはtrueです。「notes.rewriteRef」も参照してください。

この設定は、GIT_NOTES_REWRITE_REF環境変数で上書きできます。この変数は、コロンで区切られたrefsまたはglobのリストでなければなりません。

notes.rewriteMode

書き換え中にノートをコピーする場合("notes.rewrite.<command>" オプションを参照)、対象コミットに既にノートが存在する場合の処理を決定します。overwriteconcatenatecat_sort_uniq、またはignoreのいずれかでなければなりません。デフォルトはconcatenateです。

この設定は、GIT_NOTES_REWRITE_MODE環境変数で上書きできます。

notes.rewriteRef

書き換え中にノートをコピーする場合、コピーするノートの(完全修飾された)参照を指定します。glob を指定することもでき、その場合は、一致するすべての参照のノートがコピーされます。この設定を複数回指定することもできます。

デフォルト値はありません。ノートの書き換えを有効にするには、この変数を設定する必要があります。デフォルトのコミットノートの書き換えを有効にするには、refs/notes/commitsに設定します。

GIT_NOTES_REWRITE_REF環境変数で上書きできます。詳細については、上記のnotes.rewrite.<command>を参照してください。

pack.window

コマンドラインでウィンドウサイズが指定されていない場合、git-pack-objects[1] が使用するウィンドウのサイズです。デフォルトは10です。

pack.depth

コマンドラインで最大深度が指定されていない場合、git-pack-objects[1] が使用する最大デルタ深度です。デフォルトは50です。最大値は4095です。

pack.windowMemory

コマンドラインで制限が指定されていない場合、git-pack-objects[1] の各スレッドでパックウィンドウメモリに消費されるメモリの最大サイズです。値には "k"、"m"、または "g" のサフィックスを付けることができます。未設定の場合(または明示的に0に設定した場合)、制限はありません。

pack.compression

パックファイル内のオブジェクトの圧縮レベルを示す整数 (-1..9)。-1 は zlib のデフォルトです。0 は圧縮なし、1..9 は速度とサイズのトレードオフで、9 が最も遅いです。設定されていない場合、core.compression のデフォルト値が使用されます。これも設定されていない場合は、zlib のデフォルトである -1 が使用されます。「速度と圧縮のバランスをとったデフォルト(現在レベル6と同等)」です。

圧縮レベルを変更しても、既存のオブジェクトが自動的に再圧縮されるわけではありません。git-repack[1] に -F オプションを渡すことで、再圧縮を強制できます。

pack.allowPackReuse

true または "single" の場合、到達可能性ビットマップが有効な場合、pack-objects はビットマップパックファイルの一部をそのまま送信しようとします。"multi" の場合、マルチパック到達可能性ビットマップが利用可能な場合、pack-objects はMIDX内のすべてのパックの一部を送信しようとします。

単一のパックビットマップのみが利用可能で、pack.allowPackReuseが "multi" に設定されている場合、ビットマップパックファイルの一部のみを再利用します。これにより、フェッチの提供に必要なメモリとCPUの使用率を削減できますが、わずかに大きなパックを送信する可能性があります。デフォルトは true です。

pack.island

デルタアイランドのセットを設定する拡張正規表現です。詳細は、git-pack-objects[1] の「DELTA ISLANDS」を参照してください。

pack.islandCore

最初にパックされるオブジェクトを持つことができるアイランド名を指定します。これにより、1つのパックの先頭に一種の擬似パックが作成され、指定されたアイランドのオブジェクトは、これらのオブジェクトを要求するユーザーに提供されるパックにコピーする速度が向上する可能性があります。実際には、これは指定されたアイランドは、リポジトリで最も一般的にクローンされるものに相当する必要があることを意味します。git-pack-objects[1] の「DELTA ISLANDS」も参照してください。

pack.deltaCacheSize

git-pack-objects[1] でデルタをパックに書き出す前に、デルタをキャッシュするために使用される最大メモリサイズ(バイト単位)です。このキャッシュは、すべてのオブジェクトの最適な一致が見つかった後に最終的なデルタ結果を再計算する必要がないため、オブジェクトの書き込みフェーズの高速化に使用されます。ただし、メモリが不足しているマシンで大きなリポジトリを再パックすると、特にこのキャッシュによってシステムがスワップに追いやられる場合、悪影響を受ける可能性があります。0 の値は制限なしを意味します。1バイトという最小サイズは、このキャッシュを事実上無効にするために使用できます。デフォルトは 256 MiB です。

pack.deltaCacheLimit

git-pack-objects[1] でキャッシュされるデルタの最大サイズです。このキャッシュは、すべてのオブジェクトの最適な一致が見つかった後に最終的なデルタ結果を再計算する必要がないため、オブジェクトの書き込みフェーズの高速化に使用されます。デフォルトは 1000 です。最大値は 65535 です。

pack.threads

最適なデルタ一致を検索するときに生成するスレッド数を指定します。git-pack-objects[1] が pthreads でコンパイルされている必要があります。そうでない場合、このオプションは警告とともに無視されます。これは、マルチプロセッサマシンでのパッキング時間を短縮することを目的としています。ただし、デルタ検索ウィンドウに必要なメモリ量は、スレッド数に応じて乗算されます。0 を指定すると、Git は CPU の数を自動検出してスレッド数を設定します。

pack.indexVersion

デフォルトのパックインデックスバージョンを指定します。有効な値は、1.5.2 より前の Git バージョンで使用されていたレガシパックインデックスを表す 1 と、4 GB より大きいパックに対応した機能と、破損したパックの再パックに対する適切な保護機能を備えた新しいパックインデックスを表す 2 です。バージョン 2 がデフォルトです。対応するパックが 2 GB より大きい場合は、バージョン 2 が強制され、この設定オプションは無視されます。

バージョン 2 の *.idx ファイルを理解できない古い Git を使用している場合、*.pack ファイルと対応する *.idx ファイルの両方を他方からコピーするネイティブ以外のプロトコル(例:"http")を介してクローンまたはフェッチすると、古いバージョンの Git ではアクセスできないリポジトリが作成される可能性があります。ただし、*.pack ファイルが 2 GB より小さい場合は、*.pack ファイルで git-index-pack[1] を使用して *.idx ファイルを再生成できます。

pack.packSizeLimit

パックの最大サイズです。この設定は、再パック時のファイルへのパッキングにのみ影響します。つまり、git:// プロトコルには影響しません。git-repack[1]--max-pack-size オプションで上書きできます。この制限に達すると、複数のパックファイルが作成されます。

このオプションはほとんど役に立たず、ディスク全体のサイズが大きくなり(Git はパック間のデルタを保存しないため)、ランタイムのパフォーマンスが悪くなる可能性があります(複数のパック内でのオブジェクトの検索は単一のパックよりも遅く、到達可能性ビットマップなどの最適化は複数のパックに対応できません)。

より小さなパックファイルを使用して Git を積極的に実行する必要がある場合(例:ファイルシステムで大規模ファイルがサポートされていない場合)、このオプションが役立つ場合があります。ただし、制限されたサイズの媒体(例:リポジトリ全体を保存できないリムーバブルメディア)を介してパックファイルを転送することが目的の場合は、単一の大規模パックファイルを作成し、一般的な複数ボリュームアーカイブツール(例:Unix の split)を使用して分割する方が適切です。

許容される最小サイズは 1 MiB に制限されています。デフォルトは無制限です。km、または g の一般的な単位サフィックスがサポートされています。

pack.useBitmaps

true の場合、git は(利用可能な場合)標準出力にパックする際(例:フェッチのサーバー側)にパックビットマップを使用します。デフォルトは true です。パックビットマップをデバッグしている場合を除き、一般的にこれをオフにする必要はありません。

pack.useBitmapBoundaryTraversal

true の場合、Git はビットマップを使用して到達可能性クエリを計算するための実験的なアルゴリズムを使用します。すべての否定された先端の完全なビットマップを構築してからそれらを OR で結合する代わりに、既存のビットマップを持つ否定された先端を加算的(つまり、存在する場合は結果に OR で結合し、そうでない場合は無視する)と見なし、代わりに境界でビットマップを構築します。

このアルゴリズムを使用する場合、特定の UNINTERESTING コミットに属するツリーを開かないため、Git は結果として多くのオブジェクトを含める可能性があります。この不正確さは、非ビットマップトラバーサルアルゴリズムと一致します。

多くの場合、これは特にクエリの否定側でビットマップの範囲が低い場合、正確なアルゴリズムよりも高速化をもたらす可能性があります。

pack.useSparse

true の場合、--revs オプションが存在する場合、git はgit pack-objects--sparseオプションを使用するようにデフォルト設定します。このアルゴリズムは、新しいオブジェクトを導入するパスに表示されるツリーのみをウォークします。これは、小さな変更を送信するためのパックを計算する場合に、パフォーマンスを大幅に向上させる可能性があります。ただし、含まれるコミットに特定の種類の直接的な名前変更が含まれている場合、余分なオブジェクトがパックファイルに追加される可能性があります。デフォルトはtrueです。

pack.preferBitmapTips

どのコミットにビットマップを割り当てるかを選択する場合、この設定の値のいずれかのサフィックスである参照の先端にあるコミットを、「選択ウィンドウ」内の他のコミットよりも優先します。

この設定をrefs/fooに設定しても、refs/foo/barrefs/foo/bazの先端にあるコミットが必ず選択されるわけではありません。これは、コミットは可変長のウィンドウのシーケンスからビットマップのために選択されるためです。

この設定の値のいずれかのサフィックスである参照の先端にあるコミットがウィンドウ内に表示された場合、そのウィンドウ内の他のコミットよりも優先されます。

pack.writeBitmaps(非推奨)

これはrepack.writeBitmapsの非推奨の同義語です。

pack.writeBitmapHashCache

true の場合、git はビットマップインデックス(書き込まれている場合)に「ハッシュキャッシュ」セクションを含めます。このキャッシュは、git のデルタヒューリスティックに供給するために使用でき、ビットマップ化されたオブジェクトとビットマップ化されていないオブジェクト間のより良いデルタにつながる可能性があります(例:古いビットマップ化されたパックと最後の gc 以降にプッシュされたオブジェクト間のフェッチを提供する場合)。欠点は、オブジェクトごとに 4 バイトのディスク容量を消費することです。デフォルトは true です。

マルチパック到達可能性ビットマップを書き込む場合、新しい namehashes は計算されません。代わりに、既存のビットマップに格納されている namehashes は、新しいビットマップを書き込む際に適切な場所に置換されます。

pack.writeBitmapLookupTable

trueの場合、Gitはビットマップインデックス(書き込まれる場合)に「ルックアップテーブル」セクションを含めます。このテーブルは、個々のビットマップの読み込みを可能な限り遅らせるために使用されます。これは、比較的大きなビットマップインデックスを持つリポジトリで役立ちます。デフォルトはfalseです。

pack.readReverseIndex

trueの場合、Gitは使用可能な.revファイル(参照:gitformat-pack[5])を読み込みます。falseの場合、リバースインデックスはゼロから生成され、メモリに保存されます。デフォルトはtrueです。

pack.writeReverseIndex

trueの場合、Gitは書き込む新しいパックファイルごとに対応する.revファイル(参照:gitformat-pack[5])を書き込みます。ただし、git-fast-import[1]とバルクチェックインメカニズムを除きます。デフォルトはtrueです。

pager.<cmd>

値がブール値の場合、ttyへの書き込み時に特定のGitサブコマンドの出力のページングをオンまたはオフにします。それ以外の場合、pager.<cmd>の値で指定されたページャを使用して、サブコマンドのページングをオンにします。コマンドラインで--paginateまたは--no-pagerが指定されている場合、このオプションよりも優先されます。すべてのコマンドのページングを無効にするには、core.pagerまたはGIT_PAGERcatに設定します。

pretty.<name>

git-log[1]で指定されているように、--pretty=フォーマット文字列のエイリアスです。ここで定義されたエイリアスは、組み込みのprettyフォーマットと同様に使用できます。たとえば、git config pretty.changelog "format:* %H %s"を実行すると、git log --pretty=changelogの呼び出しはgit log "--pretty=format:* %H %s"の実行と同等になります。組み込みフォーマットと同じ名前のエイリアスは、サイレントに無視されます。

promisor.quiet

"true"に設定されている場合、部分クローンに追加のオブジェクトを取得する際に--quietを想定します。

protocol.allow

設定されている場合、明示的にポリシーを持たないすべてのプロトコル(protocol.<name>.allow)に対して、ユーザー定義のデフォルトポリシーを提供します。デフォルトでは、設定されていない場合、既知の安全なプロトコル(http、https、git、ssh)はデフォルトポリシーとしてalways、既知の危険なプロトコル(ext)はデフォルトポリシーとしてnever、その他すべてのプロトコル(fileを含む)はデフォルトポリシーとしてuserを持ちます。サポートされているポリシー

  • always - プロトコルは常に使用できます。

  • never - プロトコルは決して使用できません。

  • user - プロトコルは、GIT_PROTOCOL_FROM_USERが設定されていないか、値が1の場合にのみ使用できます。このポリシーは、ユーザーがプロトコルを直接使用できるようにしたいが、ユーザー入力なしにclone/fetch/pushコマンドを実行するコマンド(例:再帰的なサブモジュールの初期化)で使用させたくない場合に使用します。

protocol.<name>.allow

clone/fetch/pushコマンドでプロトコル<name>で使用されるポリシーを設定します。使用可能なポリシーについては、上記のprotocol.allowを参照してください。

Gitで現在使用されているプロトコル名は次のとおりです。

  • file: 任意のローカルファイルベースのパス(file:// URLまたはローカルパスを含む)

  • git: 直接TCP接続(または構成されている場合のプロキシ)を介した匿名gitプロトコル

  • ssh: ssh経由のgit(host:path構文、ssh://などを含む)

  • http: http経由のgit、「スマートhttp」と「ダムhttp」の両方。これはhttpsを含まないことに注意してください。両方設定する場合は、個別に設定する必要があります。

  • 外部ヘルパーは、プロトコル名で指定されます(例:git-remote-hgヘルパーを許可するにはhgを使用します)

protocol.version

設定されている場合、クライアントは指定されたプロトコルバージョンを使用してサーバーとの通信を試みます。サーバーがそれをサポートしていない場合、通信はバージョン0に戻ります。設定されていない場合、デフォルトは2です。サポートされているバージョン

  • 0 - 元のワイヤプロトコル。

  • 1 - サーバーからの最初のレスポンスにバージョン文字列を追加した元のワイヤプロトコル。

  • 2 - ワイヤプロトコルバージョン2、gitprotocol-v2[5]を参照。

pull.ff

デフォルトでは、Gitは現在のコミットの子孫であるコミットをマージする際に、追加のマージコミットを作成しません。代わりに、現在のブランチの先端は高速転送されます。falseに設定されている場合、この変数は、そのような場合にGitに追加のマージコミットを作成するように指示します(コマンドラインから--no-ffオプションを指定するのと同じです)。onlyに設定されている場合、そのような高速転送マージのみが許可されます(コマンドラインから--ff-onlyオプションを指定するのと同じです)。この設定は、プル時にmerge.ffをオーバーライドします。

pull.rebase

trueの場合、「git pull」の実行時に、デフォルトブランチをデフォルトリモートからマージする代わりに、フェッチされたブランチの上にブランチをリベースします。ブランチごとにこれを設定するには、「branch.<name>.rebase」を参照してください。

`merges` (または単に`m`)の場合、`git rebase`に`--rebase-merges`オプションを渡して、ローカルのマージコミットをrebaseに含めます(詳細についてはgit-rebase[1]を参照)。

値が`interactive`(または単に`i`)の場合、rebaseはインタラクティブモードで実行されます。

**注記**:これは危険な操作になる可能性があります。影響を理解していない限り、使用しないでください(詳細についてはgit-rebase[1]を参照)。

pull.octopus

一度に複数のブランチをプルする場合に使用するデフォルトのマージ戦略。

pull.twohead

単一のブランチをプルする場合に使用するデフォルトのマージ戦略。

push.autoSetupRemote

"true"に設定されている場合、現在のブランチに上流追跡が存在しない場合、デフォルトのpushで--set-upstreamを想定します。このオプションは、push.defaultオプションsimpleupstreamcurrentで有効になります。デフォルトで新しいブランチをデフォルトのリモートにプッシュしたい場合(push.default=currentの動作と同じ)、そして上流追跡も設定したい場合に便利です。このオプションから最も恩恵を受けるワークフローは、すべてのリモートブランチ名が同じであると想定されるsimpleな中央集権型ワークフローです。

push.default

refspecが指定されていない場合(コマンドライン、設定、またはその他の場所から)にgit pushが実行するアクションを定義します。さまざまな値は特定のワークフローに適しています。たとえば、純粋な中央集権型ワークフロー(つまり、フェッチ元とプッシュ先が等しい)では、upstreamがおそらく望ましいものです。可能な値は次のとおりです。

  • nothing - refspecが指定されていない限り、何もプッシュしません(エラー終了します)。これは、常に明示的にすることで間違いを避けたい人向けです。

  • current - 現在のブランチをプッシュして、受信側で同じ名前のブランチを更新します。中央集権型ワークフローと非中央集権型ワークフローの両方で機能します。

  • upstream - 現在のブランチに変更が通常統合されるブランチ(@{upstream}と呼ばれる)に現在のブランチをプッシュします。このモードは、通常プルするのと同じリポジトリにプッシュする場合(つまり、中央集権型ワークフロー)にのみ意味があります。

  • tracking - これはupstreamの非推奨の同義語です。

  • simple - リモートで同じ名前の現在のブランチをプッシュします。

    中央集権型ワークフロー(通常はoriginである、プルする同じリポジトリにプッシュする)で作業している場合は、同じ名前の上流ブランチを設定する必要があります。

    このモードはGit 2.0以降デフォルトであり、初心者にとって最も安全なオプションです。

  • matching - 両端で同じ名前を持つすべてのブランチをプッシュします。これにより、プッシュ先のレポジトリはプッシュされるブランチのセットを記憶します(たとえば、常にmaintmasterをプッシュし、他のブランチをプッシュしない場合、プッシュ先のレポジトリにはこれら2つのブランチがあり、ローカルのmaintmasterがそこにプッシュされます)。

    このモードを効果的に使用するには、git pushを実行する前に、プッシュするすべてのブランチがプッシュできる状態になっていることを確認する必要があります。このモードのポイントは、すべてのブランチを一括してプッシュできるようにすることです。通常、1つのブランチでの作業を終えて結果をプッシュし、他のブランチは未完成の場合、このモードは適していません。また、このモードは共有中央リポジトリへのプッシュには適していません。他のユーザーが新しいブランチを追加したり、制御できない既存のブランチの先端を更新する可能性があるためです。

    以前はデフォルトでしたが、Git 2.0以降はデフォルトではありません(simpleが新しいデフォルトです)。

push.followTags

trueに設定されている場合、デフォルトで--follow-tagsオプションを有効にします。--no-follow-tagsを指定することで、プッシュ時にこの設定をオーバーライドできます。

push.gpgSign

ブール値、または文字列if-askedに設定できます。trueの値により、すべてのプッシュにGPG署名が付けられます(git-push[1]--signedを渡した場合と同じです)。文字列if-askedにより、サーバーがサポートしている場合にのみプッシュに署名が付けられます(git push--signed=if-askedを渡した場合と同じです)。falseの値は、優先順位の低い設定ファイルからの値をオーバーライドする場合があります。明示的なコマンドラインフラグは、常にこの設定オプションをオーバーライドします。

push.pushOption

コマンドラインから--push-option=<option>引数が指定されていない場合、git pushは、この変数の各<value>が--push-option=<value>として渡されたかのように動作します。

これは複数値変数であり、空の値を優先順位の高い設定ファイル(例:リポジトリ内の.git/config)で使用して、優先順位の低い設定ファイル(例:$HOME/.gitconfig)から継承された値をクリアできます。

Example:

/etc/gitconfig
  push.pushoption = a
  push.pushoption = b

~/.gitconfig
  push.pushoption = c

repo/.git/config
  push.pushoption =
  push.pushoption = b

This will result in only b (a and c are cleared).
push.recurseSubmodules

"push --recurse-submodules"と同じ動作をする"check"、"on-demand"、"only"、または"no"にすることができます。設定されていない場合、submodule.recurseが設定されていない限り、デフォルトでnoが使用されます(その場合、trueの値はon-demandを意味します)。

push.useForceIfIncludes

"true"に設定されている場合、コマンドラインでgit-push[1]にオプションとして--force-if-includesを指定するのと同じです。プッシュ時に--no-force-if-includesを追加すると、この設定がオーバーライドされます。

push.negotiate

"true"に設定されている場合、クライアントとサーバーが共通のコミットを見つけるために試行するネゴシエーションラウンドにより、送信されるパックファイルのサイズを削減しようとします。"false"の場合、Gitはサーバーのrefアドバタイズメントのみに依存して共通のコミットを見つけます。

push.useBitmaps

pack.useBitmapsが"true"であっても、"git push"でのビットマップの使用を無効にし、他のgit操作がビットマップを使用するのを妨げません。デフォルトはtrueです。

rebase.backend

リベースに使用するデフォルトのバックエンド。可能な選択肢はapplyまたはmergeです。将来、マージバックエンドがapplyバックエンドの残りの機能をすべて獲得した場合、この設定は使用されなくなる可能性があります。

rebase.stat

前回のリベース以降に上流で変更された内容のdiffstatを表示するかどうか。デフォルトではfalseです。

rebase.autoSquash

trueに設定されている場合、インタラクティブモードでgit-rebase[1]--autosquashオプションをデフォルトで有効にします。これは--no-autosquashオプションでオーバーライドできます。

rebase.autoStash

trueに設定すると、操作開始前に一時的なstashエントリを自動的に作成し、操作終了後に適用します。これにより、ダーティなワークツリーでrebaseを実行できます。ただし、注意して使用してください。rebaseが成功した後に行われる最終的なstashの適用により、複雑な競合が発生する可能性があります。このオプションは、git-rebase[1]--no-autostashおよび--autostashオプションで上書きできます。デフォルトはfalseです。

rebase.updateRefs

trueに設定すると、デフォルトで--update-refsオプションが有効になります。

rebase.missingCommitsCheck

"warn"に設定されている場合、一部のコミットが削除されている場合(例:行が削除された場合)、git rebase -iは警告を表示しますが、rebaseは続行されます。"error"に設定されている場合、上記の警告を表示し、rebaseを停止します。その後、git rebase --edit-todoを使用してエラーを修正できます。"ignore"に設定されている場合、チェックは実行されません。警告やエラーなしでコミットを削除するには、todoリストでdropコマンドを使用します。デフォルトは"ignore"です。

rebase.instructionFormat

git-log[1]で指定されているような、インタラクティブなrebase中のtodoリストに使用されるフォーマット文字列です。このフォーマットには、コミットハッシュが自動的にプリペンドされます。

rebase.abbreviateCommands

trueに設定すると、git rebaseはtodoリストで省略されたコマンド名を使用します。例:

	p deadbee The oneline of the commit
	p fa1afe1 The oneline of the next commit
	...

(省略されたコマンド名)

	pick deadbee The oneline of the commit
	pick fa1afe1 The oneline of the next commit
	...

デフォルトはfalseです。

rebase.rescheduleFailedExec

失敗したexecコマンドを自動的に再スケジュールします。これはインタラクティブモード(または--execオプションが指定されている場合)でのみ意味があります。これは--reschedule-failed-execオプションを指定するのと同じです。

rebase.forkPoint

falseに設定すると、デフォルトで--no-fork-pointオプションが設定されます。

rebase.rebaseMerges

デフォルトで--rebase-mergesオプションを設定するかどうか、およびどのように設定するかを指定します。rebase-cousinsno-rebase-cousins、またはブール値にすることができます。trueまたはno-rebase-cousinsに設定することは--rebase-merges=no-rebase-cousinsと同じであり、rebase-cousinsに設定することは--rebase-merges=rebase-cousinsと同じであり、falseに設定することは--no-rebase-mergesと同じです。コマンドラインで引数付きまたは引数なしで--rebase-mergesを渡すと、すべてのrebase.rebaseMerges設定が上書きされます。

rebase.maxLabelLength

コミットの件名からラベル名を作成する場合、この長さまで名前を切り詰めます。デフォルトでは、名前はNAME_MAXよりも少し短い長さに切り詰められます(対応するルースリファレンスのために.lockファイルなどを記述できるようにするため)。

receive.advertiseAtomic

デフォルトでは、git-receive-packはクライアントにアトミックプッシュ機能をアドバタイズします。この機能をアドバタイズしたくない場合は、この変数をfalseに設定します。

receive.advertisePushOptions

trueに設定すると、git-receive-packはクライアントにプッシュオプション機能をアドバタイズします。デフォルトはfalseです。

receive.autogc

デフォルトでは、git-receive-packはgit-pushからのデータを受信してrefsを更新した後、「git maintenance run --auto」を実行します。この変数をfalseに設定することで停止できます。

receive.certNonceSeed

この変数を文字列に設定すると、git receive-packgit push --signedを受け入れ、この文字列を秘密鍵として使用するHMACで保護された「nonce」を使用して検証します。

receive.certNonceSlop

git push --signedが、この秒数以内に同じリポジトリを提供するreceive-packによって発行された「nonce」を含むプッシュ証明書を送信する場合、証明書にある「nonce」をフックにGIT_PUSH_CERT_NONCEとしてエクスポートします(receive-packが送信側に含めるように要求したものとは異なります)。これにより、pre-receivepost-receiveでチェックを少し簡単に記述できる可能性があります。nonceがどれくらい古いのかを判断するためにGIT_PUSH_CERT_NONCE_SLOP環境変数を確認する代わりに、GIT_PUSH_CERT_NONCE_STATUSOKであるかどうかを確認するだけで済みます。

receive.fsckObjects

trueに設定されている場合、git-receive-packは受信したすべてのオブジェクトをチェックします。チェックされる内容については、transfer.fsckObjectsを参照してください。デフォルトはfalseです。設定されていない場合、代わりにtransfer.fsckObjectsの値が使用されます。

receive.fsck.<msg-id>

fsck.<msg-id>のように動作しますが、git-fsck[1]ではなくgit-receive-pack[1]によって使用されます。詳細はfsck.<msg-id>のドキュメントを参照してください。

receive.fsck.skipList

fsck.skipListのように動作しますが、git-fsck[1]ではなくgit-receive-pack[1]によって使用されます。詳細はfsck.skipListのドキュメントを参照してください。

receive.keepAlive

クライアントからパックを受信した後、receive-packは(--quietが指定されている場合)パックの処理中に何も出力しない可能性があり、一部のネットワークでTCP接続が切断される原因となります。このオプションが設定されている場合、このフェーズでreceive.keepAlive秒間データを送信しない場合、短いキープアライブパケットを送信します。デフォルトは5秒です。キープアライブを完全に無効にするには0に設定します。

receive.unpackLimit

プッシュで受信したオブジェクト数がこの制限を下回っている場合、オブジェクトはルーズオブジェクトファイルに展開されます。ただし、受信したオブジェクト数がこの制限に達するか超えた場合、不足しているデルタベースを追加した後で、受信したパックはパックとして保存されます。プッシュからのパックを保存すると、特に遅いファイルシステムでは、プッシュ操作をより速く完了できます。設定されていない場合、代わりにtransfer.unpackLimitの値が使用されます。

receive.maxInputSize

受信パックストリームのサイズがこの制限を超えている場合、git-receive-packはパックファイルを受け入れる代わりにエラーになります。設定されていない場合、または0に設定されている場合、サイズは無制限です。

receive.denyDeletes

trueに設定すると、git-receive-packはrefを削除するref更新を拒否します。これを使用して、プッシュによるそのようなrefの削除を防ぎます。

receive.denyDeleteCurrent

trueに設定すると、git-receive-packは非ベア型リポジトリの現在チェックアウトされているブランチを削除するref更新を拒否します。

receive.denyCurrentBranch

trueまたは"refuse"に設定されている場合、git-receive-packは非ベア型リポジトリの現在チェックアウトされているブランチへのref更新を拒否します。このようなプッシュは、HEADがインデックスと作業ツリーと同期しなくなるため、危険性があります。"warn"に設定されている場合、そのようなプッシュの警告をstderrに出力しますが、プッシュは続行されます。"false"または"ignore"に設定されている場合、メッセージなしでそのようなプッシュを許可します。デフォルトは"refuse"です。

別のオプションとして"updateInstead"があり、現在のブランチにプッシュする場合、作業ツリーを更新します。このオプションは、一方をインタラクティブなsshで簡単にアクセスできない場合(例:ライブWebサイト、そのため作業ディレクトリがクリーンである必要があります)の作業ディレクトリの同期を目的としています。このモードは、異なるオペレーティングシステムでコードをテストおよび修正するためにVM内で開発する場合にも便利です。

デフォルトでは"updateInstead"は、作業ツリーまたはインデックスにHEADとの違いがある場合、プッシュを拒否しますが、push-to-checkoutフックを使用してこれをカスタマイズできます。githooks[5]を参照してください。

receive.denyNonFastForwards

trueに設定されている場合、git-receive-packはfast-forwardではないref更新を拒否します。プッシュが強制された場合でも、プッシュによるそのような更新を防ぐために使用します。この設定変数は、共有リポジトリを初期化するときに設定されます。

receive.hideRefs

この変数はtransfer.hideRefsと同じですが、receive-packのみに適用されます(したがって、フェッチではなくプッシュに影響します)。git pushによる非表示のrefの更新または削除の試みは拒否されます。

receive.procReceiveRefs

これは、receive-packのコマンドと一致する参照プレフィックスを定義する複数値変数です。プレフィックスと一致するコマンドは、内部のexecute_commands関数ではなく、外部フック「proc-receive」によって実行されます。この変数が定義されていない場合、「proc-receive」フックは決して使用されず、すべてのコマンドは内部のexecute_commands関数によって実行されます。

たとえば、この変数が「refs/for」に設定されている場合、「refs/for/master」などの参照へのプッシュは、「refs/for/master」という名前の参照を作成または更新しませんが、「proc-receive」フックを実行することでプルリクエストを直接作成または更新できます。

特定のアクション、作成(a)、変更(m)、削除(d)のコマンドをフィルタリングするために、値の先頭にオプションの修飾子を付けることができます。参照プレフィックスエントリを否定するには、修飾子に!を含めることができます。例:

git config --system --add receive.procReceiveRefs ad:refs/heads
git config --system --add receive.procReceiveRefs !:refs/heads
receive.updateServerInfo

trueに設定すると、git-receive-packはgit-pushからのデータを受信してrefsを更新した後、git-update-server-infoを実行します。

receive.shallowUpdate

trueに設定されている場合、新しいrefsに新しいshallowルートが必要な場合、.git/shallowを更新できます。そうでない場合、これらのrefsは拒否されます。

reftable.blockSize

reftableバックエンドがブロックを書き込む際に使用するバイト単位のサイズ。ブロックサイズはライターによって決定され、2のべき乗である必要はありません。ブロックサイズは、リポジトリで使用される最長の参照名またはログエントリよりも大きくなければなりません。参照はブロックをまたがることはできないためです。

仮想メモリシステムまたはファイルシステムに適した2のべき乗(4kBまたは8kBなど)をお勧めします。サイズが大きい(64kB)ほど圧縮率が向上する可能性がありますが、アクセス時のリーダーにかかるコストが増加する可能性があります。

最大ブロックサイズは16777215バイト(15.99 MiB)です。デフォルト値は4096バイト(4kB)です。0の値はデフォルト値を使用します。

reftable.restartInterval

再開ポイントを作成する間隔です。reftable バックエンドは、ファイル作成時に再開ポイントを決定します。ブロックサイズが小さい場合(4k または 8k)は 16 ごとが、ブロックサイズが大きい場合(64k)は 64 ごとがより適している場合があります。

再開ポイントの頻度を増やすと、プレフィックス圧縮が減少し、再開テーブルによって消費されるスペースが増加し、その両方によってファイルサイズが増加します。

再開ポイントの頻度を減らすと、プレフィックス圧縮がより効果的になり、全体的なファイルサイズが減少しますが、バイナリ検索ステップ後により多くのレコードを処理する読者に対するペナルティが増加します。

ブロックあたり最大65535個の再開ポイントがサポートされています。

デフォルト値は、16 レコードごとに再開ポイントを作成することです。0 の値はデフォルト値を使用します。

reftable.indexObjects

reftable バックエンドがオブジェクトブロックを書き込むかどうかを指定します。オブジェクトブロックは、オブジェクト ID とそれを指す参照の逆マッピングです。

デフォルト値はtrueです。

reftable.geometricFactor

reftable バックエンドがスタックに新しいテーブルを追加するたびに、自動圧縮を実行して、テーブルが少数のみに保たれるようにします。バックエンドは、各テーブルのサイズに関してテーブルが幾何級数列を形成するようにすることでこれを実行します。

デフォルトでは、幾何級数列は係数 2 を使用します。つまり、任意のテーブルに対して、次の大きいテーブルは少なくとも 2 倍の大きさでなければなりません。最大係数は 256 がサポートされています。

reftable.lockTimeout

reftable バックエンドがスタックに新しいテーブルを追加するたびに、更新する前に中央の "tables.list" ファイルをロックする必要があります。この設定は、別のプロセスが既にロックを取得している場合に、プロセスがロックの取得を待機する時間を制御します。値 0 はまったく再試行しないことを意味し、-1 は無期限に再試行することを意味します。デフォルトは 100(つまり、100 ミリ秒間再試行)です。

remote.pushDefault

デフォルトでプッシュするリモートです。すべてのブランチについてbranch.<name>.remoteをオーバーライドし、特定のブランチについてはbranch.<name>.pushRemoteによってオーバーライドされます。

remote.<name>.url

リモートリポジトリの URL です。git-fetch[1]またはgit-push[1]を参照してください。設定されたリモートには複数の URL を持つことができます。この場合、最初の URL がフェッチに使用され、すべてがプッシュに使用されます(remote.<name>.pushurlが定義されていないと仮定)。このキーを空文字列に設定すると、URL のリストがクリアされ、以前の設定をオーバーライドできます。

remote.<name>.pushurl

リモートリポジトリのプッシュ URL です。git-push[1]を参照してください。設定されたリモートにpushurlオプションが存在する場合は、remote.<name>.urlの代わりにプッシュに使用されます。設定されたリモートには複数のプッシュ URL を持つことができます。この場合、プッシュはそれらのすべてに送信されます。このキーを空文字列に設定すると、URL のリストがクリアされ、以前の設定をオーバーライドできます。

remote.<name>.proxy

curl を必要とするリモート(http、https、および ftp)の場合、そのリモートに使用するプロキシの URL です。そのリモートのプロキシを無効にするには、空文字列に設定します。

remote.<name>.proxyAuthMethod

curl を必要とするリモート(http、https、および ftp)の場合、使用中のプロキシ(おそらくremote.<name>.proxyに設定されている)に対して認証するために使用するメソッドです。http.proxyAuthMethodを参照してください。

remote.<name>.fetch

git-fetch[1]の「refspec」のデフォルトセットです。git-fetch[1]を参照してください。

remote.<name>.push

git-push[1]の「refspec」のデフォルトセットです。git-push[1]を参照してください。

remote.<name>.mirror

true の場合、このリモートへのプッシュは、コマンドラインで--mirrorオプションが指定された場合と同様に動作します。

remote.<name>.skipDefaultUpdate

remote.<name>.skipFetchAllの非推奨の同義語です(両方が異なる値で設定ファイルに設定されている場合、最後の出現値が使用されます)。

remote.<name>.skipFetchAll

true の場合、git-fetch[1]git-remote[1]updateサブコマンドを使用して更新する場合、このリモートはスキップされ、git maintenanceのプリフェッチタスクによって無視されます。

remote.<name>.receivepack

プッシュ時にリモート側で実行するデフォルトのプログラムです。git-push[1]のオプション --receive-pack を参照してください。

remote.<name>.uploadpack

フェッチ時にリモート側で実行するデフォルトのプログラムです。git-fetch-pack[1]のオプション --upload-pack を参照してください。

remote.<name>.tagOpt

この値を --no-tags に設定すると、リモート <name> からフェッチする際の自動タグ追従が無効になります。--tags に設定すると、リモートブランチヘッドから到達可能でない場合でも、リモート <name> からすべてのタグがフェッチされます。これらのフラグを git-fetch[1] に直接渡すと、この設定をオーバーライドできます。git-fetch[1] のオプション --tags と --no-tags を参照してください。

remote.<name>.vcs

<vcs> の値に設定すると、Git は git-remote-<vcs> ヘルパーを使用してリモートと対話します。

remote.<name>.prune

true に設定されている場合、このリモートからのフェッチは、リモートに存在しなくなったリモート追跡参照をすべて削除します(コマンドラインで--pruneオプションが指定された場合と同様)。fetch.prune設定(存在する場合)をオーバーライドします。

remote.<name>.pruneTags

true に設定されている場合、remote.<name>.prunefetch.prune、または--pruneによって一般的にプルーニングが有効になっている場合、このリモートからのフェッチは、リモートに存在しなくなったローカルタグも削除します。fetch.pruneTags設定(存在する場合)をオーバーライドします。

remote.<name>.prunegit-fetch[1]のPRUNINGセクションも参照してください。

remote.<name>.promisor

true に設定されている場合、このリモートはプロミサーオブジェクトのフェッチに使用されます。

remote.<name>.partialclonefilter

このプロミサーリモートからフェッチするときに適用されるフィルターです。この値を変更またはクリアしても、新しいコミットのフェッチにのみ影響します。ローカルオブジェクトデータベースに既に存在するコミットに関連付けられたオブジェクトをフェッチするには、git-fetch[1]--refetchオプションを使用します。

remotes.<group>

"git remote update <group>"によってフェッチされるリモートのリストです。git-remote[1]を参照してください。

repack.useDeltaBaseOffset

デフォルトで、git-repack[1]はデルタベースオフセットを使用するパックを作成します。バージョン 1.4.4 より前の Git と直接または http などのダンププロトコルを介してリポジトリを共有する必要がある場合は、このオプションを "false" に設定して repack する必要があります。ネイティブプロトコルを介した古い Git バージョンからのアクセスはこのオプションの影響を受けません。

repack.packKeptObjects

true に設定すると、git repack--pack-kept-objectsが渡された場合と同様に動作します。詳細はgit-repack[1]を参照してください。通常はfalseですが、ビットマップインデックスが書き込まれている場合(--write-bitmap-indexまたはrepack.writeBitmapsを介して)はtrueになります。

repack.useDeltaIslands

true に設定すると、git repack--delta-islandsが渡された場合と同様に動作します。デフォルトはfalseです。

repack.writeBitmaps

true の場合、Git はすべてのオブジェクトをディスクにパックする際にビットマップインデックスを書き込みます(例:git repack -aが実行された場合)。このインデックスにより、クローンとフェッチのために作成された後続のパックの「オブジェクトの計数」フェーズを高速化できますが、ディスク容量と初期 repack にかかる時間が増加します。複数の packfile が作成される場合は、効果がありません。ベアリポジトリでは true、それ以外の場合は false がデフォルトです。

repack.updateServerInfo

false に設定されている場合、git-repack[1]git-update-server-info[1]を実行しません。デフォルトは true です。true の場合、git-repack[1]-nオプションでオーバーライドできます。

repack.cruftWindow
repack.cruftWindowMemory
repack.cruftDepth
repack.cruftThreads

クラフトパックを生成する際にgit-pack-objects[1]で使用されるパラメータと、コマンドラインで対応するパラメータが指定されていない場合のパラメータです。デフォルト値と意味については、同様に名前が付けられたpack.*設定変数を参照してください。

rerere.autoUpdate

true に設定されている場合、git-rerereは、以前に記録された解決策を使用して競合をクリーンに解決した後、結果の内容でインデックスを更新します。デフォルトは false です。

rerere.enabled

解決された競合の記録を有効にします。これにより、同じ競合ハンクが再び発生した場合、自動的に解決できます。デフォルトでは、$GIT_DIRの下にrr-cacheディレクトリがある場合(例:「rerere」が以前にリポジトリで使用されていた場合)、git-rerere[1]が有効になります。

revert.reference

この変数を true に設定すると、git revert--referenceオプションが指定された場合と同様に動作します。

safe.bareRepository

Git が動作するベアリポジトリを指定します。現在サポートされている値は次のとおりです。

  • all:Git はすべてのベアリポジトリで動作します。これがデフォルトです。

  • explicit:Git は、最上位の--git-dirコマンドラインオプションまたはGIT_DIR環境変数(git[1]を参照)を介して指定されたベアリポジトリでのみ動作します。

    ワークフローでベアリポジトリを使用しない場合は、グローバル設定でsafe.bareRepositoryexplicitに設定すると便利です。これにより、ベアリポジトリを含むリポジトリをクローンし、そのディレクトリ内で Git コマンドを実行する攻撃から保護されます。

    この設定は、保護された設定(SCOPESを参照)でのみ尊重されます。これにより、信頼できないリポジトリがこの値を改ざんすることを防ぎます。

safe.directory

これらの設定エントリは、現在のユーザー以外のユーザーが所有していても安全と見なされる Git で追跡されるディレクトリを指定します。デフォルトでは、Git は他のユーザーが所有するリポジトリの Git 設定を解析することさえ拒否し、そのフックを実行することも拒否します。この設定を使用すると、ユーザーは例外を指定できます(例:意図的に共有されるリポジトリの場合(git-init[1]--sharedオプションを参照))。

これは複数値の設定です。つまり、git config --addを介して複数のディレクトリを追加できます。安全なディレクトリのリストをリセットするには(例:システム設定で指定されているそのようなディレクトリをオーバーライドするには)、空の値を持つsafe.directoryエントリを追加します。

この設定は、保護された設定(SCOPESを参照)でのみ尊重されます。これにより、信頼できないリポジトリがこの値を改ざんすることを防ぎます。

この設定の値は補間されます。つまり、~/<path>はホームディレクトリに対する相対パスに展開され、%(prefix)/<path>は Git の(ランタイム)プレフィックスに対する相対パスに展開されます。

このセキュリティチェックを完全に無効にするには、safe.directoryを文字列*に設定します。これにより、すべてのリポジトリが、そのディレクトリがsafe.directoryリストに記載されているかのように扱われます。システム設定でsafe.directory=*が設定されていて、この保護を再び有効にしたい場合は、安全とみなすリポジトリをリストする前に、空の値でリストを初期化してください。ディレクトリに/*を追加すると、指定されたディレクトリ配下のすべてのリポジトリへのアクセスが許可されます。

説明したように、Gitはデフォルトでは、Gitを実行しているユーザー(つまり、Gitを実行しているユーザー自身)が所有するリポジトリへのアクセスのみを許可します。ただし、Windows以外のプラットフォームでsudoが提供されている環境でGitをrootとして実行する場合、Gitはsudoが作成するSUDO_UID環境変数をチェックし、rootのIDに加えて、その値として記録されているuidへのアクセスを許可します。「make && sudo make install」という一般的なインストールシーケンスを容易にするためです。sudoで実行されているgitプロセスはrootとして実行されますが、sudoコマンドは環境変数をエクスポートして、元のユーザーのIDを記録します。それが望ましくない場合、rootが所有するリポジトリのみをGitで信頼したい場合は、gitを呼び出す前に、rootの環境からSUDO_UID変数を削除できます。

sendemail.identity

設定された識別子です。指定された場合、sendemail.<identity>セクションの値が、sendemailセクションの値よりも優先されます。デフォルトの識別子はsendemail.identityの値です。

sendemail.smtpEncryption

git-send-email[1]の説明を参照してください。この設定は、identityメカニズムの影響を受けません。

sendemail.smtpSSLCertPath

ca-certificatesへのパス(ディレクトリまたは単一ファイル)。証明書検証を無効にするには、空の文字列に設定します。

sendemail.<identity>.*

以下にあるsendemail.*パラメータの識別子固有のバージョンです。コマンドラインまたはsendemail.identityでこの識別子が選択されている場合、それらのパラメータよりも優先されます。

sendemail.multiEdit

trueの場合(デフォルト)、編集する必要があるファイル(--annotateを使用する際のpatch、--composeを使用する際のsummary)を編集するためのエディターインスタンスが1つ生成されます。falseの場合、ファイルは順番に編集され、毎回新しいエディターが生成されます。

sendemail.confirm

送信前に確認するかどうかをデフォルトで設定します。alwaysnevercccompose、またはautoのいずれかである必要があります。git-send-email[1]のドキュメントの--confirmで、これらの値の意味を参照してください。

sendemail.mailmap

trueの場合、git-send-email[1]--mailmapを想定し、それ以外の場合は--no-mailmapを想定します。デフォルトはfalseです。

sendemail.mailmap.file

git-send-email[1]専用の拡張メールマップファイルの場所です。デフォルトのmailmapとmailmap.fileが最初にロードされます。そのため、このファイルのエントリは、デフォルトのmailmapの場所のエントリよりも優先されます。gitmailmap[5]を参照してください。

sendemail.mailmap.blob

sendemail.mailmap.fileと似ていますが、リポジトリ内のblobへの参照として値を考慮します。sendemail.mailmap.fileのエントリは、ここにあるエントリよりも優先されます。gitmailmap[5]を参照してください。

sendemail.aliasesFile

長いメールアドレスを入力するのを避けるために、1つ以上のメールエイリアスファイルにこれをポイントします。sendemail.aliasFileTypeも指定する必要があります。

sendemail.aliasFileType

sendemail.aliasesFileで指定されたファイルの形式。muttmailrcpineelmgnus、またはsendmailのいずれかである必要があります。

各形式のエイリアスファイルの具体的な記述は、同じ名前のメールプログラムのドキュメントにあります。標準形式からの違いと制限事項については、以下に説明します。

sendmail
  • 引用符で囲まれたエイリアスと引用符で囲まれたアドレスはサポートされていません。"記号を含む行は無視されます。

  • ファイルへのリダイレクト(/path/name)またはパイプ(|command)はサポートされていません。

  • ファイルのインクルード(:include: /path/name)はサポートされていません。

  • 明示的にサポートされていない構造、およびパーサーで認識されないその他の行については、標準エラー出力に警告が出力されます。

sendemail.annotate
sendemail.bcc
sendemail.cc
sendemail.ccCmd
sendemail.chainReplyTo
sendemail.envelopeSender
sendemail.from
sendemail.headerCmd
sendemail.signedOffByCc
sendemail.smtpPass
sendemail.suppressCc
sendemail.suppressFrom
sendemail.to
sendemail.toCmd
sendemail.smtpDomain
sendemail.smtpServer
sendemail.smtpServerPort
sendemail.smtpServerOption
sendemail.smtpUser
sendemail.thread
sendemail.transferEncoding
sendemail.validate
sendemail.xmailer

これらの設定変数はすべて、git-send-email[1]コマンドラインオプションのデフォルトを提供します。詳細は、そのドキュメントを参照してください。

sendemail.signedOffCc(非推奨)

sendemail.signedOffByCcの非推奨のエイリアスです。

sendemail.smtpBatchSize

接続ごとに送信されるメッセージの数です。この数に達すると、再ログインが行われます。値が0または未定義の場合、すべてのメッセージを1つの接続で送信します。git-send-email[1]--batch-sizeオプションも参照してください。

sendemail.smtpReloginDelay

smtpサーバーへの再接続を待つ時間(秒単位)です。git-send-email[1]--relogin-delayオプションも参照してください。

sendemail.forbidSendmailVariables

一般的な誤った設定ミスを防ぐために、git-send-email[1]は、「sendmail」の設定オプションが存在する場合、警告と共に異常終了します。この変数を設定すると、チェックをバイパスできます。

sequence.editor

git rebase -iでリベース命令ファイルの編集に使用されるテキストエディターです。値は、使用時にシェルによって解釈されることを意図しています。GIT_SEQUENCE_EDITOR環境変数で上書きできます。設定されていない場合、デフォルトのコミットメッセージエディターが代わりに使用されます。

showBranch.default

git-show-branch[1]のデフォルトのブランチセットです。git-show-branch[1]を参照してください。

sparse.expectFilesOutsideOfPatterns

通常、スパースチェックアウトでは、スパースパターンに一致しないファイルはインデックスにSKIP_WORKTREEビットが付与され、作業ツリーに存在しません。したがって、Gitは通常、SKIP_WORKTREEビットが付与されているファイルが、期待に反して作業ツリーに実際に存在するかどうかをチェックします。Gitがそれらを見つけると、関連するSKIP_WORKTREEビットをクリアすることで、それらのパスが存在するとマークします。このオプションは、そのような存在するにもかかわらずスキップされたファイルが期待されていることをGitに伝え、それらのファイルのチェックを停止するために使用できます。

デフォルトはfalseで、これによりGitは、インデックスと作業ツリーのファイルリストの同期が解除された状態から自動的に回復できます。

作業ツリーファイルの存在とスパースパターンの一貫性を維持する責任をGitから解放する何らかの外部要因がある設定の場合、これをtrueに設定します。たとえば、アクセスパターンに基づいて作業ツリーとスパースパターンを最新の状態に維持するための堅牢なメカニズムを備えたGit対応の仮想ファイルシステムを使用している場合などです。

この設定に関係なく、スパースチェックアウトが有効でない限り、Gitは存在するにもかかわらずスキップされたファイルをチェックしないため、core.sparseCheckouttrueでない限り、この設定オプションは効果がありません。

splitIndex.maxPercentChange

分割インデックス機能を使用する場合、これは、新しい共有インデックスが書き込まれる前に、分割インデックスと共有インデックスの両方の合計エントリ数と比較して、分割インデックスに含まれることができるエントリの割合を指定します。値は0〜100の間である必要があります。値が0の場合、常に新しい共有インデックスが書き込まれます。値が100の場合、新しい共有インデックスは決して書き込まれません。デフォルト値は20なので、分割インデックスのエントリ数が合計エントリ数の20%を超える場合、新しい共有インデックスが書き込まれます。git-update-index[1]を参照してください。

splitIndex.sharedIndexExpire

分割インデックス機能を使用する場合、この変数が指定する時間以降変更されていない共有インデックスファイルは、新しい共有インデックスファイルが作成されるときに削除されます。"now"という値はすべてエントリをすぐに期限切れにし、"never"は期限切れを完全に抑制します。デフォルト値は"2.weeks.ago"です。共有インデックスファイルは(期限切れの目的で)、新しい分割インデックスファイルがそのファイルに基づいて作成された場合、またはそのファイルから読み取られた場合に、変更されたと見なされます。git-update-index[1]を参照してください。

ssh.variant

デフォルトでは、Git は設定された SSH コマンドの basename に基づいて使用するコマンドライン引数を決定します (環境変数 `GIT_SSH` または `GIT_SSH_COMMAND`、あるいは config 設定 `core.sshCommand` を使用して設定)。basename が認識されない場合、Git はまず設定された SSH コマンドを `-G` (設定を出力) オプション付きで呼び出すことで OpenSSH オプションのサポートを検出しようとします。そして、成功した場合は OpenSSH オプションを使用し、失敗した場合はホストとリモートコマンド以外のオプションを使用しません。

config 変数 `ssh.variant` を設定して、この検出を上書きできます。有効な値は `ssh` (OpenSSH オプションを使用する)、`plink`、`putty`、`tortoiseplink`、`simple` (ホストとリモートコマンド以外のオプションを使用しない) です。デフォルトの自動検出は、値 `auto` を使用して明示的に要求できます。それ以外の値は `ssh` として扱われます。この設定は、環境変数 `GIT_SSH_VARIANT` でも上書きできます。

各バリアントで使用される現在のコマンドラインパラメータは以下のとおりです。

  • ssh - [-p port] [-4] [-6] [-o option] [username@]host command

  • simple - [username@]host command

  • plink または putty - [-P port] [-4] [-6] [username@]host command

  • tortoiseplink - [-P port] [-4] [-6] -batch [username@]host command

simple バリアントを除き、コマンドラインパラメータは、git に新しい機能が追加されるにつれて変更される可能性があります。

stash.showIncludeUntracked

これを true に設定すると、`git stash show` コマンドは stash エントリの untracked ファイルを表示します。デフォルトは false です。 git-stash[1] の *show* コマンドの説明を参照してください。

stash.showPatch

これを true に設定すると、オプションなしの `git stash show` コマンドは stash エントリをパッチ形式で表示します。デフォルトは false です。 git-stash[1] の *show* コマンドの説明を参照してください。

stash.showStat

これを true に設定すると、オプションなしの `git stash show` コマンドは stash エントリの diffstat を表示します。デフォルトは true です。 git-stash[1] の *show* コマンドの説明を参照してください。

status.relativePaths

デフォルトでは、git-status[1] は現在のディレクトリを基準とした相対パスを表示します。この変数を `false` に設定すると、リポジトリルートを基準とした相対パスが表示されます (これは Git v1.5.4 より前のデフォルトでした)。

status.short

git-status[1] でデフォルトで --short を有効にするには true に設定します。 --no-short オプションは、この変数よりも優先されます。

status.branch

git-status[1] でデフォルトで --branch を有効にするには true に設定します。 --no-branch オプションは、この変数よりも優先されます。

status.aheadBehind

非ポーセレン形式のステータス出力において、git-status[1] でデフォルトで `--ahead-behind` を有効にするには true に、`--no-ahead-behind` を有効にするには false に設定します。デフォルトは true です。

status.displayCommentPrefix

true に設定されている場合、git-status[1] は各出力行の前にコメントプレフィックスを挿入します ( `core.commentChar` で始まる、つまりデフォルトでは `#`)。これは Git 1.8.4 以前の git-status[1] の動作でした。デフォルトは false です。

status.renameLimit

git-status[1]git-commit[1] で名前変更検出を行う際に考慮するファイル数です。デフォルトは diff.renameLimit の値です。

status.renames

git-status[1]git-commit[1] で Git が名前変更を検出する方法です。"false" に設定すると、名前変更検出は無効になります。"true" に設定すると、基本的な名前変更検出が有効になります。"copies" または "copy" に設定すると、コピーも検出されます。デフォルトは diff.renames の値です。

status.showStash

true に設定すると、git-status[1] は現在stashされているエントリ数を表示します。デフォルトは false です。

status.showUntrackedFiles

デフォルトでは、git-status[1]git-commit[1] は、現在 Git によって追跡されていないファイルを表示します。追跡されていないファイルのみを含むディレクトリは、ディレクトリ名のみが表示されます。追跡されていないファイルを表示するには、Git はリポジトリ全体のすべてのファイルに対して lstat() する必要があり、一部のシステムでは遅くなる可能性があります。そのため、この変数はコマンドが追跡されていないファイルをどのように表示するかを制御します。可能な値は

  • no - 追跡されていないファイルを表示しません。

  • normal - 追跡されていないファイルとディレクトリを表示します。

  • all - 追跡されていないディレクトリ内の個々のファイルも表示します。

この変数が指定されていない場合、デフォルトは *normal* です。ブール値 `true` の通常のスペルはすべて `normal` として、`false` は `no` として扱われます。この変数は、git-status[1]git-commit[1] の -u|--untracked-files オプションで上書きできます。

status.submoduleSummary

デフォルトは false です。これを 0 以外の数値または true ( -1 または無制限の数と同一) に設定すると、サブモジュールのサマリーが有効になり、変更されたサブモジュールのコミットのサマリーが表示されます (git-submodule[1] の --summary-limit オプションを参照)。`diff.ignoreSubmodules` が *all* に設定されている場合、または `submodule.<name>.ignore=all` のサブモジュールに対しては、サマリー出力コマンドがすべて抑制されることに注意してください。この規則の唯一の例外は、ステータスとコミットがステージングされたサブモジュールの変更を表示することです。無視されたサブモジュールのサマリーも表示するには、 --ignore-submodules=dirty コマンドラインオプションまたは *git submodule summary* コマンドを使用できます。これは同様の出力を表示しますが、これらの設定を尊重しません。

submodule.<name>.url

サブモジュールの URL です。この変数は、`.gitmodules` ファイルから *git submodule init* を介して git config にコピーされます。ユーザーは、*git submodule update* を介してサブモジュールを取得する前に、設定された URL を変更できます。`submodule.<name>.active` と `submodule.active` のどちらも設定されていない場合、この変数の存在は、サブモジュールが git コマンドにとって重要かどうかを示すフォールバックとして使用されます。git-submodule[1]gitmodules[5] の詳細を参照してください。

submodule.<name>.update

*git submodule update* によってサブモジュールが更新される方法です。これは影響を受ける唯一のコマンドであり、*git checkout --recurse-submodules* など他のコマンドには影響しません。これは、*git submodule* がサブモジュールと対話する唯一のコマンドだった歴史的な理由で存在します。`submodule.active` や `pull.rebase` などの設定の方が具体的です。gitmodules[5] ファイルから `git submodule init` によって設定されます。git-submodule[1] の *update* コマンドの説明を参照してください。

submodule.<name>.branch

サブモジュールのリモートブランチ名で、`git submodule update --remote` によって使用されます。`.gitmodules` ファイルで見つかった値を上書きするには、このオプションを設定します。git-submodule[1]gitmodules[5] の詳細を参照してください。

submodule.<name>.fetchRecurseSubmodules

このオプションを使用して、このサブモジュールの再帰的なフェッチを制御できます。"git fetch" と "git pull" に対する --[no-]recurse-submodules コマンドラインオプションを使用して上書きできます。この設定は gitmodules[5] ファイルの設定を上書きします。

submodule.<name>.ignore

"git status" と diff 系のコマンドがサブモジュールを変更済みとして表示する状況を定義します。"all" に設定すると、変更済みとして扱われることはありません (ただし、ステージングされた場合はステータスとコミットの出力に表示されます)。"dirty" はサブモジュールの作業ツリーへのすべての変更を無視し、サブモジュールの HEAD とスーパープロジェクトに記録されたコミットの違いのみを考慮します。"untracked" はさらに、作業ツリーに変更された追跡済みファイルを持つサブモジュールを表示します。"none" (このオプションが設定されていない場合のデフォルト) は、作業ツリーに変更された追跡されていないファイルを持つサブモジュールも変更済みとして表示します。この設定は、このサブモジュールに対して .gitmodules で行われた設定を上書きし、両方の設定は --ignore-submodules オプションを使用してコマンドラインで上書きできます。*git submodule* コマンドはこの設定の影響を受けません。

submodule.<name>.active

サブモジュールが git コマンドにとって重要かどうかを示すブール値です。この config オプションは、submodule.active config オプションよりも優先されます。gitsubmodules[7] の詳細を参照してください。

submodule.active

サブモジュールのパスと照合して、サブモジュールが git コマンドにとって重要かどうかを判断するために使用されるパススペックを含む繰り返しフィールドです。gitsubmodules[7] の詳細を参照してください。

submodule.recurse

コマンドがデフォルトで `--recurse-submodules` オプションを有効にするかどうかを示すブール値です。デフォルトは false です。

true に設定されている場合、`--no-recurse-submodules` オプションで無効にすることができます。このオプションがない一部の Git コマンドは、`submodule.recurse` によって影響を受ける上記のコマンドの一部を呼び出す可能性があります。たとえば、`git remote update` は `git fetch` を呼び出しますが、`--no-recurse-submodules` オプションはありません。これらのコマンドについては、`git -c submodule.recurse=0` を使用して設定値を一時的に変更することで回避策があります。

`--recurse-submodules` を受け入れるコマンドと、この設定でサポートされているかどうかを示す一覧を以下に示します。

  • `checkout`、`fetch`、`grep`、`pull`、`push`、`read-tree`、`reset`、`restore`、`switch` は常にサポートされています。

  • `clone` と `ls-files` はサポートされていません。

  • `branch` は、`submodule.propagateBranches` が有効になっている場合のみサポートされます。

submodule.propagateBranches

[実験的] `--recurse-submodules` または `submodule.recurse=true` を使用する場合にブランチサポートを有効にするブール値です。これを有効にすると、特定のコマンドで `--recurse-submodules` を受け入れることができ、既に `--recurse-submodules` を受け入れる特定のコマンドではブランチが考慮されるようになります。デフォルトは false です。

submodule.fetchJobs

同時にフェッチ/クローンされるサブモジュールの数を指定します。正の整数は、最大その数のサブモジュールを並列にフェッチすることを許可します。値 0 は、ある程度の妥当なデフォルトを与えます。設定されていない場合、デフォルトは 1 です。

submodule.alternateLocation

サブモジュールがクローンされる際に、サブモジュールが代替を取得する方法を指定します。可能な値はnosuperprojectです。デフォルトではnoが想定され、参照は追加されません。値がsuperprojectに設定されている場合、クローンされるサブモジュールは、スーパープロジェクトの代替を基準としたその代替の場所を計算します。

submodule.alternateErrorStrategy

submodule.alternateLocationを介して計算されたサブモジュールの代替に関するエラーの処理方法を指定します。可能な値はignoreinfodieです。デフォルトはdieです。ignoreまたはinfoに設定されている場合、計算された代替にエラーがある場合、代替が指定されていないかのようにクローンが続行されます。

tag.forceSignAnnotated

作成されるアノテーション付きタグをGPGで署名するかどうかを指定するブール値です。コマンドラインで--annotateが指定されている場合、このオプションよりも優先されます。

tag.sort

この変数は、git-tag[1]によって表示される際のタグのソート順序を制御します。"--sort=<value>"オプションが提供されていない場合、この変数の値がデフォルトとして使用されます。

tag.gpgSign

すべてのタグをGPGで署名するかどうかを指定するブール値です。自動化されたスクリプトの実行時にこのオプションを使用すると、多数のタグが署名される可能性があります。そのため、gpgパスフレーズを何度も入力するのを避けるために、エージェントを使用するのが便利です。このオプションは、"-u <keyid>"または"--local-user=<keyid>"オプションによって有効になっているタグ署名の動作には影響しません。

tar.umask

この変数は、tarアーカイブエントリのパーミッションビットを制限するために使用できます。デフォルトは0002で、ワールドライトビットをオフにします。特別な値 "user" は、代わりにアーカイブするユーザーのumaskが使用されることを示します。umask(2)とgit-archive[1]を参照してください。

Trace2設定は、システムとグローバル設定ファイルからのみ読み取られます。リポジトリローカルとワークツリー設定ファイル、および-cコマンドライン引数は考慮されません。

trace2.normalTarget

この変数は、通常のターゲットの宛先を制御します。GIT_TRACE2環境変数によって上書きされる可能性があります。次の表に可能な値を示します。

trace2.perfTarget

この変数は、パフォーマンスターゲットの宛先を制御します。GIT_TRACE2_PERF環境変数によって上書きされる可能性があります。次の表に可能な値を示します。

trace2.eventTarget

この変数は、イベントターゲットの宛先を制御します。GIT_TRACE2_EVENT環境変数によって上書きされる可能性があります。次の表に可能な値を示します。

  • 0またはfalse - ターゲットを無効にします。

  • 1またはtrue - STDERRに書き込みます。

  • [2-9] - すでに開いているファイルディスクリプタに書き込みます。

  • <absolute-pathname> - ファイルに追記モードで書き込みます。ターゲットが既に存在し、ディレクトリである場合、トレースは指定されたディレクトリの下にあるファイル(プロセスごとに1つ)に書き込まれます。

  • af_unix:[<socket-type>:]<absolute-pathname> - Unixドメインソケットに書き込みます(サポートしているプラットフォームの場合)。ソケットタイプはstreamまたはdgramのいずれかです。省略した場合、Gitは両方を試みます。

trace2.normalBrief

ブール値。trueの場合、timefilenamelineフィールドは通常の出力から省略されます。GIT_TRACE2_BRIEF環境変数によって上書きされる可能性があります。デフォルトはfalseです。

trace2.perfBrief

ブール値。trueの場合、timefilenamelineフィールドはPERF出力から省略されます。GIT_TRACE2_PERF_BRIEF環境変数によって上書きされる可能性があります。デフォルトはfalseです。

trace2.eventBrief

ブール値。trueの場合、timefilenamelineフィールドはイベント出力から省略されます。GIT_TRACE2_EVENT_BRIEF環境変数によって上書きされる可能性があります。デフォルトはfalseです。

trace2.eventNesting

整数。イベント出力におけるネストされた領域の深さを指定します。この値よりも深い領域は省略されます。GIT_TRACE2_EVENT_NESTING環境変数によって上書きされる可能性があります。デフォルトは2です。

trace2.configParams

trace2出力に記録されるべき「重要な」設定の、カンマ区切りのパターンリストです。例えば、core.*,remote.*.urlは、trace2出力に設定された各リモートをリストするイベントを含めるようにします。GIT_TRACE2_CONFIG_PARAMS環境変数によって上書きされる可能性があります。デフォルトでは設定されていません。

trace2.envVars

trace2出力に記録されるべき「重要な」環境変数の、カンマ区切りのリストです。例えば、GIT_HTTP_USER_AGENT,GIT_CONFIGは、trace2出力にHTTPユーザーエージェントのオーバーライドとGit設定ファイルの場所をリストするイベントを含めるようにします(設定されている場合)。GIT_TRACE2_ENV_VARS環境変数によって上書きされる可能性があります。デフォルトでは設定されていません。

trace2.destinationDebug

ブール値。trueの場合、トレースターゲットの宛先を書き込みのために開くことができない場合、Gitはエラーメッセージを出力します。デフォルトでは、これらのエラーは抑制され、トレースはサイレントに無効になります。GIT_TRACE2_DST_DEBUG環境変数によって上書きされる可能性があります。

trace2.maxFiles

整数。トレースファイルをターゲットディレクトリに書き込む場合、それを行うとこのファイル数を超える場合、追加のトレースを書き込みません。代わりに、このディレクトリへのさらなるトレースをブロックするセンティネルファイルを書き込みます。デフォルトは0で、このチェックは無効になります。

transfer.credentialsInUrl

設定されたURLには、<protocol>://<user>:<password>@<domain>/<path>形式のプレーンテキストの資格情報が含まれている可能性があります。git-credential[1]の使用を優先して、そのような設定の使用について警告したり禁止したりする場合があります。これはgit-clone[1]git-fetch[1]git-push[1]、および設定されたURLのその他の直接的な使用で利用されます。

これは現在、remote.<name>.url設定の資格情報の検出に限定されていることに注意してください。remote.<name>.pushurl設定の資格情報は検出しません。

不注意による資格情報の漏洩を防ぐために、これを有効にしたい場合があります。例えば、

  • Gitを実行しているOSまたはシステムでは、ユーザー名とパスワードが保存されている設定ファイルのパーミッションを設定する方法がないか、許可されていない可能性があります。

  • たとえ可能であっても、そのようなデータを「保存状態」で保存すると、他の方法で危険にさらされる可能性があります。例えば、バックアッププロセスがデータを別のシステムにコピーする可能性があります。

  • Gitプログラムは、コマンドラインで引数として完全なURLを互いに渡すため、資格情報は、他のユーザーの完全なプロセスリストを見ることができるシステム上の他の特権のないユーザーに公開されます。Linuxでは、procfs(5)に記載されている"hidepid"設定により、この動作を設定できます。

    このような懸念事項が適用されない場合は、Gitの設定ファイルに機密データを保存することによる資格情報の漏洩について心配する必要はないでしょう。これを実際に使用したい場合は、transfer.credentialsInUrlを次のいずれかの値に設定します。

  • allow(デフォルト):Gitは警告なしにアクティビティを続行します。

  • warn:プレーンテキストの資格情報を含むURLを解析すると、Gitは警告メッセージをstderrに書き込みます。

  • die:プレーンテキストの資格情報を含むURLを解析すると、Gitはエラーメッセージをstderrに書き込みます。

transfer.fsckObjects

fetch.fsckObjectsまたはreceive.fsckObjectsが設定されていない場合、この変数の値が代わりに使用されます。デフォルトはfalseです。

設定されている場合、不正なオブジェクトまたは存在しないオブジェクトへのリンクがある場合、フェッチまたは受信は中止されます。さらに、レガシーの問題(fsck.<msg-id>を参照)、.GITディレクトリの存在や悪意のある.gitmodulesファイルなど、潜在的なセキュリティ問題など、さまざまな問題がチェックされます(詳細については、v2.2.1とv2.17.1のリリースノートを参照してください)。将来のリリースでは、他の健全性チェックとセキュリティチェックが追加される可能性があります。

受信側では、fsckObjectsに失敗すると、それらのオブジェクトにアクセスできなくなります。git-receive-pack[1]の「QUARANTINE ENVIRONMENT」を参照してください。フェッチ側では、不正なオブジェクトはリポジトリ内で参照されないままになります。

fetch.fsckObjects実装の非隔離の性質により、receive.fsckObjectsのようにオブジェクトストアをクリーンな状態に保つことはできません。

オブジェクトはアンパックされるとオブジェクトストアに書き込まれるため、悪意のあるオブジェクトが「フェッチ」が失敗したにもかかわらず導入され、後続の「フェッチ」が成功する可能性があります。これは、既にオブジェクトストアに書き込まれているオブジェクトではなく、新しい着信オブジェクトのみがチェックされるためです。その動作の違いは依存すべきではありません。将来的には、そのようなオブジェクトも「フェッチ」のために隔離される可能性があります。

現時点では、偏執狂的なユーザーは、「push」と同じ保護を希望する場合、隔離環境をエミュレートする方法を見つける必要があります。たとえば、内部ミラーの場合、ミラーリングを2つのステップで行い、1つは信頼できないオブジェクトをフェッチし、次に別の内部リポジトリに2番目の「push」(隔離を使用します)を行い、内部クライアントがこのプッシュされたリポジトリを使用するか、内部フェッチを差し止め、完全な「fsck」を実行した後(そしてそれ以降に新しいフェッチが発生していない場合)のみ許可する必要があります。

transfer.hideRefs

receive-packupload-pack は、初期広告からどの参照を省略するかを決定するために、この変数の値を使用します。複数のプレフィックス文字列を指定するには、複数の定義を使用します。この変数の値にリストされている階層の下にある参照は除外され、git push または git fetch に応答する際に非表示になります。この設定のプログラム固有のバージョンについては、receive.hideRefsuploadpack.hideRefs を参照してください。

参照名の前に!を付けることで、エントリを否定し、以前のエントリで非表示としてマークされていた場合でも、明示的に表示することもできます。複数のhideRefsの値がある場合、後のエントリは前のエントリを上書きします(より具体的な設定ファイルのエントリは、あまり具体的な設定ファイルのエントリを上書きします)。

名前空間が使用されている場合、参照がtransfer.hiderefsパターンと照合される前に、名前空間プレフィックスが各参照から削除されます。削除する前に参照を照合するには、参照名の前に^を追加します。!^を組み合わせる場合、!を最初に指定する必要があります。

たとえば、transfer.hideRefsrefs/heads/masterが指定され、現在の名前空間がfooの場合、refs/namespaces/foo/refs/heads/masterは広告から省略されます。uploadpack.allowRefInWantが設定されている場合、upload-packはプロトコルv2のfetchコマンドのwant-ref refs/heads/masterを、refs/namespaces/foo/refs/heads/masterが存在しないかのように扱います。一方、receive-packは、その名前(いわゆる ".have" 行)を言及せずに、参照が指しているオブジェクトIDを依然として広告します。

参照を非表示にしても、クライアントは`gitnamespaces[7]`マニュアルページの「セキュリティ」セクションで説明されている手法を使用して、ターゲットオブジェクトを盗むことができる場合があります。機密データは別のリポジトリに保管することをお勧めします。

transfer.unpackLimit

fetch.unpackLimitまたはreceive.unpackLimitが設定されていない場合、代わりにこの変数の値が使用されます。デフォルト値は100です。

transfer.advertiseSID

ブール値。trueの場合、クライアントプロセスとサーバープロセスは、リモートの対応物に独自のセッションIDをアドバタイズします。デフォルトはfalseです。

transfer.bundleURI

trueの場合、ローカルのgit cloneコマンドは、リモートサーバーからバンドル情報(アドバタイズされている場合)を要求し、Gitプロトコルを介してクローンを続行する前にバンドルをダウンロードします。デフォルトはfalseです。

transfer.advertiseObjectInfo

trueの場合、サーバーによってobject-info機能がアドバタイズされます。デフォルトはfalseです。

uploadarchive.allowUnreachable

trueの場合、クライアントはgit archive --remoteを使用して、参照先から到達可能かどうかに関係なく、任意のツリーを要求できます。詳細については、`git-upload-archive[1]`の「セキュリティ」セクションの議論を参照してください。デフォルトはfalseです。

uploadpack.hideRefs

この変数はtransfer.hideRefsと同じですが、upload-packのみに適用されます(したがって、プッシュではなくフェッチのみに影響します)。git fetchによって非表示の参照を取得しようとすると失敗します。uploadpack.allowTipSHA1InWantも参照してください。

uploadpack.allowTipSHA1InWant

uploadpack.hideRefsが有効な場合、非表示の参照の先端にあるオブジェクトを要求するフェッチ要求をupload-packが受け入れることを許可します(デフォルトでは、そのような要求は拒否されます)。uploadpack.hideRefsも参照してください。これがfalseの場合でも、クライアントは`gitnamespaces[7]`マニュアルページの「セキュリティ」セクションで説明されている手法を使用してオブジェクトを盗むことができる場合があります。機密データは別のリポジトリに保管することをお勧めします。

uploadpack.allowReachableSHA1InWant

任意の参照先から到達可能なオブジェクトを要求するフェッチ要求をupload-packが受け入れることを許可します。ただし、オブジェクトの到達可能性の計算には、計算コストがかかることに注意してください。デフォルトはfalseです。これがfalseの場合でも、クライアントは`gitnamespaces[7]`マニュアルページの「セキュリティ」セクションで説明されている手法を使用してオブジェクトを盗むことができる場合があります。機密データは別のリポジトリに保管することをお勧めします。

uploadpack.allowAnySHA1InWant

任意のオブジェクトを要求するフェッチ要求をupload-packが受け入れることを許可します。デフォルトはfalseです。

uploadpack.keepAlive

upload-packpack-objectsを開始すると、pack-objectsがパックを準備している間に静止期間がある場合があります。通常は進捗情報を出力しますが、フェッチに--quietが使用された場合、パックデータが始まるまでpack-objectsは何も出力しません。一部のクライアントとネットワークは、サーバーがハングしていると見なし、諦める可能性があります。このオプションを設定すると、upload-packは、uploadpack.keepAlive秒ごとに空のキープアライブパケットを送信するよう指示されます。このオプションを0に設定すると、キープアライブパケットは完全に無効になります。デフォルトは5秒です。

uploadpack.packObjectsHook

このオプションが設定されている場合、upload-packがクライアントのためにパックファイルを作成するためにgit pack-objectsを実行する場合、代わりにこのシェルコマンドを実行します。それが実行するであろうpack-objectsコマンドとその引数(先頭のgit pack-objectsを含む)は、シェルコマンドに追加されます。フックのstdinとstdoutは、pack-objects自体が実行されたかのように扱われます。つまり、upload-packpack-objectsを目的とした入力をフックに供給し、stdoutに完成したパックファイルが期待されます。

この設定変数は、保護された設定で指定されている場合にのみ尊重されることに注意してください(`SCOPES`を参照)。これは、信頼できないリポジトリからのフェッチに対する安全対策です。

uploadpack.allowFilter

このオプションが設定されている場合、upload-packは部分クローンと部分フェッチオブジェクトのフィルタリングをサポートします。

uploadpackfilter.allow

未指定のオブジェクトフィルターのデフォルト値を提供します(以下の設定変数を参照)。trueに設定すると、将来追加されるすべてのフィルターも有効になります。デフォルトはtrueです。

uploadpackfilter.<filter>.allow

<filter>に対応するオブジェクトフィルターを明示的に許可または禁止します。ここで<filter>は、blob:noneblob:limitobject:typetreesparse:oid、またはcombineのいずれかになります。組み合わせたフィルターを使用する場合は、combineとすべてのネストされたフィルターの種類を許可する必要があります。デフォルトはuploadpackfilter.allowです。

uploadpackfilter.tree.maxDepth

<n>uploadpackfilter.tree.maxDepthの値以下である場合にのみ、--filter=tree:<n>を許可します。設定されている場合、この設定変数が既に設定されていない限り、uploadpackfilter.tree.allow=trueも意味します。設定されていない場合は効果がありません。

uploadpack.allowRefInWant

このオプションが設定されている場合、upload-packはプロトコルバージョン2のfetchコマンドのref-in-want機能をサポートします。この機能は、レプリケーションの遅延により、参照が指しているOIDについて同じビューを持っていない可能性のあるロードバランスされたサーバーの利点のために意図されています。

url.<base>.insteadOf

この値で始まるURLは、代わりに<base>で始まるように書き換えられます。あるサイトが多数のリポジトリを提供し、複数のアクセス方法で提供し、一部のユーザーが異なるアクセス方法を使用する必要がある場合、この機能により、ユーザーは同等のURLのいずれかを指定し、Gitがそのサイトのこれまで見たことのないリポジトリについても、特定のユーザーにとって最適な代替URLに自動的にURLを書き換えることができます。複数のinsteadOf文字列が特定のURLに一致する場合、最も長い一致が使用されます。

プロトコルの制限は、書き換えられたURLに適用されることに注意してください。書き換えによってURLがカスタムプロトコルまたはリモートヘルパーを使用するように変更された場合、要求を許可するためにprotocol.*.allow設定を調整する必要がある場合があります。特に、サブモジュールで使用することを期待するプロトコルは、デフォルトのuserではなくalwaysに設定する必要があります。上記のprotocol.allowの説明を参照してください。

url.<base>.pushInsteadOf

この値で始まるURLにはプッシュされません。代わりに、<base>で始まるように書き換えられ、結果のURLにプッシュされます。あるサイトが多数のリポジトリを提供し、複数のアクセス方法で提供し、その一部がプッシュを許可しない場合、この機能により、ユーザーはプル専用URLを指定し、Gitがそのサイトのこれまで見たことのないリポジトリについても、適切なURLを自動的に使用してプッシュすることができます。複数のpushInsteadOf文字列が特定のURLに一致する場合、最も長い一致が使用されます。リモートに明示的なpushurlがある場合、Gitはそのリモートに対してこの設定を無視します。

user.name
user.email
author.name
author.email
committer.name
committer.email

user.nameuser.email変数は、コミットオブジェクトのauthorフィールドとcommitterフィールドに何が含まれるかを決定します。authorまたはcommitterを別のものにする必要がある場合は、author.nameauthor.emailcommitter.name、またはcommitter.email変数を設定できます。これらはすべて、GIT_AUTHOR_NAMEGIT_AUTHOR_EMAILGIT_COMMITTER_NAMEGIT_COMMITTER_EMAIL、およびEMAIL環境変数によって上書きできます。

これらの変数のname形式は、慣例的に何らかの個人名を参照することに注意してください。これらの設定の詳細については、`git-commit[1]`と`git[1]`の環境変数のセクション、認証資格情報を求めている場合は`git[1]`の`credential.username`オプションを参照してください。

user.useConfigOnly

Gitに、user.emailuser.nameのデフォルトを推測しようとせず、代わりに設定からの値のみを取得するように指示します。たとえば、複数のメールアドレスがあり、リポジトリごとに異なるメールアドレスを使用する場合、グローバル設定でこの設定オプションをtrueに設定し、名前を設定すると、Gitは新しいコミットを作成する前に、新しくクローンされたリポジトリでメールアドレスの設定を促します。デフォルトはfalseです。

user.signingKey

署名付きタグまたはコミットを作成するときに、`git-tag[1]`または`git-commit[1]`が自動的に目的のキーを選択しない場合、この変数を使用してデフォルトの選択を上書きできます。このオプションは、gpgの--local-userパラメーターに変更せずに渡されるため、gpgがサポートする任意の方法を使用してキーを指定できます。gpg.formatがsshに設定されている場合、これはプライベートsshキーまたはssh-agentが使用されている場合の公開キーのいずれかのパスを含めることができます。あるいは、key::で始まる公開キーを直接含めることもできます(例:「key::ssh-rsa XXXXXX identifier」)。プライベートキーはssh-agentを介して利用可能である必要があります。設定されていない場合、Gitはgpg.ssh.defaultKeyCommand(例:「ssh-add -L」)を呼び出し、利用可能な最初のキーを使用しようとします。「ssh-」で始まる生のキー(例:「ssh-rsa XXXXXX identifier」)は「key::ssh-rsa XXXXXX identifier」として扱われますが、この形式は非推奨です。代わりにkey::形式を使用してください。

versionsort.prereleaseSuffix(非推奨)

versionsort.suffixの非推奨のエイリアス。versionsort.suffixが設定されている場合、無視されます。

versionsort.suffix

バージョンソートをgit-tag[1]で使用する場合でも、同じベースバージョンだがサフィックスの異なるタグ名は辞書順でソートされます。そのため、例えば、プレリリースタグがメインリリースの後に表示されることになります(例:「1.0」の後に「1.0-rc1」)。この変数は、サフィックスの異なるタグのソート順を決定するために指定できます。

この変数に単一のサフィックスを指定すると、そのサフィックスを含むタグ名はすべて、対応するメインリリースの前に表示されます。例えば、変数を「-rc」に設定すると、すべての「1.0-rcX」タグは「1.0」の前に表示されます。複数回(サフィックスごとに1回)指定すると、設定ファイル内のサフィックスの順序によって、それらのサフィックスを持つタグ名のソート順が決まります。例えば、「-pre」が設定ファイルで「-rc」の前にある場合、すべての「1.0-preX」タグは「1.0-rcX」タグの前にリストされます。様々なサフィックスを持つタグに対するメインリリースタグの位置は、他のサフィックスの中に空のサフィックスを指定することで決定できます。例えば、サフィックス「-rc」、「」、「-ck」、「-bfs」が設定ファイルにこの順序で表示される場合、すべての「v4.8-rcX」タグが最初にリストされ、次に「v4.8」、その後「v4.8-ckX」、最後に「v4.8-bfsX」がリストされます。

複数のサフィックスが同じタグ名に一致する場合、タグ名はタグ名内で最も早い位置から始まるサフィックスに従ってソートされます。その最も早い位置から始まる異なる一致するサフィックスが複数ある場合、タグ名はそれらのサフィックスの中で最も長いものに従ってソートされます。異なるサフィックス間のソート順序は、複数の設定ファイルにある場合は定義されません。

web.browser

一部のコマンドで使用できるウェブブラウザを指定します。現在、git-instaweb[1]git-help[1]のみが使用できます。

worktree.guessRemote

ブランチが指定されておらず、-b-B--detachも使用されていない場合、git worktree addはHEADから新しいブランチを作成することをデフォルトとします。worktree.guessRemoteがtrueに設定されている場合、worktree addは、その名前が新しいブランチ名と一意に一致するリモート追跡ブランチを見つけようとします。そのようなブランチが存在する場合は、チェックアウトされ、新しいブランチの「上流」として設定されます。そのような一致が見つからない場合は、現在のHEADから新しいブランチを作成するという元の動作に戻ります。

バグ

非推奨の[section.subsection]構文を使用している場合、値を変更すると、サブセクションに少なくとも1つ以上の大文字が含まれている場合、変更ではなく複数行のキーが追加されます。例えば、設定が次のようになっている場合

  [section.subsection]
    key = value1

そしてgit config section.Subsection.key value2を実行すると、次のようになります。

  [section.subsection]
    key = value1
    key = value2

Git

git[1] スイートの一部

scroll-to-top