日本語 ▾ トピック ▾ 最新バージョン ▾ git-config は 2.49.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 オプションが指定されていない限り、拡張正規表現です) を指定する必要があります。パターンに一致する既存の値のみが更新または削除されます。パターンに一致しない行を扱いたい場合は、先頭に感嘆符を1つ付けるだけです (EXAMPLES も参照)。ただし、これは --fixed-value オプションが使用されていない場合にのみ機能することに注意してください。

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

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

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

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

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

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

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

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

  • 存在しないオプションを削除しようとしました (ret=5)、

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

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

成功した場合、コマンドは終了コード0を返します。

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

コマンド

list

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

get

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

set

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

unset

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

rename-section

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

remove-section

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

edit

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

オプション

--replace-all

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

--append

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

--comment <message>

新規または変更された行の末尾にコメントを追加します。

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

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

--regexp

get と共に使用すると、名前を正規表現として解釈します。正規表現マッチングは現在大文字と小文字を区別し、セクション名と変数名が小文字に変換され、サブセクション名は変換されないキーの正規化されたバージョンに対して行われます。

--url=<URL>

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

--global

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

オプションの読み取り: 利用可能なすべてのファイルからではなく、グローバルの ~/.gitconfig および $XDG_CONFIG_HOME/git/config からのみ読み取ります。

詳しくは FILES を参照してください。

--system

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

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

詳しくは FILES を参照してください。

--local

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

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

詳しくは FILES を参照してください。

--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 ではなく、指定されたファイルに書き込みます。

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

詳しくは FILES を参照してください。

--blob <blob>

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

--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 と同様に、照会されたすべての設定オプションの出力にその値のスコープ (worktree, local, global, system, command) を追加します。

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

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

--[no-]includes

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

--default <value>

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

非推奨モード

以下のモードはサブコマンドの推奨により非推奨となりました。新しい構文への移行をお勧めします。

git config <name>

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

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

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

-l
--list

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

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

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

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

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

--get-regexp <name-regexp>

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

--get-urlmatch <name> <URL>

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

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

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

--add <name> <value>

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

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

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

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

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

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

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

--remove-section <name>

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

-e
--edit

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

設定

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

ファイル

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

$(prefix)/etc/gitconfig

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

$XDG_CONFIG_HOME/git/config
~/.gitconfig

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

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

$GIT_DIR/config

リポジトリ固有の構成ファイル。

$GIT_DIR/config.worktree

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

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

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

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

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

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

スコープ

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

system

$(prefix)/etc/gitconfig

global

$XDG_CONFIG_HOME/git/config

~/.gitconfig

local

$GIT_DIR/config

worktree

$GIT_DIR/config.worktree

command

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

-c オプション

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

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

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

保護された構成

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

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

環境変数

GIT_CONFIG_GLOBAL
GIT_CONFIG_SYSTEM

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

GIT_CONFIG_NOSYSTEM

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

詳しくは FILES を参照してください。

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に適用されるかを識別するための接尾辞があります。ここでは、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 …​」の接尾辞がない行だけを置き換えたい場合は、次のようにします。

% 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.sslVerifyfalse に設定され、その他のすべてでは 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] の「CONFIGURATION FILE」セクションを参照) は、そのリポジトリの設定を保存するために使用され、$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進数エスケープシーケンスを含む) は無効です。

インクルード

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

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は上記の正確なキーワードのみをサポートしています。

gitdirgitdir/i を介したマッチングに関する追加の注意点

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

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

    これは v2.13.0 でのこの機能の初回リリースでは異なり、実パス版のみがマッチしました。この機能の初回リリースとの互換性を保ちたい構成では、実パス版のみを指定するか、両方のバージョンを指定する必要があります。

  • ../ は特別な意味を持たず、文字通り一致するため、これはおそらくあなたが望むものではありません。

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

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

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

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

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

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

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

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

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

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

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

多くの変数の値は単純な文字列として扱われますが、特定の方の値を取る変数や、それらのスペルに関するルールが存在します。

ブール値

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

true

ブール値のtrueのリテラルは yesontrue1 です。また、= <value> なしで定義された変数はtrueとみなされます。

false

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

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

整数

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

色を取る変数の値は、色 (前景と背景にそれぞれ最大2つ) と属性 (好きなだけ) のリストであり、スペースで区切られます。

受け入れられる基本色は normalblackredgreenyellowbluemagentacyanwhitedefault です。最初に指定された色が前景色であり、2番目が背景色です。normaldefault を除くすべての基本色は、bright を色の前に付けることで指定できる明るいバリアント (例: brightred) を持ちます。

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

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

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

受け入れられる属性は bolddimulblinkreverseitalicstrike (取り消し線または「ストライクスルー」文字用) です。色の位置 (前、後、またはその間) に関しては、属性の位置は関係ありません。特定の属性は、no または no- を接頭辞として付けることでオフにできます (例: noreverseno-ul など)。

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

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

Git の事前定義されたカラースロットでは、色付けされた出力の各項目の開始時に属性がリセットされることになっています。したがって、color.decorate.branchblack に設定すると、そのブランチ名は単に black で表示されます。たとえ同じ出力行の前の要素 (例えば、log --decorate 出力でブランチ名リストの前の開き括弧) が bold や他の属性で色付けされるように設定されていてもです。ただし、カスタムログ形式では、より複雑で階層的な色付けが行われる場合があり、その場合は否定形が役立つことがあります。

パス名

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

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

変数

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

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

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

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

advice.*

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

これらは人間のユーザーを助けることを意図しているため、これらのメッセージは標準エラーに出力されます。Gitをサブプロセスとして実行するツールがこれらを邪魔だと感じる場合、環境変数 GIT_ADVICE=0 を設定することで、すべての助言メッセージを抑制できます。

addEmbeddedRepo

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

addEmptyPathspec

ユーザーがパス指定パラメータなしで git add を実行したときに表示されます。

addIgnoredFile

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

amWorkDir

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

ambiguousFetchRefspec

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

checkoutAmbiguousRemoteBranchName

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

commitBeforeMerge

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

detachedHead

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

diverging

ファストフォワードが不可能な場合に表示されます。

fetchShowForcedUpdates

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

forceDeleteBranch

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

ignoredHook

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

implicitIdentity

ユーザーの情報がシステムユーザー名とドメイン名から推測された場合に、ユーザーに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

pushNonFFCurrentpushNonFFMatchingpushAlreadyExistspushFetchFirstpushNeedsForcepushRefNeedsUpdate を同時に無効にしたい場合は、この変数を false に設定してください。

rebaseTodoError

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

refSyntax

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

resetNoRefresh

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

resolveConflict

競合により操作の実行が妨げられた場合に、様々なコマンドによって表示されます。

rmHints

git-rm[1] の出力で失敗した場合に、現在の状態からどのように続行するかについての指示を出すために表示されます。

sequencerInUse

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

skippedCherryPicks

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

sparseIndexExpanded

スパースインデックスがフルインデックスに展開された場合に表示されます。これは、スパースチェックアウトの範囲外に予期しないファイルセットが存在するためと考えられます。

statusAheadBehind

git-status[1] がローカル参照とリモートトラッキング参照の進捗/遅延数を計算し、その計算に予想以上の時間がかかった場合に表示されます。status.aheadBehind が false であるか、--no-ahead-behind オプションが指定されている場合は表示されません。

statusHints

git-status[1] の出力、git-commit[1] でコミットメッセージを記述する際に表示されるテンプレート、およびブランチを切り替える際に git-switch[1] または git-checkout[1] が表示するヘルプメッセージに、現在の状態からどのように進めるかについての指示を表示します。

statusUoption

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

submoduleAlternateErrorStrategyDie

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

submoduleMergeConflict

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

submodulesNotUpdated

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

suggestDetachingHead

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

updateSparsePath

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

waitingForEditor

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

worktreeAddOrphan

ユーザーが無効な参照から作業ツリーを作成しようとした場合に、代わりに新しいアンボーンブランチを作成する方法をユーザーに伝えるために表示されます。

alias.*

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

エイリアスの最初の単語が必ずしもコマンドである必要はないことに注意してください。これは、git の呼び出しに渡されるコマンドラインオプションでも構いません。特に、-c を使用して一時的な構成を渡したり、-p を使用してページングを強制したりする場合に便利です。例えば、loud-rebase = -c commit.verbose=true rebase を定義すると、git loud-rebase の実行は git -c commit.verbose=true rebase と同等になります。また、ps = -p status は便利なエイリアスとなります。元のコマンドではページングされない git 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を記録しており、それらのブロブがローカルで利用可能な場合 (コマンドラインから --3way オプションを指定するのと同等)、git am に3ウェイマージにフォールバックするように指示します。デフォルトは false です。git-am[1] を参照してください。

apply.ignoreWhitespace

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

apply.whitespace

git apply に、--whitespace オプションと同じように、空白文字の処理方法を指示します。git-apply[1] を参照してください。

attr.tree

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

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

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

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

擬似マージグループ内で、コミットはパターン内のキャプチャグループに基づいてさらにサブグループにグループ化されることがあります。これらのサブグループ化は、正規表現からの任意のキャプチャグループを - ダッシュで連結することにより形成されます。

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

bitmapPseudoMerge.<name>.decay

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

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

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

bitmapPseudoMerge.<name>.sampleRate

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

bitmapPseudoMerge.<name>.threshold

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

bitmapPseudoMerge.<name>.maxMerges

コミットが分配される擬似マージコミットの最大数を決定します。

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

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

非負である必要があります。デフォルト値は64です。

bitmapPseudoMerge.<name>.stableThreshold

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

このしきい値をより小さな値 (例: 1.week.ago) に設定すると、より多くの安定したグループが生成されます (これには一度きりの生成コストがかかります) が、それらのグループは時間とともに古くなる可能性があります。より大きな値を使用すると、その逆のペナルティ (より少ないがより有用な安定したグループ) が発生します。

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行に1つの省略されていないオブジェクト名) を無視します。空白文字と # で始まるコメントは無視されます。このオプションは複数回繰り返すことができます。空のファイル名は無視されるリビジョンのリストをリセットします。このオプションはコマンドラインオプション --ignore-revs-file よりも前に処理されます。

