English ▾ トピック ▾ 最新バージョン ▾ git-config 最終更新日: 2.50.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>
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 オプションが指定されていない限り、拡張正規表現です) を指定する必要があります。パターンに一致する既存の値のみが更新または解除されます。パターンに一致しない行を扱いたい場合は、先頭に単一の感嘆符を追加するだけです (「」も参照してください)。ただし、これは --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> のいずれかです。

OPTIONS

--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 に最も一致する <section>.<URL>.<key> の値が返されます (そのようなキーが存在しない場合は、<section>.<key> の値がフォールバックとして使用されます)。名前として <section> のみを指定すると、セクション内のすべてのキーに対して同様に処理され、それらが一覧表示されます。値が見つからない場合はエラーコード 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>/ の形式であることに注意してください。extensions.worktreeConfig を有効にする方法については、git-worktree[1] を参照してください。

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

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

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

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

--blob <blob>

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

--fixed-value

value-pattern 引数とともに使用する場合、value-pattern を正規表現ではなく厳密な文字列として扱います。これにより、値が value-pattern と完全に一致する名/値ペアのみにマッチングが制限されます。

--type <type>

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

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

  • bool: trueyeson、および正の数を「true」として、falsenooff、および 0 を「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

クエリされたすべての設定オプションの出力に、元のタイプ (ファイル、標準入力、ブロブ、コマンドライン) と実際の元の情報 (設定ファイルのパス、参照、またはブロブ 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

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

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

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

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

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

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

スコープ

各設定ソースは設定スコープ内に含まれます。スコープは次のとおりです。

システム

$(prefix)/etc/gitconfig

グローバル

$XDG_CONFIG_HOME/git/config

~/.gitconfig

ローカル

$GIT_DIR/config

ワークツリー

$GIT_DIR/config.worktree

コマンド

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

-c オプション

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

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

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

保護された設定

保護された設定とは、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> がプロセスの実行時設定に追加されます。設定ペアはゼロインデックスです。キーまたは値が欠落している場合はエラーとして扱われます。空の 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

次のようにしてファイルモードを true に設定できます。

% git config set core.filemode true

仮想的なプロキシコマンドエントリには、実際に適用される URL を識別するための postfix があります。ここでは、kernel.org のエントリを "ssh" に変更する方法を示します。

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

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

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

% 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 ...」という postfix のない行のみを置き換えたい場合は、次のようにします。

% 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 に設定され、他のすべての場合は 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 の内部コマンドと高レベルコマンドの両方で使用されます。変数はセクションに分割されており、変数自体の完全修飾変数名は最後のドット区切りのセグメントであり、セクション名は最後のドットの前のすべてです。変数名は大文字と小文字を区別せず、英数字と - のみを使用でき、英字で始まらなければなりません。一部の変数は複数回出現することがあります。その場合、その変数は多値変数であると言われます。

構文

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

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

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

	[section "subsection"]

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

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

その他の行 (およびセクションヘッダーの後の行の残りの部分) は、name = value の形式 (または単に name。これは変数がブール値の「true」であることを示す省略形です) で変数を設定するものとして認識されます。変数名は大文字と小文字を区別せず、英数字と - のみを使用でき、英字で始まらなければなりません。

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

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

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

インクルード

includeincludeIf セクションでは、別のソースからの設定ディレクティブをインクルードできます。これらのセクションは、条件が true に評価されない場合に includeIf セクションが無視される点を除いて、互いに同じように動作します。詳細については、下記の「条件付きインクルード」を参照してください。

特別な include.path (または includeIf.*.path) 変数をインクルードするファイルの名前に設定することで、他の設定ファイルをインクルードできます。この変数にはパス名が値として設定され、チルダ展開の対象となります。これらの変数は複数回指定できます。

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

条件付きインクルード

includeIf.<condition>.path 変数をインクルードするファイルの名前に設定することで、他の設定ファイルを条件付きでインクルードできます。

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

gitdir

キーワード gitdir: の後に続くデータはグロブパターンとして使用されます。.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: の後に続くデータは、標準のグロブワイルドカードと、複数のパスコンポーネントに一致できる **//** の 2 つの追加のワイルドカードを持つパターンとみなされます。現在チェックアウトされているブランチの名前がパターンに一致するワークツリーにいる場合、インクルード条件が満たされます。

パターンが / で終わる場合、** が自動的に追加されます。たとえば、パターン foo/foo/** になります。つまり、foo/ で始まるすべてのブランチに一致します。これは、ブランチが階層的に整理されており、その階層内のすべてのブランチに構成を適用したい場合に役立ちます。

hasconfig:remote.*.url:

このキーワードの後に続くデータは、標準のグロブワイルドカードと、複数のコンポーネントに一致できる **//** の 2 つの追加のワイルドカードを持つパターンとみなされます。このキーワードが最初に見つかったとき、残りの設定ファイルはリモート URL をスキャンします (値を適用せずに)。このパターンに一致するリモート URL が少なくとも 1 つ存在する場合、インクルード条件が満たされます。

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

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

このキーワードの命名に関しては、より変数ベースのインクルード条件をサポートする命名スキームとの前方互換性のためのものですが、現在 Git は上記で説明した厳密なキーワードのみをサポートしています。

gitdir および gitdir/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

ブール値の真のリテラルは yesontrue、および 1 です。また、= <value> なしで定義された変数は真として扱われます。

false

ブール値の偽のリテラルは noofffalse0 および空の文字列です。

--type=bool 型指定子を使用して値を正規形式に変換するとき、git config は出力が「true」または「false」(小文字で表記) であることを保証します。

整数

さまざまなサイズを指定する多くの変数の値は、"1024 倍"、"1024x1024 倍" などを意味する kM、... の接尾辞を付けることができます。

色を受け取る変数の値は、スペースで区切られた色 (最大 2 つ、前景と背景に 1 つずつ) と属性 (必要なだけ) のリストです。

受け入れられる基本色は normalblackredgreenyellowbluemagentacyanwhitedefault です。最初に指定された色が前景、2 番目が背景です。normaldefault を除くすべての基本色は、brightred のように色を bright でプレフィックスすることで指定できる明るいバリアントを持ちます。

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

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

色を 0 から 255 の間の数値で指定することもできます。これらは ANSI 256 色モードを使用します (ただし、すべての端末がこれをサポートしているわけではないことに注意してください)。端末がサポートしている場合、#ff0ab3 のような 24 ビット RGB 値、または #ff11bb の 24 ビットカラーに相当する #f1b のような 12 ビット RGB 値を指定することもできます。

受け入れられる属性は、bolddimulblinkreverseitalicstrike (打ち消し線、または「取り消し線」の文字) です。色の属性に対する位置 (前、後、または間) は関係ありません。特定の属性は no または no- を前置することで無効にすることができます (例: noreverseno-ul など)。

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

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

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

パス名

パス名の値を取る変数は、"~/" または "~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

複数のリモートに対するフェッチ refspec が同じリモートトラッキングブランチの名前空間にマッピングされ、ブランチトラッキングの設定に失敗した場合に表示されます。

checkoutAmbiguousRemoteBranchName

git-checkout[1] および git-switch[1] の引数が、複数のリモートでリモートトラッキングブランチに曖昧に解決される場合に表示されます。通常であれば、曖昧でない引数であればリモートトラッキングブランチがチェックアウトされたはずの状況です。このアドバイスが表示される一部の状況で、特定のリモートをデフォルトで使用するように設定する方法については、checkout.defaultRemote 設定変数を参照してください。

commitBeforeMerge

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

detachedHead

ユーザーが git-switch[1] または git-checkout[1] を使用して detached HEAD 状態に移行したときに、後からローカルブランチを作成する方法をユーザーに伝えるために表示されます。

diverging

早送りマージが不可能な場合に表示されます。

fetchShowForcedUpdates

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

forceDeleteBranch

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

ignoredHook

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

implicitIdentity

システムユーザー名とドメイン名からユーザー情報が推測されたときに、ユーザーにその ID 設定方法を伝えるために表示されます。

mergeConflict

衝突のためにさまざまなコマンドが停止したときに表示されます。

nestedTag

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

pushAlreadyExists

git-push[1] が早送りマージの条件を満たさない更新 (例: タグ) を拒否した場合に表示されます。

pushFetchFirst

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

pushNeedsForce

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

pushNonFFCurrent

git-push[1] が、現在のブランチへのノン・ファストフォワード更新のために失敗した場合に表示されます。

pushNonFFMatching

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

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] がローカル参照とリモート追跡参照の ahead/behind カウントを計算し、その計算が予想よりも時間がかかった場合に表示されます。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 status の出力を git ps でページ送りできるため、便利なエイリアスとなるでしょう。

エイリアス展開の前に感嘆符が付いている場合、それはシェルコマンドとして扱われます。たとえば、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 コマンドラインに提供された追加の引数を常に位置引数として受け取ります。

    • シェルエイリアスが複数のコマンドを持つ「ワンライナー」スクリプトである場合 (例: パイプライン内)、複数の引数を参照する場合、または末尾に追加される位置引数を処理できない場合、注意が必要です。たとえば、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 に設定すると、この設定は、パッチが適用されるブロブの ID を記録しており、そのブロブがローカルで利用可能な場合、git am に 3 者間マージにフォールバックするように指示します (コマンドラインから --3way オプションを与えることと同等です)。デフォルトは false です。git-am[1] を参照してください。

apply.ignoreWhitespace

change に設定すると、--ignore-space-change オプションと同様に、git apply に空白文字の変更を無視するように指示します。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] の「Pseudo-merge bitmaps」セクションを参照してください。
bitmapPseudoMerge.<name>.pattern

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

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

疑似マージグループ内では、パターン内のキャプチャグループに基づいて、コミットをさらにサブグループにグループ化できます。これらのサブグループは、正規表現からキャプチャグループを連結し、間に - ダッシュを挟むことによって形成されます。

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

bitmapPseudoMerge.<name>.decay

連続する疑似マージビットマップグループのサイズが減少する割合を決定します。負ではない値である必要があります。このパラメータは、関数 f(n) = C * n^-k における k と考えることができ、ここで f(n) は「n」番目のグループのサイズです。

減衰率を 0 に設定すると、すべてのグループが同じサイズになります。減衰率を 1 に設定すると、nth group が最初のグループの 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/ の場合、この設定は各リモートのタグのセットに個別に適用されます。

負ではない値である必要があります。デフォルト値は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 オプションを使用してブランチごとにこの動作を選択できることに注意してください。このオプションはデフォルトで true です。有効な設定は次のとおりです。

false

自動設定は行われません

true

開始点がリモート追跡ブランチの場合に自動設定が行われます

always

開始点がローカルブランチまたはリモート追跡ブランチのいずれかである場合に自動設定が行われます

inherit

開始点に追跡設定がある場合、それが新しいブランチにコピーされます

simple

自動設定は、開始点がリモート追跡ブランチであり、新しいブランチがリモートブランチと同じ名前である場合にのみ行われます。

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

branch.<name>.mergeOptions

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

branch.<name>.rebase

true の場合、git pull が実行されたときに、デフォルトリモートからのデフォルトブランチをマージする代わりに、ブランチ <name> をフェッチされたブランチの上にリベースします。これをブランチ固有ではない方法で行うには、pull.rebase を参照してください。

値が merges (または単に m) の場合、git rebase--rebase-merges オプションを渡すことで、ローカルのマージコミットがリベースに含まれるようにします(詳細は git-rebase[1] を参照)。

値が interactive (または単に i) の場合、リベースは対話モードで実行されます。

: これは危険な操作である可能性があります。影響を理解していない限り、使用しないでください(詳細は 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

git-clean が -f が指定されない限りファイルを削除することを拒否するかどうかを示すブール値。デフォルトは 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.* を参照)で色を有効/無効にするブール値。alwaysfalse(または never)、または auto(または true)に設定できます。この場合、色エラー出力が端末に出力される場合にのみ色が使用されます。設定されていない場合は、color.ui の値が使用されます(デフォルトは auto)。

color.advice.hint

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

color.blame.highlightRecent

行の経過時間に応じて、git blame --color-by-age の行注釈の色を指定します。

この設定は、色と日付設定のコンマ区切りのリストで、色で始まり色で終わるように、日付は最も古いものから最も新しいものに設定する必要があります。行が指定されたタイムスタンプより前に導入された場合、メタデータは指定された色で色付けされ、古いタイムスタンプの色は上書きされます。

絶対タイムスタンプの代わりに相対タイムスタンプも有効です。例えば、2週間よりも古いものを指定するには 2.weeks.ago が有効です。

デフォルトは 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] の出力で色を有効/無効にするブール値。alwaysfalse(または never)、または auto(または true)に設定できます。この場合、出力が端末に出力される場合にのみ色が使用されます。設定されていない場合は、color.ui の値が使用されます(デフォルトは auto)。

color.branch.<slot>

ブランチの色付けにカスタマイズされた色を使用します。<slot> は、current(現在のブランチ)、local(ローカルブランチ)、remote(refs/remotes/内のリモート追跡ブランチ)、upstream(アップストリーム追跡ブランチ)、plain(その他の参照)のいずれかです。接ぎ木されたコミットには grafted を使用します。

color.diff

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

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

color.diff.<slot>

差分の色付けにカスタマイズされた色を使用します。<slot> は、指定された色を使用するパッチの部分を指定し、context (コンテキストテキスト - plain は歴史的な同義語)、meta (メタ情報)、frag (ハンクヘッダー)、func (ハンクヘッダー内の関数)、old (削除された行)、new (追加された行)、commit (コミットヘッダー)、whitespace (空白エラーのハイライト)、oldMoved (削除された行)、newMoved (追加された行)、oldMovedDimmedoldMovedAlternativeoldMovedAlternativeDimmednewMovedDimmednewMovedAlternativenewMovedAlternativeDimmed (詳細は git-diff[1]--color-moved<mode> 設定を参照)、contextDimmedoldDimmednewDimmedcontextBoldoldBold、および newBold (詳細は 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種類の通常の出力タイプに対して、promptheaderhelp、または error のいずれかです。

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> は、対応するキーワードと一致する hintwarningsuccess、または error のいずれかです。

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 オプションのデフォルトを設定するための設定を学習するにつれて、そのスコープは拡大するでしょう。他の設定や --color オプションで明示的に有効にしない限り、Git コマンドが色を使用しないようにしたい場合は false または never に設定します。マシン処理を意図しないすべての出力に色を使用したい場合は always に、そのような出力が端末に書き込まれるときに色を使用したい場合は true または auto(これは Git 1.8.4 以降のデフォルトです)に設定します。

column.ui

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

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

always

常に列で表示する

never

決して列で表示しない

auto

出力が端末に出力される場合、列で表示する

これらのオプションはレイアウトを制御します(デフォルトは column)。alwaysnever、または auto のいずれも指定されていない場合、これらのいずれかを設定すると 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] を参照してください。ログメッセージにコメント文字(core.commentChar、デフォルトは #)で始まる行を常に保持したい場合に、デフォルトを変更すると便利です。その場合、git config commit.cleanup whitespace を実行します(ただし、この設定を行うと、コミットログテンプレート内のコメント文字で始まるヘルプ行は自分で削除する必要があることに注意してください)。

commit.gpgSign

すべてのコミットに GPG 署名を行うかどうかを指定するブール値。リベースなどの操作を行う際にこのオプションを使用すると、多数のコミットに署名が行われる可能性があります。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 が読み書きする変更パスブルームフィルターのバージョンを指定します。-1、0、1、または 2 のいずれかです。1より大きい値は、まだそれらのバージョンを理解していない古いバージョンの Git と互換性がない可能性があることに注意してください。混在バージョンの環境で操作する場合は注意してください。

デフォルトは -1 です。

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

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

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

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

詳細については 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

このオプションは、Mac OS 版 Git でのみ使用されます。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」セクションを参照してください。

コマンドライン版と IDE ツール版など、複数のバージョンの Git を同時に使用する場合、core.fsmonitor の定義がブール値に加えてフックパス名も許可するように拡張されたことに注意してください。Git バージョン 2.35.1 以前はブール値を理解せず、「true」または「false」の値を呼び出すフックパス名と見なします。Git バージョン 2.26 から 2.35.1 はデフォルトでフックプロトコル V2 を使用し、失敗した場合は fsmonitor なし(フルスキャン)にフォールバックします。Git バージョン 2.26 より前はデフォルトでフックプロトコル V1 を使用し、変更報告なし(スキャンなし)と黙って仮定するため、ステータスコマンドが不完全な結果を報告する可能性があります。この理由から、組み込みファイルシステムモニターを使用する前に、すべての 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の場合、インデックスのsplit-index機能が使用されます。git-update-index[1] を参照してください。デフォルトは falseです。

core.untrackedCache

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

core.checkStat

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

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

core.quotePath

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

core.eol

テキストとしてマークされたファイル(text 属性が設定されているか、text=auto で Git が内容をテキストとして自動検出した場合)について、ワーキングディレクトリで使用する行末タイプを設定します。選択肢は lfcrlf、およびプラットフォームのネイティブな行末を使用する 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

Git が UTF-8 ラウンドトリップチェックを実行するエンコーディングのコンマおよび/または空白区切りのリスト。working-tree-encoding 属性(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 として)実行する「プロキシコマンド」。変数値が「COMMAND for DOMAIN」形式の場合、コマンドは指定されたドメイン文字列で終わるホスト名にのみ適用されます。この変数は複数回設定でき、指定された順序で一致します。最初の一致が優先されます。

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

特殊な文字列 none は、指定されたドメインパターンに対してプロキシを使用しないことを指定するプロキシコマンドとして使用できます。これは、ファイアウォール内のサーバーをプロキシの使用から除外し、外部ドメインの共通プロキシにデフォルト設定する場合に便利です。

core.sshCommand

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

core.ignoreStat

trueの場合、Gitは、インデックスとワーキングツリーの両方で同一に更新された追跡ファイルに対して「assume-unchanged」ビットを設定することで、lstat()呼び出しを使用してファイルの変更を検出するのを避けます。

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

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

デフォルトは false です。

core.preferSymlinkRefs

HEAD およびその他のシンボリック参照ファイルに対して、デフォルトの「symref」形式ではなく、シンボリックリンクを使用します。これは、HEAD がシンボリックリンクであることを期待する古いスクリプトで機能するために必要な場合があります。

core.alternateRefsCommand

代替から利用可能な履歴の先端を宣伝する場合、git-for-each-ref[1] の代わりに、指定されたコマンドをシェルで実行します。最初の引数は代替の絶対パスです。出力は、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-tree、GIT_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 に設定されている場合、ブランチヘッド(つまり refs/heads/ 以下)、リモート参照(つまり refs/remotes/ 以下)、ノート参照(つまり refs/notes/ 以下)、およびシンボリック参照 HEAD に対して、欠落している「$GIT_DIR/logs/<ref>」ファイルが自動的に作成されます。always に設定されている場合、refs/ 以下のすべての参照に対して欠落している reflog が自動的に作成されます。

この情報は、「2日前」にブランチの先端だったコミットを特定するために使用できます。

この値は、ワーキングディレクトリが関連付けられているリポジトリではデフォルトで true、ベアリポジトリではデフォルトで false です。

core.repositoryFormatVersion

リポジトリ形式とレイアウトのバージョンを識別する内部変数。gitrepository-layout[5] を参照してください。

core.sharedRepository

group (または true) の場合、リポジトリはグループ内の複数のユーザー間で共有可能になります (すべてのファイルとオブジェクトがグループ書き込み可能であることを確認します)。all (または world または everybody) の場合、リポジトリはグループ共有可能であることに加えて、すべてのユーザーが読み取り可能になります。umask (または false) の場合、Git は umask(2) によって報告されたアクセス許可を使用します。0xxx の場合、0xxx が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がコンパイル時に設定されていた場合はデフォルトは1MiB、それ以外の場合は32ビットプラットフォームでは32MiB、64ビットプラットフォームでは1GiBです。これはすべてのユーザー/オペレーティングシステムにとって妥当なはずです。通常、この値を調整する必要はありません。

一般的な単位の接尾辞「k」、「m」、「g」がサポートされています。

core.packedGitLimit

パックファイルから同時にメモリにマッピングする最大バイト数。Gitが操作を完了するためにこのバイト数を超えるアクセスを一度に行う必要がある場合、既存の領域をアンマップしてプロセス内の仮想アドレス空間を解放します。

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

一般的な単位の接尾辞「k」、「m」、「g」がサポートされています。

core.deltaBaseCacheLimit

複数の差分化されたオブジェクトによって参照される可能性のあるベースオブジェクトをキャッシュするために、スレッドごとに予約する最大バイト数。非圧縮のベースオブジェクト全体をキャッシュに格納することで、Gitは頻繁に使用されるベースオブジェクトを複数回アンパックおよび非圧縮するのを避けることができます。

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

一般的な単位の接尾辞「k」、「m」、「g」がサポートされています。

core.bigFileThreshold

「大きい」と見なされるファイルのサイズで、後述するように、多くのGitコマンドの動作や、リポジトリ内でのファイルの保存方法が変わります。デフォルトは512 MiBです。一般的な単位の接尾辞k、m、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 はそのディレクトリ(例: /etc/git/hooks/pre-receive)でフックを探そうとします。$GIT_DIR/hooks/pre-receive の代わりです。

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

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

core.hooksPath/dev/null に設定することで、すべてのフックを完全に無効にすることもできます。これは通常、熟練ユーザー向けであり、git -c core.hooksPath=/dev/null ... の形式の設定パラメータを使用してコマンドごとに設定する場合にのみ推奨されます。

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と新しいバージョンの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はそれを全く変更しません)。GitのLESSのデフォルト設定を選択的に上書きしたい場合は、core.pagerを例えばless -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によって強化されるべきもの。プレフィックスに-を付けることで、任意のコンポーネントの強化を無効にできます。強化されていないアイテムは、システムが不潔にシャットダウンした場合に失われる可能性があります。特別な要件がない限り、このオプションを空にするか、committedadded、またはallのいずれかを選択することをお勧めします。

この設定が検出されると、コンポーネントのセットはプラットフォームのデフォルト値から始まり、無効なコンポーネントが削除され、追加のコンポーネントが追加されます。noneは状態をリセットし、プラットフォームのデフォルトが無視されるようにします。

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

  • noneはfsyncedコンポーネントのセットをクリアします。

  • 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 は、writeout-only フラッシュを使用して複数の更新をディスクライトバックキャッシュにステージングし、操作の最後にダミーファイルの単一の完全な fsync を実行してディスクキャッシュのフラッシュをトリガーするモードを有効にします。

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

core.fsyncObjectFiles

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

この設定は、Gitリポジトリにルーズオブジェクト形式で追加されるデータに影響します。trueに設定すると、Gitはfsyncまたは類似のシステムコールを発行してキャッシュをフラッシュし、システムが不潔にシャットダウンした場合でもルーズオブジェクトの一貫性を保ちます。

core.preloadIndex

*git diff*のような操作で並列インデックスプリロードを有効にする

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

core.unsetenvvars

Windowsのみ:他のプロセスを起動する前に解除する必要がある環境変数名のカンマ区切りリストです。Git for Windowsが独自のPerlインタープリタの使用に固執しているという事実を考慮して、デフォルトはPERL5LIBです。

core.restrictinheritedhandles

Windowsのみ:起動されたプロセスが標準ファイルハンドル(stdinstdoutstderr)のみを継承するか、すべてのハンドルを継承するかを上書きします。autotrue、または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の「パス」コンポーネントを重要視します。デフォルトはfalseです。詳細については、gitcredentials[7]を参照してください。

credential.sanitizePrompt

デフォルトでは、パスワードプロンプトの一部として表示されるユーザー名とホストには制御文字を含めることができません(デフォルトではURLエンコードされます)。この動作を上書きするには、この設定をfalseに設定します。

credential.protectProtocol

デフォルトでは、Gitが認証ヘルパーと通信する際に使用されるプロトコルにキャリッジリターン文字は許可されていません。この設定により、ユーザーはこのデフォルトを上書きできます。

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=<param>,...を使用)。フォールバックのデフォルト(diff.dirstatで変更されない場合)はchanges,noncumulative,3です。次のパラメータが利用可能です

changes

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

lines

通常の行ベースの差分分析を行い、削除/追加された行数を合計して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>*行のコンテキストで差分を生成します。この値は-Uオプションによって上書きされます。

diff.interHunkContext

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

diff.external

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

diff.trustExitCode

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

diff.ignoreSubmodules

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

diff.mnemonicPrefix

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

git diff

インデックスと作業ツリーを比較します。

git diff HEAD

コミットと作業ツリーを比較します。

git diff --cached

コミットとインデックスを比較します。

git diff HEAD:<file1> <file2>

オブジェクトと作業ツリーのエンティティを比較します。

git diff --no-index <a> <b>

2つのGit以外のもの*<a>*と*<b>*を比較します。

diff.noPrefix

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

diff.srcPrefix

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

diff.dstPrefix

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

diff.relative

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

diff.orderFile

差分内のファイルを並べ替える方法を示すファイル。詳細については、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フォーマットは、サブモジュールの変更された内容のインライン差分を表示します。デフォルトはshortです。

diff.wordRegex

単語ごとの差分計算を実行する際に「単語」を決定するために使用されるPOSIX拡張正規表現。正規表現に一致する文字シーケンスは「単語」であり、他のすべての文字は**無視可能な**空白です。

diff.<driver>.command

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

diff.<driver>.trustExitCode

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

diff.<driver>.xfuncname

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

diff.<driver>.binary

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

diff.<driver>.textconv

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

diff.<driver>.wordRegex

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

diff.<driver>.cachetextconv

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

diff.indentHeuristic

このオプションをfalseに設定すると、パッチを読みやすくするために差分ハンクの境界をシフトするデフォルトのヒューリスティックが無効になります。

diff.algorithm

diff アルゴリズムを選択します。バリアントは以下の通りです

default
myers

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

minimal

可能な限り最小の差分が生成されるように、余分な時間を費やします。

patience

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

histogram

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

diff.wsErrorHighlight

差分のcontextoldnewの行における空白エラーをハイライトします。複数の値はカンマで区切られ、noneは以前の値をリセットし、defaultはリストをnewにリセットし、allold,new,contextの短縮形です。空白エラーはcolor.diff.whitespaceで着色されます。コマンドラインオプション--ws-error-highlight=<kind>はこの設定を上書きします。

diff.colorMoved

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

diff.colorMovedWS

たとえばdiff.colorMoved設定を使用して移動した行が色付けされる場合、このオプションはスペースの扱い方を制御します。有効なモードの詳細については、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変数が定義されている必要があります。

  • araxis

  • bc

  • codecompare

  • deltawalker

  • diffmerge

  • diffuse

  • ecmerge

  • emerge

  • examdiff

  • guiffy

  • gvimdiff

  • kdiff3

  • kompare

  • meld

  • nvimdiff

  • opendiff

  • p4merge

  • smerge

  • tkdiff

  • vimdiff

  • vscode

  • winmerge

  • xxdiff

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に設定するか(--gui引数を指定するのと同等)、またはDISPLAY環境変数の値の有無に応じてdiff.guitoolまたはdiff.toolを選択するようにautoに設定します。デフォルトはfalseで、diff.guitoolを使用するには--gui引数を明示的に指定する必要があります。

extensions.*

特に明記されていない限り、core.repositoryFormatVersion1でない場合、拡張機能を指定するとエラーになります。gitrepository-layout[5]を参照してください。

compatObjectFormat

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

noop

この拡張機能は、Gitの動作を全く変更しません。フォーマット1の互換性をテストする場合にのみ役立ちます。

歴史的な理由により、この拡張機能はcore.repositoryFormatVersionの設定に関わらず尊重されます。

noop-v1

この拡張機能は、Gitの動作を全く変更しません。フォーマット1の互換性をテストする場合にのみ役立ちます。

objectFormat

使用するハッシュアルゴリズムを指定します。許容される値はsha1sha256です。指定されていない場合、sha1が仮定されます。

この設定は、git-init[1]またはgit-clone[1]でのみ設定されるべきであることに注意してください。初期化後に変更しようとすると機能せず、診断が困難な問題が発生します。

partialClone

有効にすると、リポジトリが部分クローンで作成された(または後に部分フェッチを実行した)こと、およびリモートが特定の不要なオブジェクトの送信を省略した可能性があることを示します。このようなリモートは「プロミサーリモート」と呼ばれ、将来的にそのような省略されたすべてのオブジェクトをそこからフェッチできることを約束します。

このキーの値は、プロミサーリモートの名前です。

歴史的な理由により、この拡張機能はcore.repositoryFormatVersionの設定に関わらず尊重されます。

preciousObjects

有効になっている場合、リポジトリ内のオブジェクトは削除してはならないことを示します(例:git-prunegit repack -dによる)。

歴史的な理由により、この拡張機能はcore.repositoryFormatVersionの設定に関わらず尊重されます。

refStorage

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

  • files は、packed-refs を使用するルーズファイル用です。これがデフォルトです。

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

この設定は、git-init[1]またはgit-clone[1]でのみ設定されるべきであることに注意してください。初期化後に変更しようとすると機能せず、診断が困難な問題が発生します。

relativeWorktrees

有効になっている場合、少なくとも1つのワークツリーが相対パスでリンクされていることを示します。--relative-pathsオプションまたはworktree.useRelativePaths設定をtrueに設定してワークツリーが作成または修復された場合、自動的に設定されます。

worktreeConfig

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

この拡張機能を有効にする場合は、存在する場合は、特定の値を共通設定ファイルからメインの作業ツリーの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に移動する必要があります。

また、各ワークツリーのカスタマイズ可能なスパースチェックアウト設定の要望に応じて、core.sparseCheckoutおよびcore.sparseCheckoutConeの場所を調整することも有益かもしれません。デフォルトでは、git sparse-checkout組み込みコマンドはこの拡張機能を有効にし、これらの設定値をワークツリーごとに割り当て、$GIT_DIR/info/sparse-checkoutファイルを使用して各ワークツリーの疎度を独立して指定します。詳細については、git-sparse-checkout[1]を参照してください。

+ 歴史的な理由により、この拡張機能はcore.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に設定された場合は全く再帰しないようにfetchおよびpullの動作が変更されます。*on-demand*に設定された場合、fetchおよびpullは、スーパープロジェクトがサブモジュールの参照を更新するコミットを取得した場合にのみ、移入されたサブモジュールに再帰します。デフォルトは*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の場合、フェッチは自動的にコマンドラインで--pruneオプションが与えられたかのように動作します。remote.<name>.prunegit-fetch[1]のPRUNINGセクションも参照してください。

fetch.pruneTags

trueの場合、フェッチは、すでに設定されていない場合、プルーン時にrefs/tags/*:refs/tags/*のrefspecが提供されたかのように自動的に動作します。これにより、このオプションと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」に設定します。より速く収束しようとコミットをスキップするアルゴリズムを使用するには「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オプションの動作に似ています。git clone --bundle-uriは、提供されたバンドルURIが増分フェッチ用に整理されたバンドルリストを含む場合、fetch.bundleURI値を設定します。

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

fetch.bundleCreationToken

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

作成トークンの値は、特定のバンドル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」で、パッチが複数ある場合にのみ有効になります。「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エンコーディング」(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 スレッドでは、すべてのメールが前のメールへの返信になります。真のブール値は shallow と同じで、偽の値はスレッドを無効にします。

format.signOff

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

format.coverLetter

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

format.outputDirectory

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

format.filenameMaxLength

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

format.useAutoBase

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

format.notes

format-patch の --notes オプションのデフォルト値を提供します。ブール値、またはノートを取得する場所を指定する参照を受け入れます。falseの場合、format-patch は --no-notes をデフォルトとします。trueの場合、format-patch は --notes をデフォルトとします。非ブール値に設定されている場合、format-patch は --notes=<ref> をデフォルトとします。ここで ref は非ブール値です。デフォルトはfalseです。

refs/notes/true 参照を使用したい場合は、代わりにそのリテラルを使用してください。

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

例えば、

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

refs/notes/bar からのノートのみを表示します。

format.mboxrd

--stdout が使用されている場合に「^>+From 」行をエスケープするために、堅牢な「mboxrd」フォーマットを有効にするブール値です。

format.noprefix

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

fsck.<msg-id>

fsck 中に git は、現在のバージョンの 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であり、値が errorwarn、または ignore のいずれかである fsck.<msg-id> 設定を構成することによって行われます。便宜上、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 以降のバージョンでは、コメント(#)、空行、および先頭と末尾の空白は無視されます。古いバージョンでは、1行にSHA-1以外のものがあるとエラーになります。

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

fsck.<msg-id> と同様に、この変数には対応する receive.fsck.skipList および fetch.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 で使用されるデルタ圧縮アルゴリズムで使用される深度パラメータ。デフォルトは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

ゼロ以外の場合、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] が実行されると、gc はコミットグラフファイルを書き換えます。 git gc --auto を使用する場合、ハウスキーピングが必要な場合にコミットグラフが更新されます。デフォルトはtrueです。詳細については、git-commit-graph[1] を参照してください。

gc.logExpiry

gc.logファイルが存在する場合、git gc --auto はその内容を出力し、そのファイルが gc.logExpiry より古くない限り、実行せずにステータスゼロで終了します。デフォルトは「1.day」です。その値を指定するその他の方法については gc.pruneExpire を参照してください。

gc.packRefs

リポジトリで git pack-refs を実行すると、HTTPなどのダムなトランスポートを介したGitバージョン1.5.1.2より前のバージョンによるクローンが不可能になります。この変数は、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> に一致する参照にのみ適用されます。

gc.reflogExpireUnreachable
gc.<pattern>.reflogExpireUnreachable

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

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

gc.recentObjectsHook

オブジェクトを削除するかどうかを検討する際に(クラフトパックを生成するか、到達不能なオブジェクトをゆるいオブジェクトとして保存するかに関わらず)、シェルを使用して指定されたコマンドを実行します。その出力を、その経過時間に関わらず、Gitが「最近の」オブジェクトとして扱うオブジェクトIDとして解釈します。それらのmtimeを「現在」として扱うことで、出力に記載されているオブジェクト(とその子孫)は、その真の経過時間に関わらず保持されます。

出力には、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がファイルをテキストとして扱うように強制される場合、CVSクライアントがテキストとして扱われるように -k モードは空白のままになります。テキスト変換を抑制する場合、ファイルは -kb モードに設定され、クライアントが通常行う可能性のある改行の変更を抑制します。属性によってファイルタイプが決定できない場合、gitcvs.allBinary が使用されます。gitattributes[5] を参照してください。

gitcvs.allBinary

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

gitcvs.dbName

git-cvsserver が Git リポジトリから派生したリビジョン情報をキャッシュするために使用するデータベース。正確な意味は使用されるデータベースドライバーによって異なり、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

データベースユーザーとパスワード。gitcvs.dbDriver を設定する場合にのみ役立ちます。SQLite にはデータベースユーザーやパスワードの概念がないためです。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」です。

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

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キーを既に処理している自動化システムからグローバルな場所で生成されます。

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

OpensSSH 8.8 以降、このファイルは valid-after & valid-before オプションを使用してキーの有効期間を指定できます。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] に表示する履歴コンテキストの半径(日数)を指定します。この変数がゼロに設定されている場合、全履歴が表示されます。

guitool.<name>.cmd

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

guitool.<name>.needsFile

GUI で差分が選択されている場合にのみツールを実行します。これにより、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つ識別できる場合、正しいコマンドを提案するか、自動的に提案を実行しようとします。考えられる設定値は次のとおりです。

  • 0, "false", "off", "no", "show": 提案されたコマンドを表示する(デフォルト)。

  • 1, "true", "on", "yes", "immediate": 提案されたコマンドをすぐに実行する。

  • 正の数 > 1: 指定されたデシ秒(0.1秒)後に提案されたコマンドを実行する。

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

  • "prompt": 提案を表示し、コマンドの実行確認を求めるプロンプトを表示する。

help.htmlPath

HTML ドキュメントが置かれているパスを指定します。ファイルシステムパスと URL がサポートされています。ヘルプが web 形式で表示される場合、HTML ページにはこのパスがプレフィックスされます。これは Git インストールのドキュメントパスにデフォルト設定されます。

http.proxy

通常 http_proxyhttps_proxy、および all_proxy 環境変数(curl(1) 参照)を使用して構成される HTTP プロキシをオーバーライドします。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

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

http.proactiveAuth

認証なしの試行を最初に行わず、401応答を受け取る前に認証を試みます。これは、すべてのリクエストが認証されることを保証するために使用できます。http.emptyAuth が true に設定されている場合、この値は効果がありません。

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

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

  • auto - ヘルパーに適切なスキームを選択させます。

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

この設定ではTLSを常に使用すべきであることに注意してください。そうしないと、基本認証が選択された場合にプレーンテキストの資格情報が誤って公開される可能性が容易にあります。

http.delegation

GSSAPI 資格情報委任を制御します。libcurl バージョン 7.21.7 以降、委任はデフォルトで無効になっています。このパラメータを設定して、サーバーがユーザー資格情報に関して何を委任できるかを指定します。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.cookieFile で指定されたファイルは、http.saveCookies が設定されていない限り、入力としてのみ使用されることに注意してください。

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証明書に対するGitのパスワードプロンプトを有効にします。そうしないと、証明書または秘密鍵が暗号化されている場合、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.sslCertType

HTTPS を介してフェッチまたはプッシュする際に使用されるクライアント証明書のタイプ。「PEM」、「DER」は openssl または gnutls バックエンドを使用する場合にサポートされます。「P12」は「openssl」、「schannel」、「securetransport」、および gnutls 8.11+ でサポートされます。libcurl CURLOPT_SSLCERTTYPE も参照してください。GIT_SSL_CERT_TYPE 環境変数で上書きできます。

http.sslKeyType

HTTPS を介してフェッチまたはプッシュする際に使用されるクライアント秘密鍵のタイプ(例:「PEM」、「DER」、または「ENG」)。「openssl」バックエンドを使用する場合にのみ適用されます。「DER」は openssl ではサポートされていません。特に PKCS#11 トークンで認証するために「ENG」に設定し、sslCert オプションで PKCS#11 URL を使用する場合に役立ちます。libcurl CURLOPT_SSLKEYTYPE も参照してください。GIT_SSL_KEY_TYPE 環境変数で上書きできます。

http.schannelCheckRevoke

http.sslBackend が「schannel」に設定されている場合、cURL で証明書失効チェックを強制または無効にするために使用されます。設定されていない場合、デフォルトは true です。Git が一貫してエラーになり、メッセージが証明書の失効ステータスのチェックに関するものである場合にのみ無効にする必要があります。cURL が実行時に関連する SSL オプションを設定する機能をサポートしていない場合、このオプションは無視されます。

http.schannelUseSSLCAInfo

cURL v7.60.0 以降、Secure Channel バックエンドは http.sslCAInfo 経由で提供された証明書バンドルを使用できますが、これは Windows 証明書ストアを上書きします。これはデフォルトでは望ましくないため、schannel バックエンドが http.sslBackend 経由で設定された場合、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

スマート HTTP トランスポートがリモートシステムにデータを POST する際に使用するバッファの最大サイズ(バイト単位)。このバッファサイズより大きいリクエストの場合、大量のパックファイルをローカルに作成するのを避けるために HTTP/1.1 と Transfer-Encoding: chunked が使用されます。デフォルトは 1 MiB で、ほとんどのリクエストには十分です。

この制限を上げてもチャンク転送エンコーディングを無効にする以外には効果がないため、リモートサーバーまたはプロキシが HTTP/1.0 のみをサポートしている場合や HTTP 標準に準拠していない場合にのみ使用すべきであることに注意してください。一般的に、これを上げてもほとんどのプッシュ問題に対する効果的な解決策にはなりませんが、バッファ全体が小さなプッシュでも割り当てられるため、メモリ消費が大幅に増加する可能性があります。

http.lowSpeedLimit
http.lowSpeedTime

HTTP転送速度(バイト/秒)が http.lowSpeedLimit より小さい状態が http.lowSpeedTime 秒より長く続くと、転送は中断されます。GIT_HTTP_LOW_SPEED_LIMIT および GIT_HTTP_LOW_SPEED_TIME 環境変数で上書きできます。

http.keepAliveIdle

アイドル状態の接続で、TCPキープアライブプローブを送信するまでの秒数(OSがサポートしている場合)。設定されていない場合、curlのデフォルト値が使用されます。GIT_HTTP_KEEPALIVE_IDLE 環境変数で上書きできます。

http.keepAliveInterval

TCPキープアライブプローブ間の待機秒数を指定します(OSがサポートしている場合)。設定されていない場合、curlのデフォルト値が使用されます。GIT_HTTP_KEEPALIVE_INTERVAL 環境変数で上書きできます。

http.keepAliveCount

諦めて接続を終了するまでに送信するTCPキープアライブプローブの数を指定します(OSがサポートしている場合)。設定されていない場合、curlのデフォルト値が使用されます。GIT_HTTP_KEEPALIVE_COUNT 環境変数で上書きできます。

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グラフィカル履歴ブラウザ(将来的に他の場所や他のPorcelainでも)で必要です。例えば 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 はパッチを plain/text, 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] ドキュメントの「CONFIGURATION FILE」セクション、特に「Includes」および「Conditional Includes」サブセクションを参照してください。

index.recordEndOfIndexEntries

インデックスファイルに「End Of Index Entry」セクションを含めるかどうかを指定します。これにより、マルチプロセッサマシンでのインデックス読み込み時間が短縮されますが、Git バージョン 2.20 より前のバージョンでインデックスを読み込むと「ignoring EOIE extension」というメッセージが表示されます。index.threads が明示的に有効になっている場合は true、それ以外の場合は false がデフォルトです。

index.recordOffsetTable

インデックスファイルに「Index Entry Offset Table」セクションを含めるかどうかを指定します。これにより、マルチプロセッサマシンでのインデックス読み込み時間が短縮されますが、Git バージョン 2.20 より前のバージョンでインデックスを読み込むと「ignoring IEOT extension」というメッセージが表示されます。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 を有効にすると、Git クライアント 2.13.0 より古いバージョンはインデックスの解析を拒否し、Git クライアント 2.40.0 より古いバージョンは git fsck 中にエラーを報告します。

init.templateDir

テンプレートがコピーされるディレクトリを指定します。(git-init[1] の「TEMPLATE DIRECTORY」セクションを参照してください。)

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

git-instaweb[1] が /usr/lib/apache2/modules の代わりに使用するデフォルトのモジュールパス。httpd が Apache の場合にのみ使用されます。

instaweb.port

gitweb httpd をバインドするポート番号。git-instaweb[1] を参照してください。

interactive.singleKey

true に設定すると、対話型コマンドでユーザーが単一のキーで (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 など) がカラー化された差分を表示するとき、git はこの設定変数で定義されたシェルコマンドを介して差分をパイプします。このコマンドは、元の差分との行ごとの一対一の対応を維持する限り、差分をさらに人間が消費できるようにマークアップすることができます。デフォルトは無効 (フィルタリングなし) です。

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 コマンドラインオプションに似ていますが、設定オプションは --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 の場合、最初のコミットは大きな作成イベントとして表示されます。これは空のツリーとの差分に相当します。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 と同様ですが、値をリポジトリ内のブロブへの参照として扱います。mailmap.filemailmap.blob の両方が指定されている場合、両方が解析され、mailmap.file のエントリが優先されます。ベアリポジトリでは、デフォルトで HEAD:.mailmap になります。非ベアリポジトリでは、デフォルトで空になります。

maintenance.auto

このブール型設定オプションは、いくつかのコマンドが通常の作業を実行した後で git maintenance run --auto を実行するかどうかを制御します。デフォルトは true です。

maintenance.autoDetach

多くの Git コマンドは、リポジトリにデータを書き込んだ後に自動メンテナンスをトリガーします。このブール型設定オプションは、この自動メンテナンスをフォアグラウンドで実行するか、メンテナンスプロセスをデタッチしてバックグラウンドで実行し続けるかを制御します。

未設定の場合、gc.autoDetach の値がフォールバックとして使用されます。両方とも未設定の場合、デフォルトは true であり、メンテナンスプロセスはデタッチされます。

maintenance.strategy

この文字列設定オプションは、バックグラウンドメンテナンスに推奨されるいくつかのスケジュールを指定する方法を提供します。これは、git maintenance run --schedule=X コマンド中に実行されるタスクにのみ影響します。ただし、--task=<task> 引数が指定されていない場合に限ります。さらに、maintenance.<task>.schedule 設定値が設定されている場合、その値が maintenance.strategy によって提供される値の代わりに使用されます。可能な戦略文字列は次のとおりです。

  • none: このデフォルト設定は、どのスケジュールでもタスクが実行されないことを意味します。

  • incremental: この設定は、データを削除しない小さなメンテナンスアクティビティを実行するように最適化されています。これは gc タスクをスケジュールしませんが、prefetch および commit-graph タスクを毎時、loose-objects および incremental-repack タスクを毎日、pack-refs タスクを毎週実行します。

maintenance.<task>.enabled

このブール型設定オプションは、git maintenance run--task オプションが指定されていないときに、名前が <task> のメンテナンス タスクを実行するかどうかを制御します。--task オプションが存在する場合、これらの設定値は無視されます。デフォルトでは、maintenance.gc.enabled のみが true です。

maintenance.<task>.schedule

この設定オプションは、与えられた <task>git maintenance run --schedule=<frequency> コマンド中に実行されるかどうかを制御します。値は「hourly」、「daily」、または「weekly」のいずれかである必要があります。

maintenance.commit-graph.auto

この整数設定オプションは、commit-graph タスクが git maintenance run --auto の一部としてどのくらいの頻度で実行されるべきかを制御します。ゼロの場合、commit-graph タスクは --auto オプションでは実行されません。負の値は、タスクを毎回強制的に実行します。それ以外の場合、正の値は、コミットグラフファイルに存在しない到達可能なコミットの数が maintenance.commit-graph.auto の値以上の場合にコマンドを実行すべきであることを意味します。デフォルト値は 100 です。

maintenance.loose-objects.auto

この整数設定オプションは、loose-objects タスクが git maintenance run --auto の一部としてどのくらいの頻度で実行されるべきかを制御します。ゼロの場合、loose-objects タスクは --auto オプションでは実行されません。負の値は、タスクを毎回強制的に実行します。それ以外の場合、正の値は、ルーズオブジェクトの数が maintenance.loose-objects.auto の値以上の場合にコマンドを実行すべきであることを意味します。デフォルト値は 100 です。

maintenance.loose-objects.batchSize

この整数設定オプションは、loose-objects タスク中にパックファイルに書き込まれるルーズオブジェクトの最大数を制御します。デフォルトは 50,000 です。制限なしを示すには 0 の値を使用します。

maintenance.incremental-repack.auto

この整数設定オプションは、incremental-repack タスクが git maintenance run --auto の一部としてどのくらいの頻度で実行されるべきかを制御します。ゼロの場合、incremental-repack タスクは --auto オプションでは実行されません。負の値は、タスクを毎回強制的に実行します。それ以外の場合、正の値は、マルチパックインデックスにないパックファイルの数が maintenance.incremental-repack.auto の値以上の場合にコマンドを実行すべきであることを意味します。デフォルト値は 10 です。

maintenance.reflog-expire.auto

この整数設定オプションは、reflog-expire タスクが git maintenance run --auto の一部としてどのくらいの頻度で実行されるべきかを制御します。ゼロの場合、reflog-expire タスクは --auto オプションでは実行されません。負の値は、タスクを毎回強制的に実行します。それ以外の場合、正の値は、"HEAD" reflog の期限切れの reflog エントリの数が maintenance.loose-objects.auto の値以上の場合にコマンドを実行すべきであることを意味します。デフォルト値は 100 です。

maintenance.rerere-gc.auto

この整数設定オプションは、rerere-gc タスクが git maintenance run --auto の一部としてどのくらいの頻度で実行されるべきかを制御します。ゼロの場合、rerere-gc タスクは --auto オプションでは実行されません。負の値は、タスクを毎回強制的に実行します。それ以外の場合、正の値は、"rr-cache" ディレクトリが存在し、古くなっているかどうかにかかわらず、少なくとも 1 つのエントリがある場合にコマンドを実行することを意味します。このヒューリスティックは将来的に改善される可能性があります。デフォルト値は 1 です。

maintenance.worktree-prune.auto

この整数設定オプションは、worktree-prune タスクが git maintenance run --auto の一部としてどのくらいの頻度で実行されるべきかを制御します。ゼロの場合、worktree-prune タスクは --auto オプションでは実行されません。負の値は、タスクを毎回強制的に実行します。それ以外の場合、正の値は、プルーニング可能なワークツリーの数が値を超えた場合にコマンドを実行すべきであることを意味します。デフォルト値は 1 です。

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」スタイルは、元のテキストの除外と、両側で一致する行のサブセットがある場合にそれらが競合領域から除外されるため、diff3 よりも小さな競合領域を生成する傾向があります。もう1つの代替スタイルである「zdiff3」は diff3 に似ていますが、両側で一致する行が競合領域の開始または終了付近に現れる場合、それらを競合領域から削除します。

merge.defaultToUpstream

マージがコミット引数なしで呼び出された場合、現在のブランチに設定されているアップストリームブランチを、リモート追跡ブランチに保存されている最後に観測された値を使用してマージします。branch.<current-branch>.remote で指定されたリモートのブランチに名前を付ける branch.<current branch>.merge の値が参照され、次にそれらが remote.<remote>.fetch を介して対応するリモート追跡ブランチにマッピングされ、これらの追跡ブランチの先端がマージされます。デフォルトは true です。

merge.ff

デフォルトでは、Git は現在のコミットの子孫であるコミットをマージするときに余分なマージコミットを作成しません。代わりに、現在のブランチの先端が fast-forward されます。false に設定すると、この変数は Git にそのような場合に余分なマージコミットを作成するように指示します (コマンドラインから --no-ff オプションを指定するのと同等)。only に設定すると、そのような fast-forward マージのみが許可されます (コマンドラインから --ff-only オプションを指定するのと同等)。

merge.verifySignatures

true の場合、これは --verify-signatures コマンドラインオプションと同等です。詳細については git-merge[1] を参照してください。

merge.branchdesc

ブランチ名に加えて、それらに関連付けられたブランチ記述テキストでログメッセージを埋めます。デフォルトは false です。

merge.log

ブランチ名に加えて、マージされる実際のコミットから、最大で指定された数の一行説明でログメッセージを埋めます。デフォルトは false で、true は 20 の同義語です。

merge.suppressDest

この多値設定変数に統合ブランチの名前と一致するグロブを追加すると、これらの統合ブランチへのマージに対して計算されるデフォルトのマージメッセージは、タイトルから「into <branch-name>」を省略します。

空の値を持つ要素は、以前の設定エントリから累積されたグロブのリストをクリアするために使用できます。merge.suppressDest 変数が定義されていない場合、後方互換性のために master のデフォルト値が使用されます。

merge.renameLimit

マージ中の名前変更検出の網羅的な部分で考慮するファイルの数。指定しない場合、diff.renameLimit の値がデフォルトになります。merge.renameLimitdiff.renameLimit の両方が指定されていない場合、現在のデフォルトは 7000 です。名前変更検出がオフの場合、この設定は影響しません。

merge.renames

Git が名前変更を検出するかどうか。false に設定すると、名前変更検出は無効になります。true に設定すると、基本的な名前変更検出が有効になります。diff.renames の値にデフォルト設定されます。

merge.directoryRenames

Git がディレクトリの名前変更を検出するかどうか。これにより、履歴の一方の側でディレクトリの名前が変更されたときに、履歴のもう一方の側でそのディレクトリに追加された新しいファイルがマージ時にどうなるかに影響します。可能な値は次のとおりです。

false

ディレクトリの名前変更検出は無効になります。つまり、そのような新しいファイルは古いディレクトリに残されます。

true

ディレクトリの名前変更検出が有効になります。つまり、そのような新しいファイルは新しいディレクトリに移動されます。

conflict

そのようなパスに対して競合が報告されます。

merge.renamesfalse の場合、merge.directoryRenames は無視され、false として扱われます。デフォルトは conflict です。

merge.renormalize

リポジトリ内のファイルの標準的な表現が時間とともに変化した (例: 以前のコミットではテキストファイルが CRLF 改行コードで記録されていたが、最近のコミットでは LF 改行コードが使用されている) ことを Git に伝えます。そのようなリポジトリでは、3方向コンテンツマージが必要なファイルごとに、Git はマージを実行する前にコミットに記録されたデータを標準形式に変換して、不要な競合を減らすことができます。詳細については、gitattributes[5] の「Merging branches with differing checkin/checkout attributes」セクションを参照してください。

merge.stat

マージの最後に ORIG_HEAD とマージ結果の間の差分統計を出力するかどうか。デフォルトは true です。

merge.autoStash

true に設定すると、操作が開始される前に一時的なスタッシュエントリが自動的に作成され、操作が終了した後にそれが適用されます。これにより、ダーティな作業ツリーでマージを実行できます。ただし、注意して使用してください。マージが成功した後の最終的なスタッシュ適用により、些細ではない競合が発生する可能性があります。このオプションは、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.<variant>.layout

vimdiff の <variant> ( vimdiff, nvimdiff, gvimdiff のいずれか) の分割ウィンドウレイアウトを設定します。--tool=<variant>git mergetool を起動すると (merge.tool<variant> として設定されている場合は --tool なしでも)、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 は、競合するファイルの BASELOCAL、および REMOTE の一時バージョンをデフォルトでワークツリーに書き込みます。この設定が true の場合、Git はこれらのファイルに一時ディレクトリを使用しようとします。デフォルトは false です。

mergetool.prompt

マージ解決プログラムを呼び出す前に毎回プロンプ​​トを表示します。

mergetool.guiDefault

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

notes.mergeStrategy

メモの競合を解決するときにデフォルトで選択するマージ戦略。manualourstheirsunion、または cat_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

git log ファミリーコマンドでコミットメッセージを表示するときに、core.notesRef または GIT_NOTES_REF で設定されたデフォルトのセットに加えて、どの参照 (またはグロブまたは複数回指定された場合は複数の参照) からメモを読み込むか。

この設定は、環境変数 GIT_NOTES_DISPLAY_REF で上書きできます。これはコロン区切りのリファレンスまたはグロブのリストである必要があります。

存在しないリファレンスに対しては警告が発行されますが、どのリファレンスとも一致しないグロブは silently 無視されます。

この設定は、git-log[1] ファミリーコマンドの --no-notes オプション、またはこれらのコマンドが受け入れる --notes=<ref> オプションによって無効にすることができます。

core.notesRef の実効値(GIT_NOTES_REF によって上書きされる場合があります)も、表示される参照のリストに暗黙的に追加されます。

notes.rewrite.<command>

<command> (現在のところ amend または rebase ) でコミットを書き換える場合、この変数が false であれば、git は元のコミットから書き換えられたコミットにノートをコピーしません。デフォルトは true です。以下の notes.rewriteRef も参照してください。

この設定は環境変数 GIT_NOTES_REWRITE_REF で上書きできます。これはコロン区切りのリファレンスまたはグロブのリストである必要があります。

notes.rewriteMode

リライト中にメモをコピーするとき (notes.rewrite.<command> オプションを参照)、ターゲットコミットにすでにメモがある場合にどうするかを決定します。overwriteconcatenatecat_sort_uniq、または ignore のいずれかである必要があります。デフォルトは concatenate です。

この設定は、環境変数 GIT_NOTES_REWRITE_MODE で上書きできます。

notes.rewriteRef

リライト中にノートをコピーする際、どの(完全修飾された)リファレンスのノートをコピーするかを指定します。グロブにすることも可能で、その場合、一致するすべてのリファレンスのノートがコピーされます。この設定を複数回指定することもできます。

デフォルト値はありません。ノートの書き換えを有効にするには、この変数を設定する必要があります。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

デフォルトのパックインデックスバージョンを指定します。有効な値は、Git バージョン 1.5.2 より前のバージョンで使用されていたレガシーパックインデックスの場合は 1、4 GB を超えるパックと破損したパックの再パックに対する適切な保護機能を備えた新しいパックインデックスの場合は 2 です。バージョン 2 がデフォルトです。対応するパックが 2 GB を超える場合、バージョン 2 は強制され、この設定オプションは無視されることに注意してください。

バージョン 2 の *.idx ファイルを理解しない古い Git を持っている場合、非ネイティブプロトコル (例: "http") を介してクローンまたはフェッチを行うと、*.pack ファイルと対応する *.idx ファイルの両方を相手側からコピーするため、古いバージョンの Git ではアクセスできないリポジトリになる可能性があります。*.pack ファイルが 2 GB 未満の場合、git-index-pack[1] を *.pack ファイルに対して使用して *.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 し、それ以外の場合は無視する)、代わりに境界でビットマップを構築します。

このアルゴリズムを使用すると、Git は特定の UNINTERESTING コミットに属するツリーを開かない結果として、過剰なオブジェクトを含める可能性があります。この不正確さは、非ビットマップトラバーサルアルゴリズムと一致します。

多くの場合、これは特にクエリの否定された側のビットマップカバレッジが低い場合に、正確なアルゴリズムよりも高速化を提供できます。

pack.useSparse

true の場合、--revs オプションが存在するときに、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 です。

マルチパック到達可能性ビットマップを書き込む場合、新しい名前ハッシュは計算されません。代わりに、既存のビットマップに格納されている名前ハッシュは、新しいビットマップを書き込むときに適切な場所に順列されます。

pack.writeBitmapLookupTable

true の場合、Git はビットマップインデックス (書き込まれる場合) に「ルックアップテーブル」セクションを含めます。このテーブルは、個々のビットマップの読み込みを可能な限り遅延させるために使用されます。これは、比較的大規模なビットマップインデックスを持つリポジトリで有利になる可能性があります。デフォルトは false です。

pack.readReverseIndex

true の場合、git は利用可能な .rev ファイルを読み込みます (gitformat-pack[5] を参照)。false の場合、逆インデックスはゼロから生成され、メモリに保存されます。デフォルトは true です。

pack.writeReverseIndex

true の場合、git は git-fast-import[1] および一括チェックインメカニズム以外のすべての場所で、書き込む新しいパックファイルごとに対応する .rev ファイル (gitformat-pack[5] を参照) を書き込みます。デフォルトは 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 を想定します。

promisor.advertise

「true」に設定されている場合、サーバーは「promisor-remote」機能 (gitprotocol-v2[5] を参照) を使用して、使用しているプロミサーリモートをアドバタイズします。デフォルトは「false」で、「promisor-remote」機能はアドバタイズされません。

promisor.acceptFromServer

「all」に設定されている場合、クライアントはサーバーが「promisor-remote」機能を使用してアドバタイズするすべてのプロミサーリモートを受け入れます。「knownName」に設定されている場合、クライアントはクライアントですでに設定されており、クライアントがアドバタイズするものと同じ名前を持つプロミサーリモートを受け入れます。これはあまり安全ではありませんが、サーバーとクライアントが名前とURLを切り替えないことを信頼されている企業の設定で使用できます。「knownUrl」に設定されている場合、クライアントはクライアントで設定されている名前とURLの両方が、サーバーがアドバタイズする名前とURLと同じであるプロミサーリモートを受け入れます。これは「all」または「knownName」よりも安全なので、可能であればこれらのオプションの代わりにこれを使用する必要があります。デフォルトは「none」で、サーバーによってアドバタイズされたプロミサーリモートは受け入れられないことを意味します。プロミサーリモートを受け入れることにより、クライアントは、サーバーがこのプロミサーリモートから遅延的にフェッチ可能なオブジェクトを、クライアントからの「fetch」および「clone」要求への応答から省略する可能性があることに同意します。名前とURLの比較はケースセンシティブです。gitprotocol-v2[5] を参照してください。

protocol.allow

設定されている場合、明示的にポリシーを持たないすべてのプロトコル (protocol.<name>.allow) に対して、ユーザー定義のデフォルトポリシーを提供します。デフォルトでは、設定されていない場合、既知の安全なプロトコル (http、https、git、ssh) は always のデフォルトポリシーを持ち、既知の危険なプロトコル (ext) は never のデフォルトポリシーを持ち、その他のすべてのプロトコル (ファイルを含む) は user のデフォルトポリシーを持ちます。サポートされているポリシー:

  • always - プロトコルは常に使用可能です。

  • never - プロトコルは決して使用できません。

  • user - プロトコルは GIT_PROTOCOL_FROM_USER が設定されていないか、値が 1 の場合にのみ使用できます。このポリシーは、ユーザーが直接使用できるプロトコルが必要だが、ユーザー入力なしでクローン/フェッチ/プッシュコマンドを実行するコマンド (例: 再帰的なサブモジュール初期化) では使用したくない場合に使用します。

protocol.<name>.allow

プロトコル <name> がクローン/フェッチ/プッシュコマンドで使用するポリシーを設定します。利用可能なポリシーについては、上記の protocol.allow を参照してください。

Git で現在使用されているプロトコル名は次のとおりです。

  • file: ローカルのファイルベースのパス ( file:// URL やローカルパスを含む)

  • git: 直接 TCP 接続 (または設定されている場合はプロキシ) を介した匿名 Git プロトコル

  • ssh: ssh を介した Git ( host:path 構文、ssh:// などを含む)。

  • http: http を介した Git。「スマート http」と「ダム http」の両方。これには https は含まれないことに注意してください。両方を設定したい場合は、個別に設定する必要があります。

  • 外部ヘルパーはプロトコル名で指定されます (例: hg を使用して git-remote-hg ヘルパーを許可する)。

protocol.version

設定されている場合、クライアントは指定されたプロトコルバージョンを使用してサーバーと通信しようとします。サーバーがそれをサポートしていない場合、通信はバージョン 0 にフォールバックします。設定されていない場合、デフォルトは 2 です。サポートされているバージョン:

  • 0 - 元のワイヤープロトコル。

  • 1 - サーバーからの初期応答にバージョン文字列が追加された元のワイヤープロトコル。

  • 2 - ワイヤープロトコルバージョン 2。gitprotocol-v2[5] を参照。

pull.ff

デフォルトでは、Git は現在のコミットの子孫であるコミットをマージするときに余分なマージコミットを作成しません。代わりに、現在のブランチの先端が fast-forward されます。false に設定すると、この変数は Git にそのような場合に余分なマージコミットを作成するように指示します (コマンドラインから --no-ff オプションを指定するのと同等)。only に設定すると、そのような fast-forward マージのみが許可されます (コマンドラインから --ff-only オプションを指定するのと同等)。この設定は、プル時に merge.ff を上書きします。

pull.rebase

true の場合、「git pull」が実行されたときに、デフォルトのリモートからデフォルトブランチをマージする代わりに、フェッチされたブランチの上にブランチをリベースします。これをブランチごとに設定する方法については「branch.<name>.rebase」を参照してください。

merges (または単に m) の場合、git rebase--rebase-merges オプションを渡すことで、ローカルのマージコミットがリベースに含まれるようになります (git-rebase[1] を参照してください)。

値が interactive (または単に i) の場合、リベースは対話モードで実行されます。

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

pull.octopus

複数のブランチを一度にプルするときに使用するデフォルトのマージ戦略。

pull.twohead

単一のブランチをプルするときに使用するデフォルトのマージ戦略。

push.autoSetupRemote

「true」に設定すると、現在のブランチにアップストリーム追跡が存在しない場合、デフォルトのプッシュ時に--set-upstreamが想定されます。このオプションは、push.defaultオプションのsimpleupstream、およびcurrentで有効になります。新しいブランチをデフォルトのリモートにプッシュし(push.default=currentの動作のように)、かつアップストリーム追跡も設定したい場合に便利です。このオプションから最も恩恵を受ける可能性のあるワークフローは、すべてのブランチがリモートで同じ名前を持つことが期待されるsimpleな集中ワークフローです。

push.default

リフスペックが指定されていない場合(コマンドライン、設定、またはその他から)、git pushが取るべきアクションを定義します。さまざまな値が特定のワークフローに適しています。たとえば、純粋な中央ワークフロー(つまり、フェッチ元がプッシュ先と同じ)では、upstreamが望ましいでしょう。可能な値は次のとおりです。

  • nothing - リフスペックが指定されていない限り、何もプッシュしません(エラーを出します)。これは主に、常に明示的に指定することで間違いを避けたい人のためのものです。

  • 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値は、git-push[1]--signedが渡されたかのように、すべてのプッシュにGPG署名を付けます。文字列if-askedは、サーバーがサポートしている場合、--signed=if-askedgit pushに渡されたかのように、プッシュに署名を付けます。false値は、優先度の低い設定ファイルからの値を上書きできます。明示的なコマンドラインフラグは、常にこの設定オプションを上書きします。

push.pushOption

コマンドラインから--push-option=<option>引数が与えられない場合、git pushは、この変数の各--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

"check"、"on-demand"、"only"、または"no"に設定でき、"push --recurse-submodules"と同じ動作になります。設定されていない場合、デフォルトではnoが使用されます(submodule.recurseが設定されている場合を除く。その場合、true値はon-demandを意味します)。

push.useForceIfIncludes

「true」に設定すると、コマンドラインでgit-push[1]にオプションとして--force-if-includesを指定するのと同じ効果があります。プッシュ時に--no-force-if-includesを追加すると、この設定は上書きされます。

push.negotiate

「true」に設定すると、クライアントとサーバーが共通のコミットを見つけようとする交渉のラウンドによって送信されるパックファイルのサイズを削減しようとします。「false」の場合、Gitは共通のコミットを見つけるためにサーバーの参照広告のみに依存します。

push.useBitmaps

「false」に設定すると、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 に設定すると、操作が開始される前に一時的なスタッシュエントリーが自動的に作成され、操作終了後に適用されます。これにより、ダーティなワークツリーでリベースを実行できます。ただし、注意して使用してください。成功したリベース後の最終的なスタッシュ適用により、些細ではない衝突が発生する可能性があります。このオプションは、git-rebase[1]--no-autostash および --autostash オプションで上書きできます。デフォルトは false です。

rebase.updateRefs

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

rebase.missingCommitsCheck

「warn」に設定すると、git rebase -i は一部のコミットが削除された場合(例:行が削除された場合)に警告を出力しますが、リベースは続行されます。「error」に設定すると、前述の警告を出力してリベースを停止します。この後、エラーを修正するためにgit rebase --edit-todoを使用できます。「ignore」に設定すると、チェックは行われません。警告やエラーなしでコミットをドロップするには、todoリストでdropコマンドを使用します。デフォルトは「ignore」です。

rebase.instructionFormat

インタラクティブなリベース中のtodoリストに使用される、git-log[1] で指定されたフォーマット文字列。フォーマットには、自動的にコミットハッシュが前に付加されます。

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からデータを受信し、参照を更新した後、「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-receiveおよびpost-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-packがこのフェーズでreceive.keepAlive秒間データを送信しない場合、短いキープアライブパケットを送信します。デフォルトは5秒です。キープアライブを完全に無効にするには0に設定します。

receive.unpackLimit

プッシュで受信したオブジェクトの数がこの制限を下回る場合、オブジェクトはルーズオブジェクトファイルに解凍されます。ただし、受信したオブジェクトの数がこの制限以上の場合、受信したパックは、不足しているデルタベースが追加された後、パックとして保存されます。プッシュからパックを保存すると、特に低速なファイルシステムでは、プッシュ操作の完了が速くなります。設定されていない場合、transfer.unpackLimitの値が代わりに使用されます。

receive.maxInputSize

受信するパックストリームのサイズがこの制限よりも大きい場合、git-receive-packはパックファイルを受け入れずにエラーを返します。設定されていない場合、または0に設定されている場合、サイズは無制限です。

receive.denyDeletes

true に設定すると、git-receive-pack は参照を削除する参照更新を拒否します。これにより、プッシュによるそのような参照の削除を防ぐことができます。

receive.denyDeleteCurrent

trueに設定すると、git-receive-packは、ベアではないリポジトリの現在チェックアウトされているブランチを削除するref更新を拒否します。

receive.denyCurrentBranch

trueまたは「refuse」に設定すると、git-receive-packは、ベアではないリポジトリの現在チェックアウトされているブランチへの参照更新を拒否します。このようなプッシュは、HEADがインデックスやワークツリーと同期しなくなる可能性があるため、潜在的に危険です。「warn」に設定すると、そのようなプッシュに関する警告を標準エラー出力に表示しますが、プッシュは続行されます。「false」または「ignore」に設定すると、メッセージなしでそのようなプッシュを許可します。デフォルトは「refuse」です。

もう1つのオプションは「updateInstead」で、現在のブランチにプッシュする場合にワークツリーを更新します。このオプションは、一方がインタラクティブなsshで簡単にアクセスできない(例:ライブウェブサイト、したがってワークディレクトリがクリーンであるという要件がある)場合に、ワークディレクトリを同期するために使用されます。このモードは、異なるオペレーティングシステムでコードをテストおよび修正するためにVM内で開発する際にも役立ちます。

デフォルトでは、「updateInstead」はワークツリーまたはインデックスがHEADと異なる場合、プッシュを拒否しますが、push-to-checkoutフックを使用してこれをカスタマイズできます。githooks[5]を参照してください。

receive.denyNonFastForwards

true に設定すると、git-receive-pack は高速転送ではない参照更新を拒否します。これにより、強制的なプッシュであっても、そのような更新がプッシュによって行われるのを防ぐことができます。この設定変数は、共有リポジトリを初期化する際に設定されます。

receive.hideRefs

この変数はtransfer.hideRefsと同じですが、receive-packにのみ適用されます(したがって、プッシュには影響しますが、フェッチには影響しません)。git pushによる隠された参照の更新または削除の試みは拒否されます。

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からデータを受信し、refを更新した後、git-update-server-infoを実行します。

receive.shallowUpdate

trueに設定すると、新しい参照が新しいシャロールートを必要とする場合、.git/shallowが更新されます。そうでなければ、それらの参照は拒否されます。

reftable.blockSize

reftable バックエンドがブロックを書き込む際に使用するバイト単位のサイズ。ブロックサイズはライターによって決定され、2 の累乗である必要はありません。ブロックサイズは、リポジトリで使用される最長の参照名またはログエントリよりも大きくする必要があります。参照はブロックをまたがることができないためです。

仮想メモリシステムまたはファイルシステムに優しい2の累乗(4KBや8KBなど)が推奨されます。大きなサイズ(64KB)は圧縮率を向上させる可能性がありますが、アクセス時のリーダーによるコストが増加する可能性があります。

最大のブロックサイズは16777215バイト(15.99 MiB)です。デフォルト値は4096バイト(4KB)です。0の値はデフォルト値を使用します。

reftable.restartInterval

リスタートポイントを作成する間隔。reftableバックエンドはファイル作成時にリスタートポイントを決定します。16レコードごとが小さなブロックサイズ(4kまたは8k)に適している場合があり、64レコードごとが大きなブロックサイズ(64k)に適している場合があります。

リスタートポイントの頻度が高いほど、プレフィックス圧縮が減少し、リスタートテーブルによって消費されるスペースが増加し、どちらもファイルサイズを増加させます。

リスタートポイントの頻度が低いほど、プレフィックス圧縮がより効果的になり、全体のファイルサイズが減少しますが、バイナリ検索ステップの後により多くのレコードをたどるリーダーのペナルティが増加します。

ブロックごとに最大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>.pruneおよびgit-fetch[1]のPRUNINGセクションも参照してください。

remote.<name>.promisor

trueに設定すると、このリモートはプロミサーオブジェクトをフェッチするために使用されます。

remote.<name>.partialclonefilter

このプロミサーリモートからフェッチする際に適用されるフィルター。この値を変更またはクリアしても、新しいコミットのフェッチにのみ影響します。ローカルオブジェクトデータベースに既に存在するコミットに関連付けられたオブジェクトをフェッチするには、git-fetch[1]--refetchオプションを使用してください。

remote.<name>.serverOption

このリモートからフェッチする際に使用されるサーバーオプションのデフォルトセット。これらのサーバーオプションは、--server-option=コマンドライン引数で上書きできます。

これは多値変数であり、優先度の高い設定ファイル(例:リポジトリ内の.git/config)で空の値を使用すると、優先度の低い設定ファイル(例:$HOME/.gitconfig)から継承された値をクリアできます。

remote.<name>.followRemoteHEAD

git-fetch[1]が、リモートの構成されたrefspecを使用してフェッチする際に、remotes/<name>/HEADの更新をどのように処理するか。デフォルト値は「create」で、リモートに存在してもローカルに存在しない場合にremotes/<name>/HEADを作成します。これは既存のローカル参照には影響しません。「warn」に設定すると、リモートの値がローカルのものと異なる場合にメッセージを出力します。ローカル参照がない場合は「create」のように動作します。「warn」のバリアントとして「warn-if-not-$branch」があり、「warn」のように動作しますが、リモートのHEAD$branchの場合は黙っています。「always」に設定すると、remotes/<name>/HEADがリモートの値に黙って更新されます。最後に、「never」に設定すると、ローカル参照は変更も作成もされません。

remotes.<group>

"git remote update <group>"でフェッチされるリモートのリスト。git-remote[1]を参照してください。

repack.useDeltaBaseOffset

デフォルトでは、git-repack[1]はデルタベースオフセットを使用するパックを作成します。リポジトリをバージョン1.4.4より古いGitと直接、またはhttpのようなダンププロトコルを介して共有する必要がある場合、このオプションを「false」に設定してリパックする必要があります。ネイティブプロトコルを介した古い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が実行されるとき)にビットマップインデックスを書き込みます。このインデックスは、クローンやフェッチのために作成される後続のパックの「オブジェクトを数える」フェーズを高速化できますが、ディスクスペースと初期リパックに余分な時間がかかります。複数のパックファイルが作成される場合は効果がありません。ベアリポジトリではデフォルトでtrue、それ以外ではfalseです。

repack.updateServerInfo

falseに設定すると、git-repack[1]git-update-server-info[1]を実行しません。デフォルトはtrueです。git-repack[1]-nオプションでtrueに設定されている場合でも上書きできます。

repack.cruftWindow
repack.cruftWindowMemory
repack.cruftDepth
repack.cruftThreads

クラフトパックを生成する際にgit-pack-objects[1]が使用するパラメータで、それぞれのパラメータがコマンドラインで指定されていない場合に使用されます。デフォルト値と意味については、同名のpack.*設定変数を参照してください。

rerere.autoUpdate

true に設定すると、git-rerere は、以前に記録された解決策を使用して競合をきれいに解決した後、結果の内容でインデックスを更新します。デフォルトは false です。

rerere.enabled

解決済みコンフリクトの記録を有効にする。これにより、同じコンフリクトチャンクが再び発生した場合に自動的に解決できるようになります。デフォルトでは、git-rerere[1]$GIT_DIRの下にrr-cacheディレクトリがある場合、つまり以前にリポジトリで「rerere」が使用されたことがある場合に有効になります。

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を実行しているユーザーが所有するリポジトリのみへのアクセスを許可します。ただし、sudoを提供する非WindowsプラットフォームでGitがrootとして実行されている場合、gitはsudoが作成するSUDO_UID環境変数をチェックし、rootのIDに加えてその値として記録されたuidへのアクセスを許可します。これは、インストール中に「make && sudo make install」という一般的なシーケンスを簡単に実行できるようにするためです。sudoの下で実行されているgitプロセスはrootとして実行されますが、sudoコマンドは元のユーザーが持つIDを記録するために環境変数をエクスポートします。これが望ましいものではなく、gitにrootが所有するリポジトリのみを信頼させたい場合は、gitを呼び出す前にrootの環境からSUDO_UID変数を削除することができます。

sendemail.identity

構成 ID。指定すると、sendemail.<identity>サブセクションの値がsendemailセクションの値よりも優先されます。デフォルトの ID はsendemail.identityの値です。

sendemail.smtpEncryption

説明はgit-send-email[1]を参照してください。この設定はidentityメカニズムの対象外であることに注意してください。

sendemail.smtpSSLCertPath

CA証明書へのパス(ディレクトリまたは単一ファイル)。証明書検証を無効にするには空の文字列に設定します。

sendemail.<identity>.*

以下に見られるsendemail.*パラメータのID固有のバージョンで、コマンドラインまたはsendemail.identityのいずれかを通じてこのIDが選択された場合にそれらよりも優先されます。

sendemail.multiEdit

true(デフォルト)の場合、編集する必要のあるファイル(--annotate使用時のパッチ、--compose使用時のサマリー)を編集するために、1つのエディタインスタンスが起動されます。falseの場合、ファイルは新しいエディタが毎回起動され、1つずつ編集されます。

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.fileが最初に読み込まれます。したがって、このファイルのエントリはデフォルトのメールマップの場所のエントリよりも優先されます。gitmailmap[5]を参照してください。

sendemail.mailmap.blob

sendemail.mailmap.fileと同様ですが、値をリポジトリ内のブロブへの参照と見なします。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 コマンドのベース名(環境変数GIT_SSHまたはGIT_SSH_COMMAND、または設定項目core.sshCommandを使用して設定)に基づいて使用するコマンドライン引数を決定します。ベース名が認識されない場合、Git はまず設定された SSH コマンドを-G(設定の表示)オプションで呼び出すことで OpenSSH オプションのサポートを検出しようとし、その後 OpenSSH オプション(成功した場合)またはホストとリモートコマンド以外のオプションなし(失敗した場合)を使用します。

設定変数ssh.variantは、この検出を上書きするために設定できます。有効な値は、ssh(OpenSSHオプションを使用する場合)、plinkputtytortoiseplinksimple(ホストとリモートコマンド以外のオプションなし)です。デフォルトの自動検出は、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 コマンドはスタッシュエントリの未追跡ファイルを表示します。デフォルトは false です。git-stash[1]show コマンドの説明を参照してください。

stash.showPatch

これをtrueに設定すると、オプションなしのgit stash showコマンドはパッチ形式でスタッシュエントリを表示します。デフォルトはfalseです。git-stash[1]showコマンドの説明を参照してください。

stash.showStat

これをtrueに設定すると、オプションなしのgit stash showコマンドはスタッシュエントリの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

trueに設定すると、git-status[1]の非磁器ステータス形式で、デフォルトで--ahead-behindが有効になり、falseに設定すると--no-ahead-behindが有効になります。デフォルトは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」に設定すると、Gitはコピーも検出します。デフォルトはdiff.renamesの値です。

status.showStash

trueに設定すると、git-status[1]は現在スタッシュされているエントリの数を表示します。デフォルトはfalseです。

status.showUntrackedFiles

デフォルトでは、git-status[1]git-commit[1] は Git によって現在追跡されていないファイルを表示します。追跡されていないファイルのみを含むディレクトリは、ディレクトリ名のみで表示されます。追跡されていないファイルを表示するということは、Git がリポジトリ全体にあるすべてのファイルを lstat() する必要があることを意味し、これは一部のシステムでは遅くなる可能性があります。そのため、この変数はコマンドが追跡されていないファイルをどのように表示するかを制御します。可能な値は次のとおりです。

  • no - 追跡されていないファイルを表示しない。

  • normal - 追跡されていないファイルとディレクトリを表示する。

  • all - 追跡されていないディレクトリ内の個々のファイルも表示する。

この変数が指定されていない場合、デフォルトはnormalです。ブール値trueの通常の綴りはすべてnormalと解釈され、falsenoと解釈されます。この変数は、git-status[1]git-commit[1]の-u|--untracked-filesオプションで上書きできます。

status.submoduleSummary

デフォルトはfalseです。これをゼロ以外の数値またはtrue(-1または無制限の数値と同じ)に設定すると、サブモジュールサマリーが有効になり、変更されたサブモジュールのコミットサマリーが表示されます(git-submodule[1]の--summary-limitオプションを参照)。diff.ignoreSubmodulesallに設定されている場合、またはsubmodule.<name>.ignore=allが設定されているサブモジュールのみ、すべてのサブモジュールのサマリー出力コマンドが抑制されることに注意してください。このルールの唯一の例外は、statusとcommitがステージングされたサブモジュールの変更を表示することです。無視されたサブモジュールのサマリーも表示するには、--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.activepull.rebaseなどの設定はより具体的です。これはgit submodule initによってgitmodules[5]ファイルから設定されます。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"に設定すると、変更済みとは見なされません(ただし、ステージングされている場合はstatusとcommitの出力に表示されます)。"dirty"はサブモジュールの作業ツリーへのすべての変更を無視し、サブモジュールのHEADとスーパープロジェクトに記録されているコミットとの差分のみを考慮します。"untracked"は、作業ツリー内の追跡されているファイルが変更されたサブモジュールも表示させます。"none"(このオプションが設定されていない場合のデフォルト)を使用すると、作業ツリーに追跡されていないファイルがあるサブモジュールも変更済みとして表示されます。この設定は、このサブモジュールに対する.gitmodulesでの設定を上書きします。どちらの設定も、コマンドラインで"--ignore-submodules"オプションを使用することで上書きできます。git submoduleコマンドはこの設定の影響を受けません。

submodule.<name>.active

サブモジュールがgitコマンドにとって関心のあるものかどうかを示すブール値。この設定オプションはsubmodule.active設定オプションよりも優先されます。詳細はgitsubmodules[7]を参照してください。

submodule.active

サブモジュールのパスと照合して、そのサブモジュールがgitコマンドにとって関心のあるものかどうかを判断するために使用されるパススペックを含む繰り返しフィールド。詳細はgitsubmodules[7]を参照してください。

submodule.recurse

コマンドがデフォルトで--recurse-submodulesオプションを有効にするかどうかを示すブール値。デフォルトはfalseです。

trueに設定されている場合、--no-recurse-submodulesオプションで無効にすることができます。このオプションを持たない一部のGitコマンドが、submodule.recurseの影響を受ける上記のコマンドの一部を呼び出す場合があることに注意してください。たとえば、git remote updategit fetchを呼び出しますが、--no-recurse-submodulesオプションを持ちません。これらのコマンドの回避策は、git -c submodule.recurse=0を使用して一時的に設定値を変更することです。

以下のリストは、--recurse-submodulesを受け入れるコマンドと、この設定でサポートされているかどうかを示しています。

  • checkoutfetchgreppullpushread-treeresetrestoreswitchは常にサポートされています。

  • clonels-filesはサポートされていません。

  • branchsubmodule.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で、このチェックを無効にする。

trailer.separators

このオプションは、どの文字がトレーラーセパレータとして認識されるかを指定します。デフォルトでは、:のみがトレーラーセパレータとして認識されますが、他のgitコマンドとの互換性のために、=はコマンドラインで常に受け入れられます。

このオプションで与えられた最初の文字は、このトレーラーの設定で別のセパレータが指定されていない場合のデフォルト文字になります。

例えば、このオプションの値が"%=$"の場合、<key><sep><value>の形式で<sep>が%=$のいずれかを含み、その後にスペースが続く行のみがトレーラーと見なされます。そして、%がデフォルトのセパレータとして使用されるため、デフォルトではトレーラーは<key>% <value>のように表示されます(キーと値の間に1つのパーセント記号と1つのスペースが表示されます)。

trailer.where

このオプションは、新しいトレーラーがどこに追加されるかを指定します。

これは、デフォルトであるendstartafter、またはbeforeのいずれかになります。

endの場合、新しい各トレーラーは既存のトレーラーの末尾に表示されます。

startの場合、新しい各トレーラーは既存のトレーラーの末尾ではなく、先頭に表示されます。

afterの場合、新しい各トレーラーは、同じ<key>を持つ最後のトレーラーの直後に表示されます。

beforeの場合、新しい各トレーラーは、同じ<key>を持つ最初のトレーラーの直前に表示されます。

trailer.ifexists

このオプションにより、入力に同じ<key>を持つトレーラーがすでに少なくとも1つ存在する場合に実行されるアクションを選択できます。

このオプションの有効な値は、addIfDifferentNeighbor(これがデフォルト)、addIfDifferentaddreplace、またはdoNothingです。

addIfDifferentNeighborを使用すると、新しいトレーラーは、新しいトレーラーが追加される行の上または下に、同じ(<key>, <value>)のペアを持つトレーラーがない場合にのみ追加されます。

addIfDifferentを使用すると、新しいトレーラーは、同じ(<key>, <value>)のペアを持つトレーラーが入力にまだ存在しない場合にのみ追加されます。

addを使用すると、入力に同じ(<key>, <value>)のペアを持つトレーラーがすでにいくつか存在する場合でも、新しいトレーラーが追加されます。

replaceを使用すると、同じ<key>を持つ既存のトレーラーは削除され、新しいトレーラーが追加されます。削除されるトレーラーは、新しいトレーラーが追加される場所に最も近いもの(同じ<key>を持つ)になります。

doNothingを使用すると、何も行われません。つまり、入力に同じ<key>を持つトレーラーがすでに存在する場合、新しいトレーラーは追加されません。

trailer.ifmissing

このオプションにより、入力に同じ<key>を持つトレーラーがまだ存在しない場合に実行されるアクションを選択できます。

このオプションの有効な値は、add(これがデフォルト)とdoNothingです。

addを使用すると、新しいトレーラーが追加されます。

doNothingを使用すると、何も行われません。

trailer.<keyAlias>.key

<key>に対する<keyAlias>を定義します。<keyAlias>は<key>のプレフィックスである必要があります(大文字小文字は問いません)。例えば、git config trailer.ack.key "Acked-by"では、「Acked-by」が<key>で、「ack」が<keyAlias>です。この設定により、長い--trailer "Acked-by:..."の代わりに、「ack」<keyAlias>を使用してコマンドラインで短い--trailer "ack:..."呼び出しが可能になります。

<key>の末尾には、区切り文字といくつかのスペース文字が続く場合があります。デフォルトでは、唯一有効な区切り文字は:ですが、これはtrailer.separators設定変数を使用して変更できます。

キーに区切り文字がある場合、それはトレーラーを追加する際のデフォルトの区切り文字を上書きします。

trailer.<keyAlias>.where

このオプションは、trailer.where設定変数と同じ値を取り、指定された<keyAlias>を持つトレーラーに対して、そのオプションで指定された値を上書きします。

trailer.<keyAlias>.ifexists

このオプションは、trailer.ifexists設定変数と同じ値を取り、指定された<keyAlias>を持つトレーラーに対して、そのオプションで指定された値を上書きします。

trailer.<keyAlias>.ifmissing

このオプションは、trailer.ifmissing設定変数と同じ値を取り、指定された<keyAlias>を持つトレーラーに対して、そのオプションで指定された値を上書きします。

trailer.<keyAlias>.command

trailer.<keyAlias>.cmdの代わりに非推奨になりました。このオプションは、指定されたコマンドに引数として何も渡さない点を除いて、trailer.<keyAlias>.cmdと同じように動作します。代わりに、部分文字列$ARGの最初の出現は、引数として渡されるであろう<value>に置き換えられます。

ユーザーのコマンド内の$ARGは一度だけ置換され、元の$ARGの置換方法は安全ではないことに注意してください。

同じ<keyAlias>に対してtrailer.<keyAlias>.cmdtrailer.<keyAlias>.commandの両方が指定された場合、trailer.<keyAlias>.cmdが使用され、trailer.<keyAlias>.commandは無視されます。

trailer.<keyAlias>.cmd

このオプションは、指定された<keyAlias>を持つトレーラーを自動的に追加するために一度呼び出され、その後、このオプションが生成するトレーラーの<value>を変更するために--trailer <keyAlias>=<value>引数が指定されるたびに呼び出されるシェルコマンドを指定するために使用できます。

指定されたコマンドが、指定された<keyAlias>を持つトレーラーを追加するために最初に呼び出された場合、動作は、特別な--trailer <keyAlias>=<value>引数が「git interpret-trailers」コマンドの先頭に追加されたかのようになります。ここで<value>は、コマンドの標準出力の先頭と末尾の空白が削除されたものとみなされます。

いくつかの--trailer <keyAlias>=<value>引数もコマンドラインで渡された場合、コマンドはこれらの引数と同じ<keyAlias>ごとに再度呼び出されます。そして、これらの引数の<value>部分は、もしあれば、コマンドの最初の引数として渡されます。このようにして、コマンドは--trailer <keyAlias>=<value>引数で渡された<value>から計算された<value>を生成できます。

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のようにオブジェクトストアをクリーンに保つことを信頼することはできません。

オブジェクトは解凍されるとオブジェクトストアに書き込まれるため、たとえ「フェッチ」が失敗したとしても、悪意のあるオブジェクトが導入される場合があります。その後、「フェッチ」が成功するのは、新しい受信オブジェクトのみがチェックされ、すでにオブジェクトストアに書き込まれているオブジェクトはチェックされないためです。この動作の違いに依存すべきではありません。将来的には、このようなオブジェクトは「フェッチ」についても隔離される可能性があります。

今のところ、心配性な人は「プッシュ」と同じ保護が必要な場合、何らかの方法で隔離環境をエミュレートする必要があります。例えば、内部ミラーの場合、2つのステップでミラーリングを行います。1つは信頼できないオブジェクトをフェッチし、次に2回目の「プッシュ」(隔離を使用します)を別の内部リポジトリに行い、内部クライアントはこのプッシュされたリポジトリを利用するか、内部フェッチを差し止め、完全な「fsck」が実行された後(そしてその間に新しいフェッチが発生していない場合)にのみ許可します。

transfer.hideRefs

receive-packupload-packが最初の広告から除外する参照を決定するために使用する文字列。複数のプレフィックス文字列を指定するには、複数の定義を使用します。この変数の値にリストされている階層下にある参照は除外され、git pushまたはgit fetchに応答するときに非表示になります。この設定のプログラム固有のバージョンについては、receive.hideRefsuploadpack.hideRefsを参照してください。

エントリを否定するためにref名の前に!を含めることもできます。これは、以前のエントリが非表示としてマークしたものでも、明示的に公開します。複数のhideRefs値がある場合、後のエントリが以前のエントリを上書きします(より具体的な設定ファイルのエントリは、より具体的なでないエントリを上書きします)。

名前空間が使用されている場合、各参照はtransfer.hiderefsパターンと照合される前に名前空間プレフィックスが削除されます。削除前に参照と照合するには、参照名の前に^を追加します。!^を組み合わせる場合、!を最初に指定する必要があります。

例えば、refs/heads/mastertransfer.hideRefsに指定されており、現在の名前空間がfooである場合、refs/namespaces/foo/refs/heads/masterはアドバタイズから除外されます。uploadpack.allowRefInWantが設定されている場合、upload-packはプロトコルv2 fetchコマンドでwant-ref refs/heads/masterrefs/namespaces/foo/refs/heads/masterが存在しなかったかのように扱います。receive-packは、その名前(いわゆる「.have」行)に言及せずに、参照が指すオブジェクトIDを引き続きアドバタイズします。

参照を非表示にしても、クライアントはgitnamespaces[7]マニュアルページの「SECURITY」セクションに記載されている手法を使用して、ターゲットオブジェクトを盗むことができる場合があります。プライベートデータは別のリポジトリに保持するのが最善です。

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]の「SECURITY」セクションの議論を参照してください。デフォルトはfalseです。

uploadpack.hideRefs

この変数はtransfer.hideRefsと同じですが、upload-packにのみ適用されます(したがって、プッシュではなくフェッチのみに影響します)。git fetchによる隠された参照のフェッチ試行は失敗します。uploadpack.allowTipSHA1InWantも参照してください。

uploadpack.allowTipSHA1InWant

uploadpack.hideRefsが有効な場合、upload-packが非表示の参照の先端にあるオブジェクトを要求するフェッチリクエストを受け入れることを許可します(デフォルトでは、そのようなリクエストは拒否されます)。uploadpack.hideRefsも参照してください。これがfalseの場合でも、クライアントはgitnamespaces[7]manページの「SECURITY」セクションに記載されている手法を使用してオブジェクトを盗むことができる場合があります。プライベートデータは別のリポジトリに保持するのが最善です。

uploadpack.allowReachableSHA1InWant

upload-packが、任意の参照チップから到達可能なオブジェクトを要求するフェッチリクエストを受け入れることを許可します。ただし、オブジェクトの到達可能性の計算は計算コストが高いことに注意してください。デフォルトはfalseです。これがfalseの場合でも、クライアントはgitnamespaces[7]manページの「SECURITY」セクションに記載されている手法を使用してオブジェクトを盗むことができる場合があります。プライベートデータは別のリポジトリに保持するのが最善です。

uploadpack.allowAnySHA1InWant

upload-packが任意のオブジェクトを要求するフェッチリクエストを受け入れることを許可します。これはuploadpack.allowTipSHA1InWantuploadpack.allowReachableSHA1InWantを意味します。trueに設定すると、両方を有効にし、falseに設定すると、両方を無効にします。デフォルトでは設定されていません。

uploadpack.keepAlive

upload-packpack-objectsを開始した後、pack-objectsがパックを準備している間、静かな期間がある場合があります。通常は進捗情報が出力されますが、フェッチに--quietが使用された場合、pack-objectsはパックデータが始まるまで何も出力しません。一部のクライアントとネットワークは、サーバーがハングしていると見なし、諦める可能性があります。このオプションを設定すると、upload-packuploadpack.keepAlive秒ごとに空のキープアライブパケットを送信するように指示されます。このオプションを0に設定すると、キープアライブパケットが完全に無効になります。デフォルトは5秒です。

uploadpack.packObjectsHook

このオプションが設定されている場合、upload-packがクライアント用のパックファイルを作成するためにgit pack-objectsを実行する代わりに、このシェルコマンドを実行します。pack-objectsコマンドとそれが実行するはずだった引数(先頭のgit pack-objectsを含む)はシェルコマンドに追加されます。フックの標準入力と標準出力は、まるでpack-objects自体が実行されたかのように扱われます。つまり、upload-packpack-objects向けに入力されたデータをフックに供給し、標準出力に完成したパックファイルを期待します。

この設定変数は、保護された設定で指定されている場合にのみ尊重されることに注意してください(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

--filter=tree:<n>は、<n>uploadpackfilter.tree.maxDepthの値を超えない場合にのみ許可されます。設定されている場合、この設定変数が既に設定されていない限り、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.nameおよびuser.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]の環境変数セクションを、認証情報を探している場合はcredential.usernameオプションを参照してください。

user.useConfigOnly

Gitに、user.emailおよびuser.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-rsa XXXXXX identifier」のような「ssh-」で始まる生のキーは「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

いくつかのコマンドで使用されるWebブラウザを指定します。現在、git-instaweb[1]git-help[1]のみがこれを使用する可能性があります。

worktree.guessRemote

ブランチが指定されず、-b-B--detachのいずれも使用されていない場合、git worktree addはデフォルトでHEADから新しいブランチを作成します。worktree.guessRemoteがtrueに設定されている場合、worktree addは新しいブランチ名に一意に一致するリモート追跡ブランチを見つけようとします。そのようなブランチが存在する場合、そのブランチがチェックアウトされ、新しいブランチの「アップストリーム」として設定されます。そのような一致が見つからない場合、現在のHEADから新しいブランチを作成するというフォールバックが行われます。

worktree.useRelativePaths

ワークツリーを相対パス("true"の場合)または絶対パス("false"の場合)でリンクします。これは、リポジトリとワークツリーが異なる場所や環境間で移動される可能性がある設定に特に役立ちます。デフォルトは"false"です。

worktree.useRelativePathsを"true"に設定すると、extension.relativeWorktrees設定が有効になる(git-config[1]を参照)ため、古いバージョンのGitとは互換性がなくなることに注意してください。

バグ

非推奨の[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