blame.markUnblamableLines

git-blame[1] の出力で、無視されたリビジョンによって変更されたが、他のコミットに起因させることができなかった行を * でマークします。

blame.markIgnoredLines

git-blame[1] の出力で、無視されたリビジョンによって変更されたが、他のコミットに起因させた行を ? でマークします。

branch.autoSetupMerge

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

branch.autoSetupRebase

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

branch.sort

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

branch.<name>.remote

ブランチ <name> にいる場合、git 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 fetch に対して、FETCH_HEAD でマージ対象としてマークされるデフォルトの refspec を指示します。その値は refspec のリモート部分のように扱われ、「branch.<name>.remote」で指定されたリモートからフェッチされる ref と一致する必要があります。マージ情報は、git pull (最初に git fetch を呼び出す) によって、マージするデフォルトブランチを検索するために使用されます。このオプションがない場合、git pull はフェッチされた最初の refspec をマージするようデフォルト設定されます。オクトパスマージを行うには複数の値を指定します。ローカルリポジトリ内の別のブランチから <name> へマージするように git pull を設定したい場合、branch.<name>.merge を目的のブランチにポイントし、branch.<name>.remote に相対パス設定の . (ピリオド) を使用できます。

branch.<name>.mergeOptions

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

branch.<name>.rebase

true の場合、「git pull」が実行されたときに、デフォルトリモートからのデフォルトブランチをマージする代わりに、フェッチされたブランチの上にブランチ <name> をリベースします。ブランチ固有ではない方法でこれを行うには、「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 checkout <something>` または `git switch <something>` が別のリモート上の `<something>` ブランチをチェックアウトする場合に git-switch[1] および git-checkout[1] によって使用され、`git worktree add` がリモートブランチを参照する場合に git-worktree[1] によって使用されます。この設定は、将来的に他のチェックアウトに似たコマンドや機能に使用される可能性があります。

checkout.guess

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

checkout.workers

ワーキングツリーを更新する際に使用する並列ワーカーの数。デフォルトは1つ、つまりシーケンシャル実行です。1未満の値に設定された場合、Git は利用可能な論理コアの数だけワーカーを使用します。この設定と checkout.thresholdForParallelism は、チェックアウトを実行するすべてのコマンドに影響します。(例: checkout, clone, reset, sparse-checkout など)。

注: 並列チェックアウトは、SSD 上または NFS 経由のリポジトリでは通常、より優れたパフォーマンスを発揮します。スピニングディスク上および/またはコア数の少ないマシン上のリポジトリでは、デフォルトのシーケンシャルチェックアウトの方が多くの場合、パフォーマンスが優れています。リポジトリのサイズと圧縮レベルも、並列バージョンがどの程度機能するかに影響を与える可能性があります。

checkout.thresholdForParallelism

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

clean.requireForce

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

clone.defaultRemoteName

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

clone.rejectShallow

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

clone.filterSubmodules

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

color.advice

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

color.advice.hint

ヒントにカスタム色を使用します。

color.blame.highlightRecent

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

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

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

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

color.blame.repeatedLines

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

color.branch

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

color.branch.<slot>

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

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>

diff の色付けにカスタム色を使用します。<slot> は、パッチのどの部分に指定された色を使用するかを指定し、context (コンテキストテキスト - plain は歴史的な同義語)、meta (メタ情報)、frag (ハンクヘッダー)、func (ハンクヘッダー内の関数)、old (削除された行)、new (追加された行)、commit (コミットヘッダー)、whitespace (空白エラーのハイライト)、oldMoved (削除された行)、newMoved (追加された行)、oldMovedDimmedoldMovedAlternativeoldMovedAlternativeDimmednewMovedDimmednewMovedAlternative newMovedAlternativeDimmed (詳細については git-diff[1] の *--color-moved* の *<mode>* 設定を参照)、contextDimmedoldDimmednewDimmedcontextBoldoldBold、および newBold (詳細については git-range-diff[1] を参照) のいずれかです。

color.decorate.<slot>

git log --decorate の出力にカスタム色を使用します。<slot> は、ローカルブランチ、リモート追跡ブランチ、タグ、stash、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> は、promptheaderhelp、または error で、インタラクティブコマンドの4つの異なる通常の出力タイプに対応します。

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 (「no branch」警告が表示される色で、デフォルトは赤)、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] を参照してください。常にコメント文字 # で始まる行をログメッセージに残したい場合にデフォルトを変更すると便利です。その場合、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 です (config ファイルで core.filemode が指定されていない場合)。

core.hideDotFiles

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

core.ignoreCase

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

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

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

core.precomposeUnicode

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

core.protectHFS

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

core.protectNTFS

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

core.fsmonitor

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

フックベースのファイルシステムモニタと同様に、組み込みのファイルシステムモニタは、多数のファイルを含むワーキングディレクトリで Git インデックスを更新する必要がある Git コマンド (例: git status) を高速化できます。組み込みモニタにより、外部のサードパーティツールをインストールして維持する必要がなくなります。

組み込みファイルシステムモニタは現在、限られたサポート対象プラットフォームでのみ利用可能です。現在、これには Windows と MacOS が含まれます。

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

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

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

複数のバージョンの Git (例えば、コマンドライン上のバージョンと IDE ツール内の別のバージョン) を同時に使用する場合、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 の差は無視されます。これは、Git の外部の何か (ファイルシステムクローラーや一部のバックアップシステム) によって inode の変更時刻が定期的に変更される場合に便利です。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] を参照してください。feature.manyFiles が有効になっており、この設定をデフォルトで true にしている場合を除き、デフォルトでは keep です。

core.checkStat

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

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

core.quotePath

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

core.eol

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

core.safecrlf

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

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

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

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

この安全チェックは、core.eol および core.autocrlf の異なる設定でチェックアウトが元のファイルと同一のファイルを生成することを意味するのではなく、現在の設定でのみそれを意味することに注意してください。例えば、LF を持つテキストファイルは core.eol=lf で受け入れられ、後で core.eol=crlf でチェックアウトされる可能性があります。この場合、元のファイルは LF を含んでいましたが、結果のファイルには CRLF が含まれます。しかし、両方のワークツリーで改行コードは一貫しており、すべて LF またはすべて CRLF のいずれかであり、混在することはありません。混在する改行コードを持つファイルは、core.safecrlf メカニズムによって報告されます。

core.autocrlf

この変数を「true」に設定することは、すべてのファイルで text 属性を「auto」に設定し、core.eol を「crlf」に設定することと同じです。ワーキングディレクトリに CRLF 行末を持たせ、リポジトリに LF 行末がある場合は true に設定します。この変数は input に設定することもできます。その場合、出力変換は行われません。

core.checkRoundtripEncoding

working-tree-encoding 属性 (gitattributes[5] を参照) で使用される場合に、Git が UTF-8 ラウンドトリップチェックを実行するエンコーディングのカンマおよび/または空白区切りのリスト。デフォルト値は 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 は lstat() 呼び出しを使用してファイルが変更されたかどうかを検出するのを避け、インデックスとワーキングツリーの両方で同一に更新した追跡対象ファイルに対して「assume-unchanged」ビットを設定します。

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 ディレクトリへのパス (これは --git-dir または GIT_DIR で指定されるか、自動的に検出されます) に対する相対パスのいずれかです。--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 に設定されている場合、存在しない「$GIT_DIR/logs/<ref>」ファイルは、ブランチヘッド (つまり refs/heads/ 下)、リモート参照 (つまり refs/remotes/ 下)、ノート参照 (つまり refs/notes/ 下)、およびシンボリック参照 HEAD に対して自動的に作成されます。always に設定されている場合、refs/ 下の任意の参照に対して、不足している reflog が自動的に作成されます。

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

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

core.repositoryFormatVersion

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

core.sharedRepository

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

core.warnAmbiguousRefs

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

core.compression

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

core.looseCompression

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

core.packedGitWindowSize

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

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

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

core.packedGitLimit

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

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

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

core.deltaBaseCacheLimit

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

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

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

core.bigFileThreshold

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

設定された制限を超えるファイルは、次のようになります。

  • デルタ圧縮を試行せずに、パックファイルにデフレート形式で保存されます。

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

    デルタ圧縮なしで大きなファイルを保存すると、メモリの過剰な使用を回避できますが、ディスク使用量が増加するというわずかな代償が伴います。

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

  • 書き込み時には一般的にストリームとして扱われ、これによりメモリの過剰な使用を回避できますが、一定の固定オーバーヘッドがかかります。これを利用するコマンドには、git-archive[1]git-fast-import[1]git-index-pack[1]git-unpack-objects[1]、および git-fsck[1] があります。

core.excludesFile

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

core.askPass

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

core.attributesFile

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

core.hooksPath

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

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

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

core.editor

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

core.commentChar
core.commentString

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

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

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

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

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

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.pagerless -Sのように設定できます。これはGitによってシェルに渡され、最終的なコマンドはLESS=FRX less -Sに変換されます。環境はSオプションを設定しませんが、コマンドラインは設定し、lessに長い行を切り詰めるように指示します。同様に、core.pagerless -+Fに設定すると、環境によって指定されたFオプションがコマンドラインから無効になり、lessの「1画面で終了」の動作が停止します。特定のコマンドに対して特定のフラグをアクティブにすることも可能です。例えば、pager.blameless -Sに設定すると、git blameに対してのみ行の切り詰めが有効になります。

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

core.whitespace

検出する一般的な空白の問題をコンマ区切りでリストします。git diffはそれらを強調表示するためにcolor.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を介して強化(hardened)すべきものをコンマ区切りでリストします。任意のコンポーネントの強化を無効にするには、-を接頭辞として付けます。強化されていない項目は、クリーンでないシステムシャットダウンの際に失われる可能性があります。特別な要件がない限り、このオプションを空にするか、committedadded、またはallのいずれかを選択することをお勧めします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

core.fsyncMethod

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

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

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

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

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

core.fsyncObjectFiles

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

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

core.preloadIndex

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

これは、特にキャッシュセマンティクスが弱く、IOレイテンシが比較的高くなりがちなNFSのようなファイルシステムでのgit diffgit 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

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

この設定はデフォルトで"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

"sparse checkout"機能を有効にします。git-sparse-checkout[1]の詳細を参照してください。

core.sparseCheckoutCone

sparse checkout機能の「コーンモード」を有効にします。sparse-checkoutファイルが限定されたパターンセットを含む場合、このモードは大幅なパフォーマンス上の利点を提供します。この変数をfalseに設定することで、より柔軟なパターンを指定できるよう、「非コーンモード」を要求できます。git-sparse-checkout[1]の詳細を参照してください。

core.abbrev

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

core.maxTreeDepth

Gitがツリーを走査する際に再帰する最大深度(例:「a/b/cde/f」は深度4です)。これはGitをきれいに中止させるためのフェイルセーフであり、通常は調整する必要はありません。GitがMSVCでコンパイルされた場合、デフォルトは512です。それ以外の場合、デフォルトは2048です。

credential.helper

ユーザー名またはパスワードの認証情報が必要なときに呼び出される外部ヘルパーを指定します。ヘルパーは外部ストレージを参照して、ユーザーに認証情報を促すことを避けることができます。これは通常、引数を持つ認証情報ヘルパーの名前ですが、引数を持つ絶対パス、または!が前に付く場合はシェルコマンドでも構いません。

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

credential.interactive

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

credential.useHttpPath

認証情報を取得する際、httpまたはhttps URLの「path」コンポーネントを重要とみなします。デフォルトはfalseです。gitcredentials[7]の詳細を参照してください。

credential.sanitizePrompt

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

credential.protectProtocol

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

credential.username

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

credential.<url>.*

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

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

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

git diff HEAD

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

git diff --cached

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

git diff HEAD:<file1> <file2>

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

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

Git以外の2つのもの<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

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

default
myers

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

minimal

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

patience

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

histogram

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

diff.wsErrorHighlight

差分のcontextold、またはnew行の空白エラーを強調表示します。複数の値はコンマで区切られ、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の値とは異なる必要があります。これにより、objectFormatがこのcompatObjectFormatと一致するGitリポジトリ間のクライアントレベルの相互運用性が可能になります。特に、完全に実装された場合、objectFormatがcompatObjectFormatと一致するリポジトリからのプッシュとプルが可能になります。また、objectFormatでエンコードされたOIDに加えて、compatObjectFormatでエンコードされたOIDを使用してローカルでオブジェクトを指定することもできます。

noop

この拡張機能は、Gitの動作をまったく変更しません。format-1の互換性をテストする場合にのみ役立ちます。

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

noop-v1

この拡張機能は、Gitの動作をまったく変更しません。format-1の互換性をテストする場合にのみ役立ちます。

objectFormat

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

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

partialClone

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

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

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

preciousObjects

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

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

refStorage

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

  • packed-refsを含むルーズファイル用のfiles。これがデフォルトです。

  • 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に移動する必要があります。

各ワークツリーのカスタム可能なsparse-checkout設定に対するあなたの希望に応じて、core.sparseCheckoutcore.sparseCheckoutConeの場所を調整することも有益かもしれません。デフォルトでは、git sparse-checkout組み込みコマンドはこの拡張機能を有効にし、これらの設定値をワークツリーごとに割り当て、$GIT_DIR/info/sparse-checkoutファイルを使用して各ワークツリーの疎密性を個別に指定します。git-sparse-checkout[1]の詳細を参照してください。

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

fastimport.unpackLimit

git-fast-import[1]によってインポートされるオブジェクトの数がこの制限を下回る場合、オブジェクトはルーズオブジェクトファイルに展開されます。しかし、インポートされたオブジェクトの数がこの制限と等しいか超える場合、受信したパックは、不足しているデルタベースを追加した後、パックとして保存されます。高速インポートからパックを保存すると、特に低速なファイルシステム上でインポート操作をより速く完了させることができます。設定されていない場合、transfer.unpackLimitの値が代わりに使用されます。

feature.*

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

feature.experimental

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

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

  • pack.useBitmapBoundaryTraversal=trueは、処理するオブジェクトの数を減らすことで、ビットマップの走査時間を改善する可能性があります。

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

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

fetch.fsckObjects

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

fetch.fsck.<msg-id>

fsck.<msg-id> と同様に機能しますが、git-fsck[1] の代わりに git-fetch-pack[1] によって使用されます。詳細は fsck.<msg-id> のドキュメントを参照してください。

fetch.fsck.skipList

fsck.skipList と同様に機能しますが、git-fsck[1] の代わりに git-fetch-pack[1] によって使用されます。詳細は fsck.skipList のドキュメントを参照してください。

fetch.unpackLimit

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

fetch.prune

trueの場合、フェッチは、コマンドラインで --prune オプションが与えられたかのように自動的に動作します。remote.<name>.prune および git-fetch[1] のPRUNINGセクションも参照してください。

fetch.pruneTags

trueの場合、フェッチは、既に設定されていない場合、プルーニング時に refs/tags/*:refs/tags/* リフスペックが提供されたかのように自動的に動作します。これにより、このオプションと fetch.prune の両方を設定して、アップストリームのリファレンスとの1対1のマッピングを維持できます。remote.<name>.pruneTags および git-fetch[1] のPRUNINGセクションも参照してください。

fetch.all

trueの場合、フェッチは利用可能なすべてのリモートを更新しようとします。この動作は、--no-all を渡すか、フェッチする1つ以上のリモートを明示的に指定することでオーバーライドできます。デフォルトはfalseです。

fetch.output

リファレンス更新のステータスをどのように表示するかを制御します。有効な値は fullcompact です。デフォルト値は full です。git-fetch[1] のOUTPUTセクションを参照してください。

fetch.negotiationAlgorithm

サーバーから送信されるパックファイルのコンテンツを交渉する際に、ローカルリポジトリ内のコミットに関する情報をどのように送信するかを制御します。"consecutive" に設定すると、連続するコミットを1つずつチェックするアルゴリズムが使用されます。"skipping" に設定すると、より速く収束しようとコミットをスキップするアルゴリズムが使用されますが、必要以上に大きなパックファイルになる可能性があります。"noop" に設定すると、まったく情報を送信せず、ほぼ確実に必要以上に大きなパックファイルになりますが、交渉ステップはスキップされます。"default" に設定すると、以前の設定を上書きしてデフォルトの動作が使用されます。デフォルトは通常 "consecutive" ですが、feature.experimental がtrueの場合、デフォルトは "skipping" です。不明な値は git fetch のエラーを引き起こします。

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

fetch.showForcedUpdates

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

fetch.parallel

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

0の値は妥当なデフォルト値を与えます。設定されていない場合、デフォルトは1です。

サブモジュールの場合、この設定は submodule.fetchJobs 設定で上書きできます。

fetch.writeCommitGraph

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

fetch.bundleURI

この値は、オリジンのGitサーバーからインクリメンタルフェッチを実行する前に、バンドルURIからGitオブジェクトデータをダウンロードするためのURIを格納します。これは、git-clone[1]--bundle-uri オプションの動作と似ています。供給されたバンドルURIがインクリメンタルフェッチ用に整理されたバンドルリストを含んでいる場合、git clone --bundle-urifetch.bundleURI の値を設定します。

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

fetch.bundleCreationToken

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

作成トークンの値は、特定のバンドル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-encoding" (RFC 2047で記述) でエンコードします。デフォルトはtrueです。

format.pretty

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

format.thread

git format-patch のデフォルトのスレッド化スタイル。ブール値、または shallow または deep を指定できます。shallow スレッド化は、すべてのメールをシリーズの先頭への返信とし、先頭はカバーレター、--in-reply-to、最初のパッチメールの順に選択されます。deep スレッド化は、すべてのメールを前のメールへの返信とします。trueのブール値は shallow と同じであり、falseの値はスレッド化を無効にします。

format.signOff

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

format.coverLetter

format-patch が呼び出されたときにカバーレターを生成するかどうかを制御するブール値ですが、パッチが複数ある場合にのみカバーレターを生成するように "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 で問題のある既存のオブジェクトを列挙する方が良いです。後者を行うと、同じ破損の新しいインスタンスが unnoticed になってしまうためです。

不明な fsck.<msg-id> の値を設定するとfsckが終了しますが、receive.fsck.<msg-id> および fetch.fsck.<msg-id> に対して同じことを行うと、gitは警告を発するだけです。

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

fsck.skipList

致命的ではない方法で破損していることが判明しており、無視すべきオブジェクト名(つまり、1行に省略されていないSHA-1が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 と非常によく似ていますが、最大のパックだけでなく、しきい値を満たすすべての非クルフトパックが保持される点が異なります。デフォルトはゼロです。k, m, g の一般的な単位接尾辞がサポートされています。

保持されるパックの数が gc.autoPackLimit を超える場合、この設定変数は無視され、ベースパックを除くすべてのパックが再パックされることに注意してください。この後、パックの数は gc.autoPackLimit を下回り、gc.bigPackThreshold は再び尊重されるはずです。

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

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のalternatesメカニズムを使用してアクセス可能である必要があります。そうしないと、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

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

gitcvs.dbTableNamePrefix

データベースのテーブル名プレフィックス。使用されるデータベーステーブルの名前に前置され、1つのデータベースを複数のリポジトリに使用できるようにします。変数置換をサポートします(詳細は 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公開鍵を含むファイル。ファイルは、ssh公開鍵の前にプリンシパルの行が1つ以上続く形式で構成されます。例: 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

デフォルトの一致動作を設定します。basic, extended, fixed, または 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 として(HEADがデタッチされている場合、CUR_BRANCH は空)渡されます。

guitool.<name>.needsFile

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

guitool.<name>.noConsole

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

guitool.<name>.noRescan

ツール実行後、ワーキングディレクトリの変更を再スキャンしません。

guitool.<name>.confirm

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

guitool.<name>.argPrompt

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

guitool.<name>.revPrompt

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

guitool.<name>.revUnmerged

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

guitool.<name>.title

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

guitool.<name>.prompt

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

help.browser

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

help.format

git-help[1] で使用されるデフォルトのヘルプ形式をオーバーライドします。値 man, info, web, html がサポートされています。man がデフォルトです。webhtml は同じです。

help.autoCorrect

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

  • 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 Basic認証

  • digest - HTTP Digest認証。これにより、パスワードがプレーンテキストでプロキシに送信されるのを防ぎます

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

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

http.proxySSLCert

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

http.proxySSLKey

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

http.proxySSLCertPasswordProtected

プロキシSSL証明書のGitのパスワードプロンプトを有効にします。そうしないと、OpenSSLが証明書または秘密鍵が暗号化されている場合に、ユーザーに何度もプロンプトを表示する可能性があります。GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED 環境変数で上書きできます。

http.proxySSLCAInfo

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

http.emptyAuth

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

http.proactiveAuth

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

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

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

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

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

Basic認証が選択された場合、プレーンテキストの資格情報が意図せず公開される可能性があるため、この設定では常に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.saveCookies が設定されていない限り、http.cookieFile で指定されたファイルは入力としてのみ使用されることに注意してください。

http.saveCookies

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

http.version

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

  • HTTP/2

  • HTTP/1.1

http.curloptResolve

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

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

  • -HOST:PORT

最初の形式は、指定された HOST:PORT へのすべてのリクエストを、提供された ADDRESS(s) にリダイレクトします。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経由でフェッチまたはプッシュする際に使用されるクライアント証明書のタイプ。openssl または gnutls バックエンドを使用する場合、"PEM"、"DER" がサポートされます。"P12" は "openssl"、"schannel"、"securetransport"、および gnutls 8.11+ でサポートされます。libcurl の CURLOPT_SSLCERTTYPE も参照してください。GIT_SSL_CERT_TYPE 環境変数で上書きできます。

http.sslKeyType

HTTPS経由でフェッチまたはプッシュする際に使用されるクライアント秘密鍵のタイプ(例:"PEM"、"DER"、または"ENG")。"openssl" バックエンドを使用する場合にのみ適用されます。"DER" はopensslではサポートされていません。sslCert オプションでPKCS#11 URLを使用してPKCS#11トークンで認証する場合に特に便利です。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証明書ストアを上書きすることになります。これはデフォルトでは望ましくないため、http.sslBackend を介して schannel バックエンドが構成されている場合、Gitはデフォルトでそのバンドルを使用しないようにcURLに伝えます。ただし、http.schannelUseSSLCAInfo がこの動作を上書きする場合は例外です。

http.pinnedPubkey

httpsサービスの公開鍵。PEMまたはDERエンコードされた公開鍵ファイルのファイル名、または sha256// で始まり、その後に公開鍵のbase64エンコードされたsha256ハッシュが続く文字列のいずれかです。libcurlの CURLOPT_PINNEDPUBLICKEY も参照してください。このオプションが設定されているにもかかわらずcURLでサポートされていない場合、gitはエラーで終了します。

http.sslTry

通常のFTPプロトコル経由で接続する際に、AUTH SSL/TLSおよび暗号化されたデータ転送の使用を試みます。これは、セキュリティ上の理由でFTPサーバーが必要とする場合や、リモートFTPサーバーがサポートしている場合に安全に接続したい場合に必要となることがあります。誤設定されたサーバーで証明書検証エラーをトリガーする可能性があるため、デフォルトはfalseです。

http.maxRequests

並行して起動するHTTPリクエストの数。GIT_HTTP_MAX_REQUESTS 環境変数で上書きできます。デフォルトは5です。

http.minSessions

要求間で保持されるcurlセッションの数(スロットを横断してカウント)。これらは http_cleanup() が呼び出されるまで curl_easy_cleanup() で終了されません。USE_CURL_MULTI が定義されていない場合、この値は1に制限されます。デフォルトは1です。

http.postBuffer

スマート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.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.git` の `repo.git`)。設定キーのパスフィールドは、URLのパスフィールドと完全に一致するか、スラッシュ区切りのパス要素のプレフィックスとして一致する必要があります。これは、パスが `foo/` の設定キーがURLパス `foo/bar` に一致することを意味します。プレフィックスはスラッシュ (`/`) の境界でのみ一致します。より長い一致が優先されます(したがって、パスが `foo/bar` の設定キーは、パスが単に `foo/` の設定キーよりもURLパス `foo/bar` にとってより良い一致です)。

  5. ユーザー名(例: `https://user@example.com/repo.git` の `user`)。設定キーにユーザー名がある場合、それはURLのユーザー名と完全に一致する必要があります。設定キーにユーザー名がない場合、その設定キーは任意のユーザー名(なしを含む)を持つURLと一致しますが、ユーザー名を持つ設定キーよりも優先順位が低くなります。

上記のリストは優先順位の降順に並べられています。設定キーのパスに一致するURLは、そのユーザー名に一致するURLよりも優先されます。たとえば、URLが `https://user@example.com/foo/bar` の場合、`https://example.com/foo` の設定キーの一致が `https://user@example.com` の設定キーの一致よりも優先されます。

すべてのURLは、一致を試みる前に正規化されます(URLに埋め込まれている場合、パスワード部分は一致の目的で常に無視されます)。これにより、単純にスペルが異なる同等のURLも適切に一致します。環境変数の設定は常に任意の一致を上書きします。一致の対象となるURLは、Gitコマンドに直接与えられたものです。これは、リダイレクトの結果としてアクセスされたURLは一致に参加しないことを意味します。

i18n.commitEncoding

コミットメッセージが保存される文字エンコーディングです。Git自体はそれ自体を気にしませんが、この情報は、たとえばメールからコミットをインポートする場合や、gitkグラフィカル履歴ブラウザで(将来的には他の場所や他のポーセリンでも)必要になります。例として、git-mailinfo[1]を参照してください。デフォルトはutf-8です。

i18n.logOutputEncoding

git logなどのコマンドを実行する際にコミットメッセージが変換される文字エンコーディングです。

imap.folder

メールをドロップするフォルダで、通常は下書きフォルダです。例: "INBOX.Drafts"、"INBOX/Drafts"、または "[Gmail]/Drafts"。必須です。

imap.tunnel

サーバーへの直接ネットワーク接続を使用する代わりに、コマンドがパイプされるIMAPサーバーへのトンネルを設定するために使用されるコマンドです。`imap.host`が設定されていない場合に必須です。

imap.host

サーバーを識別するURLです。非セキュア接続には `imap://` プレフィックスを、セキュア接続には `imaps://` プレフィックスを使用します。`imap.tunnel`が設定されている場合は無視されますが、それ以外の場合は必須です。

imap.user

サーバーにログインする際に使用するユーザー名です。

imap.pass

サーバーにログインする際に使用するパスワードです。

imap.port

サーバーに接続する整数ポート番号です。`imap://` ホストの場合は143、`imaps://` ホストの場合は993がデフォルトです。`imap.tunnel`が設定されている場合は無視されます。

imap.sslverify

SSL/TLS接続で使用されるサーバー証明書の検証を有効/無効にするブール値です。デフォルトは`true`です。`imap.tunnel`が設定されている場合は無視されます。

imap.preformattedHTML

パッチを送信する際にHTMLエンコーディングの使用を有効/無効にするブール値です。HTMLエンコードされたパッチは`<pre>`で囲まれ、コンテンツタイプは`text/html`になります。皮肉なことに、このオプションを有効にすると、Thunderbirdはパッチをプレーンテキスト、フォーマット固定のメールとして送信します。デフォルトは`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.sparseCheckout`と`core.sparseCheckoutCone`の両方が有効になっていない限り効果はありません。デフォルトはfalseです。

index.threads

インデックスをロードする際に生成するスレッドの数を指定します。これはマルチプロセッサマシンでのインデックスロード時間を短縮することを目的としています。0またはtrueを指定すると、GitはCPUの数を自動検出し、それに応じてスレッド数を設定します。1またはfalseを指定すると、マルチスレッドは無効になります。デフォルトはtrueです。

index.version

新しいインデックスファイルを初期化する際のバージョンを指定します。これは既存のリポジトリには影響しません。`feature.manyFiles`が有効な場合、デフォルトは4です。

index.skipHash

有効にすると、インデックスファイルの末尾のハッシュを計算しません。これにより、`git add`、`git commit`、`git 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]によって起動されたウェブサーバーはローカルIP (127.0.0.1) にバインドされます。

instaweb.modulePath

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

instaweb.port

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

interactive.singleKey

`true`に設定されている場合、対話型コマンドでユーザーが1文字の入力を単一のキー(つまり、Enterキーを押さずに)で提供できるようにします。これは現在、git-add[1]git-checkout[1]git-restore[1]git-commit[1]git-reset[1]、およびgit-stash[1]の`--patch`モードで使用されています。

interactive.diffFilter

対話型コマンド(例: `git add --patch`)が色付きのdiffを表示する際、Gitはこの設定変数で定義されたシェルコマンドを介してdiffをパイプします。コマンドは、元のdiffの行との1対1の対応を維持する限り、人間が読みやすいようにdiffをさらにマークアップできます。デフォルトは無効(フィルタリングなし)です。

log.abbrevCommit

`true`の場合、git-log[1]git-show[1]、およびgit-whatchanged[1]は`--abbrev-commit`を仮定します。このオプションは`--no-abbrev-commit`で上書きできます。

log.date

logコマンドのデフォルトの日時モードを設定します。`log.date`に値を設定することは、git logの`--date`オプションを使用することと似ています。詳細については、git-log[1]を参照してください。

フォーマットが"auto:foo"に設定されており、ページャが使用されている場合、日付フォーマットには"foo"が使用されます。それ以外の場合は、"default"が使用されます。

log.decorate

`log`コマンドによって表示されるコミットのリファレンス名を出力します。shortが指定されている場合、リファレンス名のプレフィックスであるrefs/heads/refs/tags/、およびrefs/remotes/は表示されません。fullが指定されている場合、完全なリファレンス名(プレフィックスを含む)が表示されます。autoが指定されている場合、出力がターミナル向けであれば、リファレンス名はshortが指定されたかのように表示され、それ以外の場合はリファレンス名は表示されません。これは`git log`の`--decorate`オプションと同じです。

log.initialDecorationSet

デフォルトでは、`git log`は特定の既知のリファレンス名前空間のデコレーションのみを表示します。allが指定されている場合、すべてのリファレンスがデコレーションとして表示されます。

log.excludeDecoration

指定されたパターンをログデコレーションから除外します。これは`--decorate-refs-exclude`コマンドラインオプションに似ていますが、設定オプションは`--decorate-refs`オプションによって上書きできます。

log.diffMerges

`--diff-merges=on`が指定されたときに使用されるdiffフォーマットを設定します。詳細については、git-log[1]の`--diff-merges`を参照してください。デフォルトは`separate`です。

log.follow

`true`の場合、単一の`<path>`が与えられたときに`git log`は`--follow`オプションが使用されたかのように動作します。これは`--follow`と同じ制限を持ちます。つまり、複数のファイルを追跡するためには使用できず、非線形履歴ではうまく機能しません。

log.graphColors

`git log --graph`で履歴線を描画するために使用できる、コンマで区切られた色のリストです。

log.showRoot

`true`の場合、最初のコミットは大きな作成イベントとして表示されます。これは空のツリーに対するdiffと同等です。通常ルートコミットを非表示にするgit-log[1]git-whatchanged[1]のようなツールも、これからは表示するようになります。デフォルトは`true`です。

log.showSignature

`true`の場合、git-log[1]git-show[1]、およびgit-whatchanged[1]は`--show-signature`を仮定します。

log.mailmap

`true`の場合、git-log[1]git-show[1]、およびgit-whatchanged[1]は`--use-mailmap`を仮定し、それ以外の場合は`--no-use-mailmap`を仮定します。デフォルトは`true`です。

lsrefs.unborn

"advertise"(デフォルト)、"allow"、または"ignore"のいずれかです。"advertise"の場合、サーバーはクライアントが「unborn」を送信することに応答し(gitprotocol-v2[5]に記載されているとおり)、プロトコルv2機能の広告中にこの機能のサポートを広告します。"allow"は"advertise"と同じですが、サーバーがこの機能のサポートを広告しない点が異なります。これは、アトミックに更新できないロードバランシングされたサーバー(たとえば)に役立ちます。管理者は"allow"を設定し、遅延後に"advertise"を設定できるためです。

mailinfo.scissors

`true`の場合、git-mailinfo[1](したがってgit-am[1])はデフォルトでコマンドラインで`--scissors`オプションが提供されたかのように動作します。有効な場合、この機能はシザーライン(主に`>8`、`8<`、`--`で構成される)より前のメッセージ本体からすべてを削除します。

mailmap.file

補強するmailmapファイルの場所です。リポジトリのルートにあるデフォルトのmailmapが最初にロードされ、次にこの変数によって指定されたmailmapファイルがロードされます。mailmapファイルの場所は、リポジトリのサブディレクトリ内、またはリポジトリ自体の外部にある場合があります。git-shortlog[1]およびgit-blame[1]を参照してください。

mailmap.blob

`mailmap.file`と同様ですが、値をリポジトリ内のブロブへの参照と見なします。`mailmap.file`と`mailmap.blob`の両方が指定されている場合、両方が解析され、`mailmap.file`のエントリが優先されます。ベアリポジトリでは、デフォルトで`HEAD:.mailmap`となります。非ベアリポジトリでは、デフォルトで空になります。

maintenance.auto

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

maintenance.autoDetach

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

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

maintenance.strategy

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

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

  • incremental: この設定は、データを削除しない小さなメンテナンスアクティビティを実行するように最適化します。これは`gc`タスクをスケジュールしませんが、`prefetch`および`commit-graph`タスクを1時間ごとに、`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

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

maintenance.loose-objects.auto

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

maintenance.incremental-repack.auto

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

man.viewer

man形式でヘルプを表示するために使用できるプログラムを指定します。git-help[1]を参照してください。

man.<tool>.cmd

指定されたmanビューアを呼び出すコマンドを指定します。指定されたコマンドは、manページが引数として渡されてシェルで評価されます。(git-help[1]を参照してください。)

man.<tool>.path

man形式でヘルプを表示するために使用される指定されたツールのパスを上書きします。git-help[1]を参照してください。

merge.conflictStyle

マージ時に競合するハンクを作業ツリーファイルに書き出すスタイルを指定します。デフォルトは"merge"で、これは`<<<<<<<`競合マーカー、片側で行われた変更、`=======`マーカー、もう片側で行われた変更、そして`>>>>>>>`マーカーを表示します。別のスタイルである"diff3"は、`|||||||`マーカーと`=======`マーカーの前に元のテキストを追加します。"merge"スタイルは、元のテキストが除外されるためと、両側で一致する行のサブセットがある場合にそれらが競合領域から除外されるため、diff3よりも小さな競合領域を生成する傾向があります。もう1つの代替スタイルである"zdiff3"はdiff3に似ていますが、競合領域の開始または終了付近に一致する行がある場合に、その一致する行を競合領域から削除します。

merge.defaultToUpstream

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

merge.ff

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

merge.verifySignatures

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

merge.branchdesc

ブランチ名に加えて、関連付けられたブランチの説明テキストをログメッセージに入力します。デフォルトは`false`です。

merge.log

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

merge.suppressDest

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

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

merge.renameLimit

マージ中のリネーム検出の網羅的な部分で考慮するファイルの数です。指定されていない場合、`diff.renameLimit`の値がデフォルトとなります。`merge.renameLimit`も`diff.renameLimit`も指定されていない場合、現在は7000がデフォルトとなります。リネーム検出が無効になっている場合、この設定は効果がありません。

merge.renames

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

merge.directoryRenames

Gitがディレクトリの名前変更を検出するかどうかで、履歴の一方の側でディレクトリに新しいファイルが追加され、そのディレクトリが履歴のもう一方の側で名前変更された場合に、マージ時に何が起こるかに影響します。`merge.directoryRenames`が"false"に設定されている場合、ディレクトリの名前変更検出は無効になり、そのような新しいファイルは古いディレクトリに残されます。"true"に設定されている場合、ディレクトリの名前変更検出が有効になり、そのような新しいファイルは新しいディレクトリに移動されます。"conflict"に設定されている場合、そのようなパスに対して競合が報告されます。`merge.renames`が`false`の場合、`merge.directoryRenames`は無視され、`false`として扱われます。デフォルトは"conflict"です。

merge.renormalize

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

merge.stat

マージの最後に、ORIG_HEADとマージ結果間のdiffstatを表示するかどうか。デフォルトは`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.hasOutput`を`true`に設定すると、Gitは無条件に`--output`オプションを使用し、`false`に設定すると`--output`の使用を回避します。

mergetool.meld.useAutoMerge

`--auto-merge`が与えられると、meldは競合しない部分をすべて自動的にマージし、競合する部分をハイライト表示し、ユーザーの決定を待ちます。`mergetool.meld.useAutoMerge`を`true`に設定すると、Gitは`meld`で`--auto-merge`オプションを無条件に使用するように指示されます。この値を`auto`に設定すると、gitは`--auto-merge`がサポートされているかどうかを検出し、利用可能な場合にのみ`--auto-merge`を使用します。`false`の値は`--auto-merge`の使用を完全に回避し、デフォルト値です。

mergetool.<vimdiff variant>.layout

`vimdiff`の`<variant>`(`vimdiff`、`nvimdiff`、`gvimdiff`のいずれか)の分割ウィンドウレイアウトを設定します。`git mergetool`を`--tool=<variant>`で起動した場合(または`merge.tool`が`<variant>`として設定されている場合は`--tool`なしで)、Gitは`mergetool.<variant>.layout`を参照してツールのレイアウトを決定します。バリアント固有の設定が利用できない場合は、`vimdiff`の設定がフォールバックとして使用されます。それも利用できない場合は、4つのウィンドウを持つデフォルトのレイアウトが使用されます。レイアウトの設定については、git-mergetool[1]の`BACKEND SPECIFIC HINTS`セクションを参照してください。

mergetool.hideResolved

マージ中、Gitは可能な限り多くの競合を自動的に解決し、解決できない競合の周りに競合マーカーを含むMERGEDファイルを書き込みます。LOCALREMOTEは通常、Gitの競合解決前のファイルのバージョンを表します。このフラグにより、LOCALREMOTEが上書きされ、未解決の競合のみがマージツールに提示されます。`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

ノートの競合を解決する際にデフォルトで選択するマージ戦略です。`manual`、`ours`、`theirs`、`union`、または`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`で設定されたデフォルトの参照に加えて、どの参照(globまたは複数回指定された場合は複数の参照)からノートを読み取るか。

この設定は、コロンで区切られた参照またはglobのリストである`GIT_NOTES_DISPLAY_REF`環境変数によって上書きできます。

存在しない参照に対しては警告が発行されますが、どの参照とも一致しないglobは黙って無視されます。

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

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

notes.rewrite.<command>

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

この設定は、コロンで区切られた参照またはglobのリストである`GIT_NOTES_REWRITE_REF`環境変数によって上書きできます。

notes.rewriteMode

書き換え中にノートをコピーする際(`notes.rewrite.<command>`オプションを参照)、ターゲットコミットにすでにノートがある場合にどうするかを決定します。`overwrite`、`concatenate`、`cat_sort_uniq`、`ignore`のいずれかである必要があります。デフォルトは`concatenate`です。

この設定は`GIT_NOTES_REWRITE_MODE`環境変数によって上書きできます。

notes.rewriteRef

書き換え中にノートをコピーする際、ノートをコピーすべき(完全に修飾された)参照を指定します。globである場合もあり、その場合は一致するすべての参照のノートがコピーされます。この設定を複数回指定することもできます。

デフォルト値はありません。ノートの書き換えを有効にするには、この変数を設定する必要があります。デフォルトのコミットノートの書き換えを有効にするには、`refs/notes/commits`に設定します。

`GIT_NOTES_REWRITE_REF`環境変数によって上書きできます。フォーマットの詳細については、上記の`notes.rewrite.<command>`を参照してください。

pack.window

コマンドラインでウィンドウサイズが指定されていない場合に、git-pack-objects[1]によって使用されるウィンドウのサイズです。デフォルトは10です。

pack.depth

コマンドラインで最大深度が指定されていない場合に、git-pack-objects[1]によって使用される最大デルタ深度です。デフォルトは50です。最大値は4095です。

pack.windowMemory

コマンドラインで制限が指定されていない場合に、git-pack-objects[1]の各スレッドによってパックウィンドウメモリのために消費される最大メモリサイズです。値には"k"、"m"、または"g"の接尾辞を付けることができます。未設定の場合(または明示的に0に設定されている場合)、制限はありません。

pack.compression

パックファイル内のオブジェクトの圧縮レベルを示す整数値-1..9です。-1はzlibのデフォルトです。0は圧縮なし、1..9はさまざまな速度/サイズトレードオフを示し、9が最も遅いです。設定されていない場合、`core.compression`がデフォルトとなります。それも設定されていない場合、zlibのデフォルトである-1(「速度と圧縮の間のデフォルトの妥協点(現在のレベル6に相当)」)がデフォルトとなります。

圧縮レベルを変更しても、既存のすべてのオブジェクトが自動的に再圧縮されるわけではないことに注意してください。git-repack[1]に`-F`オプションを渡すことで、再圧縮を強制できます。

pack.allowPackReuse

`true`または"single"の場合、および到達可能性ビットマップが有効な場合、pack-objectsはビットマップ化されたパックファイルの一部をそのまま送信しようとします。"multi"の場合、およびマルチパック到達可能性ビットマップが利用可能な場合、pack-objectsはMIDX内のすべてのパックの一部を送信しようとします。

単一のパックビットマップのみが利用可能で、`pack.allowPackReuse`が"multi"に設定されている場合、ビットマップ化されたパックファイルの一部のみを再利用します。これにより、フェッチを処理するためのメモリとCPU使用量を削減できますが、わずかに大きなパックを送信する可能性があります。デフォルトは`true`です。

pack.island

デルタアイランドのセットを設定する拡張正規表現です。詳細については、git-pack-objects[1]の「DELTA ISLANDS」を参照してください。

pack.islandCore

オブジェクトが最初にパックされるアイランド名を指定します。これにより、1つのパックの先頭に一種の擬似パックが作成され、指定されたアイランドからのオブジェクトが、これらのオブジェクトを要求するユーザーに提供されるどのパックにもより速くコピーされることが期待されます。実際には、指定されたアイランドは、リポジトリで最も一般的にクローンされるものに対応している可能性が高いことを意味します。git-pack-objects[1]の「DELTA ISLANDS」も参照してください。

pack.deltaCacheSize

git-pack-objects[1]でデルタをパックに書き出す前にキャッシュするために使用される最大メモリ量(バイト単位)です。このキャッシュは、すべてのオブジェクトの最良の一致が見つかった後に最終的なデルタ結果を再計算する必要がないようにすることで、オブジェクト書き込みフェーズを高速化するために使用されます。ただし、メモリに余裕がないマシンで大きなリポジトリを再パックする場合、特にこのキャッシュがシステムをスワッピングに追い込むと、大きな悪影響を受ける可能性があります。値が0の場合は制限なしを意味します。1バイトの最小サイズを使用してこのキャッシュを事実上無効にすることができます。デフォルトは256 MiBです。

pack.deltaCacheLimit

git-pack-objects[1]でキャッシュされるデルタの最大サイズです。このキャッシュは、すべてのオブジェクトの最良の一致が見つかった後に最終的なデルタ結果を再計算する必要がないようにすることで、オブジェクト書き込みフェーズを高速化するために使用されます。デフォルトは1000です。最大値は65535です。

pack.threads

最良のデルタ一致を検索する際に生成するスレッドの数を指定します。これにより、git-pack-objects[1]がpthreadsでコンパイルされている必要があります。そうでない場合、このオプションは警告とともに無視されます。これはマルチプロセッサマシンでのパック時間を短縮することを目的としています。ただし、デルタ検索ウィンドウに必要なメモリ量はスレッド数によって乗算されます。0を指定すると、GitはCPUの数を自動検出し、それに応じてスレッド数を設定します。

pack.indexVersion

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

バージョン2の`*.idx`ファイルを理解しない古いGitを使用している場合、非ネイティブプロトコル(例: "http")を介してクローンまたはフェッチすると、`*.pack`ファイルと対応する`*.idx`ファイルの両方を相手側からコピーするため、古いバージョンのGitではアクセスできないリポジトリになる可能性があります。ただし、`*.pack`ファイルが2GB未満の場合、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はstdoutへのパック時(例: フェッチのサーバー側で)に、利用可能な場合はパックビットマップを使用します。デフォルトは`true`です。パックビットマップのデバッグ中である場合を除き、通常これをオフにする必要はありません。

pack.useBitmapBoundaryTraversal

`true`の場合、Gitはビットマップを使用した到達可能性クエリを計算するための実験的なアルゴリズムを使用します。すべての否定された先端に対して完全なビットマップを構築し、それらをOR演算で結合する代わりに、既存のビットマップを持つ否定された先端を加算的に考慮し(つまり、存在する場合は結果にOR演算で結合し、それ以外の場合は無視する)、境界でビットマップを構築します。

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

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

pack.useSparse

`true`の場合、--revsオプションが存在するときに、gitはデフォルトでgit pack-objects--sparseオプションを使用します。このアルゴリズムは、新しいオブジェクトを導入するパスに現れるツリーのみを辿ります。小さな変更を送信するためのパックを計算する際に、著しいパフォーマンス上の利点をもたらすことができます。ただし、含まれるコミットが特定の種類の直接リネームを含んでいる場合、余分なオブジェクトがパックファイルに追加される可能性があります。デフォルトは`true`です。

pack.preferBitmapTips

ビットマップを受け取るコミットを選択する際、「選択ウィンドウ」内の他のどのコミットよりも、この設定の任意の値のサフィックスである参照の先端にあるコミットを優先します。

この設定を`refs/foo`に設定しても、`refs/foo/bar`と`refs/foo/baz`の先端にあるコミットが必ず選択されるわけではないことに注意してください。これは、コミットがビットマップのために可変長のウィンドウの連続から選択されるためです。

この設定の任意の値のサフィックスである参照の先端にあるコミットがウィンドウ内で見つかった場合、そのウィンドウ内の他のどのコミットよりも直ちに優先されます。

pack.writeBitmaps (deprecated)

これは`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_PAGER`を`cat`に設定します。

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」要求への応答から省略する可能性があることに同意します。gitprotocol-v2[5]を参照してください。

protocol.allow

設定されている場合、明示的にポリシーを持たないすべてのプロトコル(`protocol.<name>.allow`)に対して、ユーザー定義のデフォルトポリシーを提供します。デフォルトでは、未設定の場合、既知の安全なプロトコル(http, https, git, ssh)は`always`、既知の危険なプロトコル(ext)は`never`、その他のすべてのプロトコル(fileを含む)は`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`は含まれないことに注意してください。両方を設定したい場合は、それぞれ個別に設定する必要があります。

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

protocol.version

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

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

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

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

pull.ff

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

pull.rebase

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

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

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

注意: これは潜在的に危険な操作です。その影響を理解していない限り、使用しないでください (詳細は git-rebase[1] を参照)。

pull.octopus

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

pull.twohead

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

push.autoSetupRemote

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

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

push.pushOption

コマンドラインから --push-option=<option> 引数が与えられない場合、git push はこの変数の各 <value> が --push-option=<value> として与えられたかのように動作します。

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

Example:

/etc/gitconfig
  push.pushoption = a
  push.pushoption = b

~/.gitconfig
  push.pushoption = c

repo/.git/config
  push.pushoption =
  push.pushoption = b

This will result in only b (a and c are cleared).
push.recurseSubmodules

"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

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

rebase.abbreviateCommands

true に設定すると、git rebase は todo リストで省略されたコマンド名を使用し、次のような結果になります。

	p deadbee The oneline of the commit
	p fa1afe1 The oneline of the next commit
	...

代わりに

	pick deadbee The oneline of the commit
	pick fa1afe1 The oneline of the next commit
	...

デフォルトは false です。

rebase.rescheduleFailedExec

失敗した exec コマンドを自動的に再スケジュールします。これはインタラクティブモード (または --exec オプションが提供された場合) でのみ意味があります。これは --reschedule-failed-exec オプションを指定するのと同じです。

rebase.forkPoint

false に設定すると、デフォルトで --no-fork-point オプションが設定されます。

rebase.rebaseMerges

デフォルトで --rebase-merges オプションを設定するかどうか、およびその方法。rebase-cousinsno-rebase-cousins、または真偽値にすることができます。true または no-rebase-cousins に設定することは --rebase-merges=no-rebase-cousins と同等であり、rebase-cousins に設定することは --rebase-merges=rebase-cousins と同等であり、false に設定することは --no-rebase-merges と同等です。コマンドラインで --rebase-merges を引数ありまたはなしで渡すと、rebase.rebaseMerges 設定が上書きされます。

rebase.maxLabelLength

コミットのサブジェクトからラベル名を生成する際に、この長さに名前を切り詰めます。デフォルトでは、名前は NAME_MAX より少し短く (たとえば、対応するルーズリファレンスの .lock ファイルを書き込めるように) 切り詰められます。

receive.advertiseAtomic

デフォルトでは、git-receive-pack はアトミックプッシュ機能をクライアントに通知します。この機能を通知したくない場合は、この変数を false に設定します。

receive.advertisePushOptions

true に設定すると、git-receive-pack はプッシュオプション機能をクライアントに通知します。デフォルトは false です。

receive.autogc

デフォルトでは、git-receive-pack は git-push からデータを受信し、ref を更新した後、「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 は、非ベアリポジトリの現在チェックアウトされているブランチを削除する参照更新を拒否します。

receive.denyCurrentBranch

true または "refuse" に設定すると、git-receive-pack は、非ベアリポジトリの現在チェックアウトされているブランチへの参照更新を拒否します。このようなプッシュは、HEAD がインデックスおよびワーキングツリーと同期しなくなる可能性があるため、危険です。"warn" に設定すると、そのようなプッシュの警告を stderr に出力しますが、プッシュは続行されます。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 からデータを受信し、参照を更新した後、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) に適している場合があります。

再起動ポイントが頻繁にあると、プレフィックス圧縮が減少し、再起動テーブルによって消費される領域が増加し、どちらもファイルサイズを増加させます。

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

1ブロックあたり最大 65535 の再起動ポイントがサポートされています。

デフォルト値は、16レコードごとに再起動ポイントを作成することです。0 の値はデフォルト値を使用します。

reftable.indexObjects

reftable バックエンドがオブジェクトブロックを書き込むかどうか。オブジェクトブロックは、オブジェクト ID からそれらを指す参照への逆マッピングです。

デフォルト値は true です。

reftable.geometricFactor

reftable バックエンドがスタックに新しいテーブルを追加するたびに、少数のテーブルのみが存在するように自動圧縮を実行します。バックエンドは、各テーブルのそれぞれのサイズに関してテーブルが幾何学的なシーケンスを形成するようにすることでこれを保証します。

デフォルトでは、幾何級数は係数2を使用します。つまり、どのテーブルに対しても、次に大きいテーブルは少なくとも2倍の大きさでなければなりません。最大係数256がサポートされています。

reftable.lockTimeout

reftable バックエンドがスタックに新しいテーブルを追加するたびに、中央の "tables.list" ファイルを更新する前にロックする必要があります。この設定は、別のプロセスがすでにロックを取得している場合に、プロセスがロックを取得するまで待機する時間を制御します。値 0 は全く再試行しないことを意味し、-1 は無期限に再試行することを意味します。デフォルトは 100 (つまり、100ms 間再試行) です。

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]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 です。true の場合、git-repack[1]-n オプションで上書きできます。

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

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

rerere.autoUpdate

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

rerere.enabled

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

revert.reference

この変数を true に設定すると、git revert--reference オプションが与えられたかのように動作します。

safe.bareRepository

Git が動作するベアリポジトリを指定します。現在サポートされている値は次のとおりです。

  • all: Git はすべてのベアリポジトリで動作します。これがデフォルトです。

  • explicit: Git は、最上位の --git-dir コマンドラインオプション、または GIT_DIR 環境変数 (詳細は git[1] を参照) を介して明示的に指定されたベアリポジトリでのみ動作します。

    ワークフローでベアリポジトリを使用しない場合、グローバル設定で safe.bareRepositoryexplicit に設定すると便利です。これにより、ベアリポジトリを含むリポジトリをクローンし、そのディレクトリ内で Git コマンドを実行するという攻撃から保護されます。

    この設定は保護された設定でのみ尊重されます (SCOPES を参照)。これにより、信頼されていないリポジトリがこの値を改ざんするのを防ぎます。

safe.directory

これらの設定エントリは、現在のユーザー以外のユーザーが所有している場合でも安全とみなされる Git 管理下のディレクトリを指定します。デフォルトでは、Git は他のユーザーが所有するリポジトリの Git 設定を解析することすら拒否し、ましてやそのフックを実行することもありません。この設定により、ユーザーは意図的に共有されたリポジトリ ( git-init[1]--shared オプションを参照) などの例外を指定できます。

これは多値設定であり、git config --add を介して複数のディレクトリを追加できます。安全なディレクトリのリストをリセットするには (例: システム設定で指定されたそのようなディレクトリを上書きするため)、空の値で safe.directory エントリを追加します。

この設定は保護された設定でのみ尊重されます (SCOPES を参照)。これにより、信頼されていないリポジトリがこの値を改ざんするのを防ぎます。

この設定の値は補間されます。つまり、~/<path> はホームディレクトリからの相対パスに展開され、%(prefix)/<path> は Git の (実行時) プレフィックスからの相対パスに展開されます。

このセキュリティチェックを完全にオプトアウトするには、safe.directory を文字列 * に設定します。これにより、すべてのリポジトリが safe.directory リストにリストされているかのように扱われます。safe.directory=* がシステム設定で設定されており、この保護を再度有効にしたい場合は、安全と見なすリポジトリをリストする前に、空の値でリストを初期化してください。ディレクトリに /* を追加すると、指定されたディレクトリ下のすべてのリポジトリへのアクセスが許可されます。

説明したように、Git はデフォルトでは、Git を実行しているユーザー自身が所有するリポジトリへのアクセスのみを許可します。ただし、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

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

sendemail.smtpEncryption

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

sendemail.smtpSSLCertPath

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

sendemail.<identity>.*

以下に示す sendemail.* パラメータのアイデンティティ固有のバージョンで、コマンドラインまたは sendemail.identity を介してこのアイデンティティが選択された場合に優先されます。

sendemail.multiEdit

true (デフォルト) の場合、編集する必要のあるファイル (--annotate を使用した際のパッチ、--compose を使用した際の要約) を編集するために単一のエディタインスタンスが起動されます。false の場合、ファイルは順次編集され、毎回新しいエディタが起動されます。

sendemail.confirm

送信前に確認するかどうかのデフォルトを設定します。alwaysnevercccompose、または auto のいずれかである必要があります。これらの値の意味については、git-send-email[1] ドキュメントの --confirm を参照してください。

sendemail.mailmap

true の場合、git-send-email[1]--mailmap を仮定し、そうでない場合は --no-mailmap を仮定します。デフォルトは false です。

sendemail.mailmap.file

git-send-email[1] 固有の補助的なメールマップファイルの場所。デフォルトのメールマップと mailmap.file が最初にロードされます。したがって、このファイルのエントリはデフォルトのメールマップの場所のエントリよりも優先されます。gitmailmap[5] を参照してください。

sendemail.mailmap.blob

sendemail.mailmap.file と同様ですが、値をリポジトリ内のブロブへの参照とみなします。sendemail.mailmap.file のエントリは、ここでのエントリよりも優先されます。gitmailmap[5] を参照してください。

sendemail.aliasesFile

長いメールアドレスの入力を避けるために、これを1つ以上のメールエイリアスファイルにポイントします。sendemail.aliasFileType も指定する必要があります。

sendemail.aliasFileType

sendemail.aliasesFile で指定されたファイルの形式。mutt, mailrc, pine, elm, gnus, または 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 ポート] [-4] [-6] [-o オプション] [ユーザー名@]ホスト コマンド

  • simple - [ユーザー名@]ホスト コマンド

  • plink または putty - [-P ポート] [-4] [-6] [ユーザー名@]ホスト コマンド

  • tortoiseplink - [-P ポート] [-4] [-6] -batch [ユーザー名@]ホスト コマンド

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

非ポーセリンステータス形式の git-status[1] で、デフォルトで --ahead-behind を有効にするには true に、--no-ahead-behind を有効にするには false に設定します。デフォルトは true です。

status.displayCommentPrefix

true に設定すると、git-status[1] は各出力行の前にコメントプレフィックス (core.commentChar、デフォルトでは # で始まる) を挿入します。これは Git 1.8.4 以前の git-status[1] の動作でした。デフォルトは false です。

status.renameLimit

git-status[1] および git-commit[1] での名前変更検出を実行する際に考慮するファイルの数。デフォルトは diff.renameLimit の値です。

status.renames

git-status[1] および git-commit[1] での Git の名前変更検出の有無と方法。「false」に設定すると、名前変更検出は無効になります。「true」に設定すると、基本的な名前変更検出が有効になります。「copies」または「copy」に設定すると、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 が設定されているサブモジュールの場合に、すべてのサブモジュールの概要出力コマンドが抑制されることに注意してください。この規則の唯一の例外は、ステータスとコミットがステージングされたサブモジュールの変更を表示することです。無視されたサブモジュールの概要も表示するには、--ignore-submodules=dirty コマンドラインオプションを使用するか、同様の出力を表示するがこれらの設定を尊重しない git submodule summary コマンドを使用します。

submodule.<name>.url

サブモジュールのURL。この変数は、git submodule init を介して .gitmodules ファイルから Git 設定にコピーされます。ユーザーは、git submodule update を介してサブモジュールを取得する前に、設定されたURLを変更できます。submodule.<name>.activesubmodule.active も設定されていない場合、この変数の存在は、サブモジュールが Git コマンドに関心があるかどうかを示すためのフォールバックとして使用されます。詳細については git-submodule[1] および gitmodules[5] を参照してください。

submodule.<name>.update

サブモジュールが git submodule update によって更新される方法で、影響を受けるコマンドはこれのみであり、git checkout --recurse-submodules などの他のコマンドは影響を受けません。これは歴史的な理由で存在し、git submodule がサブモジュールと対話する唯一のコマンドだったためです。submodule.activepull.rebase のような設定はより具体的です。これは gitmodules[5] ファイルから git submodule init によって設定されます。git-submodule[1]update コマンドの説明を参照してください。

submodule.<name>.branch

git submodule update --remote で使用されるサブモジュールのリモートブランチ名。このオプションを設定すると、.gitmodules ファイルにある値が上書きされます。詳細については git-submodule[1] および gitmodules[5] を参照してください。

submodule.<name>.fetchRecurseSubmodules

このオプションは、このサブモジュールの再帰的フェッチを制御するために使用できます。「git fetch」および「git pull」の --[no-]recurse-submodules コマンドラインオプションを使用して上書きできます。この設定は gitmodules[5] ファイルの設定を上書きします。

submodule.<name>.ignore

「git status」と diff ファミリーがサブモジュールを修正済みとして表示する状況を定義します。「all」に設定すると、決して修正済みと見なされません (ただし、ステージングされている場合はステータスとコミットの出力に表示されます)。「dirty」はサブモジュールのワークツリーへのすべての変更を無視し、サブモジュールの HEAD とスーパープロジェクトに記録されたコミット間の差分のみを考慮します。「untracked」は、ワークツリーに追跡されているファイルが変更されたサブモジュールも表示します。「none」(このオプションが設定されていない場合のデフォルト) は、ワークツリーに追跡されていないファイルがあるサブモジュールも変更されたものとして表示します。この設定は、このサブモジュールの .gitmodules の設定を上書きし、両方の設定は「--ignore-submodules」オプションを使用してコマンドラインで上書きできます。git submodule コマンドは、この設定の影響を受けません。

submodule.<name>.active

サブモジュールがGitコマンドに関心があるかどうかを示すブール値。この設定オプションは 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 を受け入れ、この設定によってサポートされているかどうかを示すコマンドのリストです。

  • checkout, fetch, grep, pull, push, read-tree, reset, restore および switch は常にサポートされています。

  • 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] - すでに開いているファイルディスクリプタに書き込みます。

  • <絶対パス名> - ファイルに追記モードで書き込みます。ターゲットがすでに存在し、ディレクトリである場合、トレースは指定されたディレクトリ下のファイル (プロセスごとに1つ) に書き込まれます。

  • af_unix:[<ソケットタイプ>:]<絶対パス名> - Unix ドメインソケットに書き込みます (サポートされているプラットフォームの場合)。ソケットタイプは stream または dgram のいずれかです。省略された場合、Git は両方を試行します。

trace2.normalBrief

ブール値。true の場合、timefilename、および line フィールドが通常の出力から省略されます。GIT_TRACE2_BRIEF 環境変数によって上書きされる場合があります。デフォルトは false です。

trace2.perfBrief

ブール値。true の場合、timefilename、および line フィールドが PERF 出力から省略されます。GIT_TRACE2_PERF_BRIEF 環境変数によって上書きされる場合があります。デフォルトは false です。

trace2.eventBrief

ブール値。true の場合、timefilename、および line フィールドがイベント出力から省略されます。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 は、HTTP ユーザーエージェントのオーバーライドと Git 設定ファイルの場所 (設定されている場合) をリストするイベントを trace2 出力に含ませます。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:Gitは、平文の認証情報を含むURLを解析するときに、stderr に警告メッセージを出力します。

  • die:Gitは、平文の認証情報を含むURLを解析するときに、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回目の「プッシュ」(隔離を使用)を行うステップの2段階でミラーリングを行い、内部クライアントがこのプッシュされたリポジトリを利用するようにするか、内部フェッチを禁止し、完全な「fsck」が実行された後(かつその間に新しいフェッチが発生していない場合)にのみ許可するようにします。

transfer.hideRefs

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

参照名の前に ! を含めることで、そのエントリを無効にし、以前のエントリで非表示とマークされていた場合でも明示的に公開することができます。複数の hideRefs 値がある場合、後続のエントリが以前のエントリを上書きします(より特定のコンフィグファイルのエントリは、より汎用的なコンフィグファイルのエントリを上書きします)。

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

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

参照を隠しても、クライアントはgitnamespaces[7] のmanページの「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

<n> が uploadpackfilter.tree.maxDepth の値以下である場合にのみ、--filter=tree:<n> を許可します。設定されている場合、この設定変数が既に設定されていない限り、uploadpackfilter.tree.allow=true も含意されます。設定されていない場合は効果がありません。

uploadpack.allowRefInWant

このオプションが設定されている場合、upload-pack はプロトコルバージョン2の fetch コマンドの ref-in-want 機能をサポートします。この機能は、レプリケーション遅延のため、参照が指すOIDについて同じビューを持っていない可能性があるロードバランスされたサーバーの利便性を目的としています。

url.<base>.insteadOf

この値で始まるすべてのURLは、代わりに <base> で始まるように書き換えられます。あるサイトが多数のリポジトリを複数のアクセス方法で提供しており、一部のユーザーが異なるアクセス方法を使用する必要がある場合、この機能により、ユーザーは同等のURLのいずれかを指定し、Gitがその特定のユーザーに最適な代替URLに自動的に書き換えることができます。これは、サイト上で今まで見たことのないリポジトリであっても同様です。与えられたURLに複数の insteadOf 文字列が一致する場合、最も長い一致が使用されます。

書き換えられたURLには、プロトコルに関する制約が適用されることに注意してください。書き換えによってURLがカスタムプロトコルやリモートヘルパーを使用するように変更された場合、リクエストを許可するために protocol.*.allow 設定を調整する必要があるかもしれません。特に、サブモジュールに使用する予定のプロトコルは、デフォルトの user ではなく always に設定する必要があります。上記の protocol.allow の説明を参照してください。

url.<base>.pushInsteadOf

この値で始まるすべてのURLはプッシュされません。代わりに、<base> で始まるように書き換えられ、その結果のURLにプッシュされます。あるサイトが多数のリポジトリを複数のアクセス方法で提供しており、その一部がプッシュを許可していない場合、この機能により、ユーザーはプル専用のURLを指定し、Gitがサイト上で今まで見たことのないリポジトリであっても、自動的に適切なURLを使用してプッシュできるようになります。与えられたURLに複数の pushInsteadOf 文字列が一致する場合、最も長い一致が使用されます。リモートに明示的な 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 形式は、慣習的に個人名の一種を指すことに注意してください。これらの設定に関する詳細、および認証情報を探している場合は credential.username オプションについては、git-commit[1] および git[1] の環境変数セクションを参照してください。

user.useConfigOnly

Gitに対し、user.emailuser.name のデフォルト値を推測しようとせず、設定からのみ値を取得するように指示します。例えば、複数のメールアドレスを持っており、リポジトリごとに異なるメールアドレスを使用したい場合、この設定オプションをグローバル設定で true に設定し、名前とともに設定すると、Gitは新しくクローンされたリポジトリで新しいコミットを作成する前に、メールアドレスを設定するように促します。デフォルトは false です。

user.signingKey

git-tag[1] または git-commit[1] が署名付きタグまたはコミットを作成する際に自動的に希望のキーを選択しない場合、この変数でデフォルトの選択を上書きできます。このオプションはgpgの --local-user パラメータにそのまま渡されるため、gpgがサポートする任意の方法でキーを指定できます。gpg.format が ssh に設定されている場合、これは秘密SSHキーへのパス、またはssh-agentが使用されている場合は公開キーへのパスを含むことができます。あるいは、key:: で直接プレフィックスされた公開キー(例: "key::ssh-rsa XXXXXX identifier")を含むこともできます。秘密キーはssh-agentを介して利用可能である必要があります。設定されていない場合、Gitは gpg.ssh.defaultKeyCommand(例: "ssh-add -L")を呼び出し、利用可能な最初のキーを使用しようとします。後方互換性のため、「ssh-rsa XXXXXX identifier」のような「ssh-」で始まる生のキーは「key::ssh-rsa XXXXXX identifier」として扱われますが、この形式は非推奨です。代わりに key:: 形式を使用してください。

versionsort.prereleaseSuffix (deprecated)

versionsort.suffix の非推奨のエイリアスです。versionsort.suffix が設定されている場合は無視されます。

versionsort.suffix

git-tag[1] でバージョンソートが使用されている場合でも、同じベースバージョンで異なるサフィックスを持つタグ名は辞書順でソートされるため、例えばプレリリースタグがメインリリース(例: "1.0" の後の "1.0-rc1")の後に表示されます。この変数を指定することで、異なるサフィックスを持つタグのソート順を決定できます。

この変数に単一のサフィックスを指定すると、そのサフィックスを含むタグ名は対応するメインリリースよりも前に表示されます。例えば、変数が「-rc」に設定されている場合、すべての「1.0-rcX」タグは「1.0」よりも前に表示されます。複数回、サフィックスごとに一度指定した場合、設定内のサフィックスの順序が、それらのサフィックスを持つタグ名のソート順を決定します。例えば、設定で「-pre」が「-rc」より前に出現する場合、すべての「1.0-preX」タグは、任意の「1.0-rcX」タグよりも前にリストされます。メインリリースタグと様々なサフィックスを持つタグとの相対的な配置は、それらの他のサフィックスの中に空のサフィックスを指定することで決定できます。例えば、サフィックス「-rc」、「」、「-ck」、「-bfs」がこの順序で設定に現れる場合、すべての「v4.8-rcX」タグが最初にリストされ、次に「v4.8」、次に「v4.8-ckX」、最後に「v4.8-bfsX」がリストされます。

複数のサフィックスが同じタグ名に一致する場合、そのタグ名はタグ名の中で最も早い位置で始まるサフィックスに従ってソートされます。複数の異なる一致するサフィックスがその最も早い位置で始まる場合、そのタグ名はそれらのサフィックスの中で最も長いものに従ってソートされます。異なるサフィックス間のソート順は、複数の設定ファイルに存在する場合は未定義です。

web.browser

一部のコマンドで使用されるウェブブラウザを指定します。現在、git-instaweb[1]git-help[1] のみが使用できます。

worktree.guessRemote

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

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