Spec-Zone.ru › Git

git-config

Название

git-config — получение и установка параметров репозитория или глобальных параметров

Краткое описание

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

Описание

С помощью этой команды можно запрашивать, устанавливать, заменять и сбрасывать параметры. Имя фактически состоит из раздела и ключа, разделённых точкой, а значение будет экранировано.

Добавлять к параметру несколько строк можно с помощью параметра --append. Если требуется обновить или сбросить параметр, который может состоять из нескольких строк, необходимо указать --value=<pattern> (расширенное регулярное выражение, если не указан параметр --fixed-value). Обновляются или сбрасываются только существующие значения, соответствующие шаблону. Чтобы обработать строки, которые не соответствуют шаблону, поставьте перед ним один восклицательный знак (см. также ПРИМЕРЫ); однако учтите, что это работает только если параметр --fixed-value не используется.

Параметр --type=<type> указывает git config проверять, можно ли канонизировать входящие и исходящие значения согласно заданному типу <type>. Если параметр --type=<type> не указан, канонизация не выполняется. Вызывающие программы могут сбросить существующий спецификатор --type с помощью --no-type.

При чтении значения по умолчанию считываются из системного, глобального и локального файлов конфигурации репозитория; параметры --system, --global, --local, --worktree и --file <filename> позволяют указать команде читать только из соответствующего источника (см. ФАЙЛЫ).

При записи новое значение по умолчанию записывается в локальный файл конфигурации репозитория; параметры --system, --global, --worktree, --file <filename> позволяют указать команде место записи (можно указать --local, но это значение используется по умолчанию).

В случае ошибки команда завершится с ненулевым кодом. Некоторые коды завершения:

  • недопустимый раздел или ключ (ret=1),

  • не указан раздел или имя (ret=2),

  • недопустимый файл конфигурации (ret=3),

  • невозможно записать файл конфигурации (ret=4),

  • предпринята попытка сбросить несуществующий параметр (ret=5),

  • предпринята попытка сбросить или установить параметр, которому соответствуют несколько строк (ret=5), или

  • предпринята попытка использовать недопустимое регулярное выражение (ret=6).

В случае успеха команда возвращает код завершения 0.

Список всех доступных переменных конфигурации можно получить с помощью команды git help --config.

Команды

list

Вывести список всех переменных, заданных в файле конфигурации, вместе с их значениями.

get

Вывести значение указанного ключа. Если ключ присутствует в конфигурации несколько раз, выводится последнее значение. Если указан параметр --all, выводятся все значения, связанные с ключом. Если ключ отсутствует, возвращается код ошибки 1.

set

Установить значение для одного или нескольких параметров конфигурации. По умолчанию эта команда отказывается записывать многозначные параметры конфигурации. Передача --all заменит все многозначные параметры конфигурации новым значением, тогда как --value= заменит все параметры конфигурации, значения которых соответствуют заданному шаблону.

unset

Сбросить значение для одного или нескольких параметров конфигурации. По умолчанию эта команда отказывается сбрасывать многозначные ключи. Передача --all сбросит все многозначные параметры конфигурации, тогда как --value сбросит все параметры конфигурации, значения которых соответствуют заданному шаблону.

rename-section

Переименовать указанный раздел.

remove-section

Удалить указанный раздел из файла конфигурации.

edit

Открыть редактор для изменения указанного файла конфигурации: --system, --global, --local (по умолчанию), --worktree или --file <config-file>.

Параметры

--replace-all

По умолчанию заменяется не более одной строки. Этот параметр заменяет все строки, соответствующие ключу (и, при необходимости, --value=<pattern>).

--append

Добавить к параметру новую строку, не изменяя существующие значения. Это аналогично указанию --value=^$ в set.

--comment <message>

Добавить комментарий в конец новых или изменённых строк.

Если <message> начинается с одного или нескольких пробельных символов, за которыми следует #, он используется без изменений. Если он начинается с #, перед его использованием добавляется пробел. В противном случае перед ним добавляется строка " # " (пробел, затем решётка, затем пробел). Получившаяся строка помещается сразу после значения, заданного для переменной. <message> не должен содержать символов перевода строки (многострочные комментарии не допускаются).

--all

С параметром get вернуть все значения многозначного ключа.

--regexp

С параметром get интерпретировать имя как регулярное выражение. В настоящее время сопоставление регулярных выражений выполняется с учётом регистра и производится по канонизированной версии ключа, в которой имена разделов и переменных приведены к нижнему регистру, а имена подразделов — нет.

--url=<URL>

Если в качестве <name> указано имя из двух частей — <section>.<key>, — возвращается значение для <section>.<URL>.<key>, часть <URL> которого наиболее точно соответствует заданному URL (если такого ключа нет, используется значение для <section>.<key>). Если в качестве имени указано только <section>, это выполняется для всех ключей раздела и выводится их список. Если значение не найдено, возвращается код ошибки 1.

--global

При записи параметров: записывать в глобальный файл ~/.gitconfig, а не в репозиторий .git/config; если файл ~/.gitconfig отсутствует, а файл $XDG_CONFIG_HOME/git/config существует, записывать в него.

При чтении параметров: читать только из глобального файла ~/.gitconfig и из $XDG_CONFIG_HOME/git/config, а не из всех доступных файлов.

См. также ФАЙЛЫ.

--system

При записи параметров: записывать в системный файл $(prefix)/etc/gitconfig, а не в репозиторий .git/config.

При чтении параметров: читать только из системного файла $(prefix)/etc/gitconfig, а не из всех доступных файлов.

См. также ФАЙЛЫ.

--local

При записи параметров: записывать в файл .git/config репозитория. Это поведение используется по умолчанию.

При чтении параметров: читать только из файла .git/config репозитория, а не из всех доступных файлов.

См. также ФАЙЛЫ.

--worktree

Аналогично --local, за исключением того, что при включённом параметре extensions.worktreeConfig чтение выполняется из $GIT_DIR/config.worktree или запись в него. Если параметр не включён, этот режим аналогичен --local. Обратите внимание: для основного рабочего дерева $GIT_DIR совпадает с $GIT_COMMON_DIR, а для других рабочих деревьев имеет вид $GIT_DIR/worktrees/<id>/. См. git-worktree[1], чтобы узнать, как включить extensions.worktreeConfig.

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

При записи параметров: записывать в указанный файл, а не в файл .git/config репозитория.

При чтении параметров: читать только из указанного файла, а не из всех доступных файлов.

См. также ФАЙЛЫ.

--blob <blob>

Аналогично --file, но вместо файла используется указанный blob. Например, можно использовать master:.gitmodules для чтения значений из файла .gitmodules в ветке master. Полный список способов записи имён blob см. в разделе «УКАЗАНИЕ РЕВИЗИЙ» в gitrevisions[7].

--value=<pattern>
--no-value

С параметрами get, set и unset выполнять сопоставление только с <pattern>. Если не указан параметр --fixed-value, шаблон представляет собой расширенное регулярное выражение.

Используйте --no-value, чтобы сбросить <pattern>.

--fixed-value

При использовании с --value=<pattern> трактовать <pattern> как точную строку, а не как регулярное выражение. В результате будут выбраны только те пары имя/значение, значение которых в точности совпадает с <pattern>.

--type <type>

git config проверяет, соответствуют ли все входные и выходные данные заданным ограничениям типа, и канонизирует выходные значения в соответствии с канонической формой типа <type>.

Допустимые типы <type>:

  • bool: канонизирует значения true, yes, on и положительные числа как "true", а значения false, no, off и 0 как "false".

  • int: канонизирует значения в виде простых десятичных чисел. Необязательный суффикс k, m или g при вводе умножает значение на 1024, 1048576 или 1073741824 соответственно.

  • bool-or-int: канонизирует значения согласно правилам для bool или int, описанным выше.

  • path: канонизирует значение, заменяя начальный ~ на значение $HOME, а ~user — на домашний каталог указанного пользователя. Этот спецификатор не влияет на установку значения (однако можно использовать git config section.variable ~/ в командной строке, чтобы поручить раскрытие переменной оболочке).

  • expiry-date: канонизирует значение, преобразуя фиксированную или относительную строку даты в метку времени. Этот спецификатор не влияет на установку значения.

  • color: при получении значения канонизирует его, преобразуя в управляющую последовательность цвета ANSI. При установке значения выполняется проверка на возможность его канонизации как цвета ANSI, но записывается оно без изменений.

Если команда работает в режиме list, аргумент --type <type> применяется к каждому выводимому значению конфигурации. Если значение невозможно корректно разобрать в этом формате, оно не попадёт в список.

--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-names
--no-show-names

С параметром get выводить ключи конфигурации вместе со значениями. По умолчанию используется --no-show-names, если не указан параметр --url и в <name> нет подразделов.

--show-origin

Дополнить вывод всех запрошенных параметров конфигурации типом источника (файл, стандартный ввод, blob, командная строка) и фактическим источником (путь к файлу конфигурации, ссылка или идентификатор blob, если применимо).

--show-scope

Аналогично --show-origin, дополняет вывод всех запрошенных параметров конфигурации областью действия этого значения (рабочее дерево, локальная, глобальная, системная, команда).

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

Найти настройку цвета для <name> (например, color.diff) и вывести "true" или "false". Значение <stdout-is-tty> должно быть "true" или "false"; оно учитывается, если в конфигурации указано "auto". Если <stdout-is-tty> не задано, проверяется стандартный вывод самой команды: она завершается со статусом 0, если следует использовать цвет, и со статусом 1 в противном случае. Если настройка цвета для name не определена, команда использует в качестве запасного варианта color.ui.

--includes
--no-includes

Учитывать директивы include.* в файлах конфигурации при поиске значений. По умолчанию включено значение off, если указан конкретный файл (например, с помощью --file, --global и т. д.), и 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 --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 не задана или пуста, в качестве $XDG_CONFIG_HOME используется $HOME/.config/.

Эти файлы также называются «глобальными» файлами конфигурации. Если существуют оба файла, они считываются в указанном выше порядке.

$GIT_DIR/config

Файл конфигурации конкретного репозитория.

$GIT_DIR/config.worktree

Этот файл необязателен и ищется только в том случае, если в $GIT_DIR/config присутствует extensions.worktreeConfig.

При запуске любой команды git можно также передать дополнительные параметры конфигурации, используя параметр -c. Подробности см. в git[1].

Параметры будут считываться из всех доступных файлов. Отсутствующие или недоступные для чтения глобальные и системные файлы конфигурации игнорируются. Если файл конфигурации репозитория отсутствует или недоступен для чтения, git config завершится с ненулевым кодом ошибки. Если файл недоступен для чтения, выводится сообщение об ошибке; если файл отсутствует, сообщение не выводится.

Файлы считываются в указанном выше порядке; последнее найденное значение имеет приоритет над значениями, считанными ранее. Если используется несколько значений, используются все значения ключа из всех файлов.

По умолчанию параметры записываются только в файл конфигурации конкретного репозитория. Учтите, что это также влияет на такие параметры, как set и unset. git config изменяет только один файл за раз.

Ограничить источники конфигурации для чтения или записи можно, указав путь к файлу с помощью параметра --file или область действия конфигурации с помощью --system, --global, --local или --worktree. Подробнее см. раздел ПАРАМЕТРЫ выше.

Области действия

Каждый источник конфигурации относится к определённой области действия. Области действия:

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} (см. раздел ОКРУЖЕНИЕ ниже)

параметр -c

За исключением command, каждой области действия соответствует параметр командной строки: --system, --global, --local, --worktree.

При чтении параметров указание области действия ограничивает чтение файлами из этой области. При записи параметров указание области действия направляет запись в файлы этой области (вместо файла конфигурации конкретного репозитория). Полное описание см. в разделе ПАРАМЕТРЫ выше.

Большинство параметров конфигурации учитывается независимо от области действия, в которой они заданы, однако некоторые параметры учитываются только в определённых областях. Полные сведения см. в документации соответствующего параметра.

Защищённая конфигурация

Защищённая конфигурация включает области действия system, global и command. В целях безопасности некоторые параметры учитываются, только если они указаны в защищённой конфигурации, и игнорируются в противном случае.

Git рассматривает эти области как контролируемые пользователем или доверенным администратором. Это объясняется тем, что злоумышленник, контролирующий эти области, может нанести значительный ущерб и без использования Git, поэтому предполагается, что окружение пользователя защищает эти области от злоумышленников.

Окружение

GIT_CONFIG_GLOBAL
GIT_CONFIG_SYSTEM

Брать конфигурацию из указанных файлов вместо глобальной конфигурации или конфигурации системного уровня. Подробности см. в git[1].

GIT_CONFIG_NOSYSTEM

Следует ли пропустить чтение параметров из общесистемного файла $(prefix)/etc/gitconfig. Подробности см. в git[1].

См. также ФАЙЛЫ.

GIT_CONFIG_COUNT
GIT_CONFIG_KEY_<n>
GIT_CONFIG_VALUE_<n>

Если для GIT_CONFIG_COUNT задано положительное число, все пары переменных окружения GIT_CONFIG_KEY_<n> и GIT_CONFIG_VALUE_<n> с индексами до этого числа будут добавлены в конфигурацию процесса во время выполнения. Индексация пар конфигурации начинается с нуля. Отсутствие ключа или значения считается ошибкой. Пустое значение GIT_CONFIG_COUNT обрабатывается так же, как GIT_CONFIG_COUNT=0, то есть пары не обрабатываются. Эти переменные окружения переопределяют значения в файлах конфигурации, но сами будут переопределены любыми явными параметрами, переданными через git -c.

Это полезно в случаях, когда требуется запустить несколько команд git с общей конфигурацией, но нельзя полагаться на файл конфигурации, например при написании скриптов.

GIT_CONFIG

Если параметр --file не передан команде git config, использовать файл, указанный в GIT_CONFIG, как если бы он был указан через --file. Эта переменная не влияет на другие команды Git и предназначена главным образом для обратной совместимости; обычно нет причин использовать её вместо параметра --file.

Примеры

Если файл .git/config выглядит так:

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

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

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

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

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

значение filemode можно установить в true с помощью команды

% git config set core.filemode true

У гипотетических записей команды proxy в конце есть суффикс, указывающий, к какому URL они относятся. Вот как изменить запись для kernel.org на «ssh».

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

Это гарантирует, что будет заменена только пара ключ/значение для kernel.org.

Чтобы удалить запись для renames, выполните

% git config unset diff.renames

Чтобы удалить запись для многозначной переменной (например, указанной выше core.gitproxy), необходимо предоставить регулярное выражение, соответствующее значению ровно одной строки.

Чтобы запросить значение заданного ключа, выполните

% 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}"

Для URL-адресов в https://weak.example.com значение http.sslVerify установлено в false, а для всех остальных — в true:

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

Файл конфигурации

Файл конфигурации Git содержит ряд переменных, влияющих на поведение команд Git. Файлы .git/config и, при наличии, config.worktree (см. раздел «ФАЙЛ КОНФИГУРАЦИИ» в git-worktree[1]) в каждом репозитории используются для хранения конфигурации этого репозитория, а $HOME/.gitconfig используется для хранения пользовательской конфигурации, значения которой применяются как запасные для файла .git/config. Файл /etc/gitconfig можно использовать для хранения системной конфигурации по умолчанию.

Переменные конфигурации используются как командами низкого уровня Git, так и командами пользовательского интерфейса. Переменные разделены на секции; полное имя переменной состоит из последнего сегмента, отделённого точкой, а имя секции — из всего, что находится перед последней точкой. Имена переменных не чувствительны к регистру, могут содержать только буквенно-цифровые символы и - и должны начинаться с буквы. Некоторые переменные могут встречаться несколько раз; в этом случае они называются многозначными.

Синтаксис

Синтаксис достаточно гибкий и допускающий вольности. Пробельные символы — в данном контексте пробел (SP) и горизонтальная табуляция (HT) — в основном игнорируются. Символы # и ; начинают комментарий, продолжающийся до конца строки. Пустые строки игнорируются.

Файл состоит из секций и переменных. Секция начинается с имени секции в квадратных скобках и продолжается до начала следующей секции. Имена секций не чувствительны к регистру. В именах секций допускаются только буквенно-цифровые символы, - и .. Каждая переменная должна относиться к какой-либо секции, то есть перед первым заданием переменной должен находиться заголовок секции.

Секции можно дополнительно разделить на подсекции. Чтобы начать подсекцию, укажите её имя в двойных кавычках через пробел после имени секции в заголовке секции, как в примере ниже:

        [section "subsection"]

В именах подсекций учитывается регистр; они могут содержать любые символы, кроме символа новой строки и нулевого байта. Двойную кавычку " и обратную косую черту можно включить, экранировав их как \" и \\ соответственно. Обратные косые черты перед другими символами отбрасываются при чтении; например, \t читается как t, а \0 — как 0. Заголовки секций не могут занимать несколько строк. Переменные могут относиться непосредственно к секции или к указанной подсекции. Можно использовать [section], если уже есть [section "subsection"], но это необязательно.

Существует также устаревший синтаксис [section.subsection]. При использовании этого синтаксиса имя подсекции преобразуется в нижний регистр, при этом регистр также учитывается при сравнении. К именам таких подсекций применяются те же ограничения, что и к именам секций.

Все остальные строки (а также остаток строки после заголовка секции) распознаются как определения переменных в форме name = value (или просто name — краткая запись, означающая, что логическое значение переменной равно true). Имена переменных не чувствительны к регистру, могут содержать только буквенно-цифровые символы и - и должны начинаться с буквы.

Пробельные символы вокруг name, = и value отбрасываются. Внутренние пробельные символы в value сохраняются без изменений. Комментарии, начинающиеся с # или ; и продолжающиеся до конца строки, отбрасываются. Строку, задающую значение, можно продолжить на следующей строке, поставив в конце обратную косую черту (\); обратная косая черта и символы конца строки отбрасываются.

Если value должно содержать начальные или конечные пробельные символы, его необходимо заключить в двойные кавычки ("). Внутри двойных кавычек символы двойной кавычки (") и обратной косой черты (\) необходимо экранировать: используйте \" для " и \\ для \.

Распознаются следующие escape-последовательности (помимо \" и \\): \n для символа новой строки (NL), \t для горизонтальной табуляции (HT, TAB) и \b для возврата на одну позицию (BS). Другие escape-последовательности для символов (включая восьмеричные) недопустимы.

Включения

Секции include и includeIf позволяют включать директивы конфигурации из другого источника. Эти секции ведут себя одинаково, за исключением того, что секции includeIf можно игнорировать, если их условие не выполняется; см. раздел «Условные включения» ниже.

Можно включить файл конфигурации из другого файла, задав специальной переменной include.path (или includeIf.*.path) имя включаемого файла. Значением переменной служит путь; к нему применяется подстановка тильды. Эти переменные можно задавать несколько раз.

Содержимое включаемого файла вставляется немедленно, как если бы оно находилось в том месте, где встретилась директива включения. Если значение переменной является относительным путём, он считается относительно файла конфигурации, в котором встретилась директива включения. Примеры см. ниже.

Условные включения

Можно условно включить файл конфигурации из другого файла, задав переменной includeIf.<condition>.path имя включаемого файла.

Условие начинается с ключевого слова, за которым следуют двоеточие и данные в формате и со значением, зависящими от ключевого слова. Поддерживаются следующие ключевые слова:

gitdir

Данные после ключевого слова gitdir и двоеточия используются как шаблон glob. Если расположение каталога .git соответствует шаблону, условие включения выполнено.

Расположение .git может быть обнаружено автоматически или получено из переменной окружения $GIT_DIR. Если репозиторий обнаружен автоматически через файл .git (например, в подмодулях или связанном рабочем дереве), расположением .git считается конечное местоположение каталога .git, а не место расположения файла .git.

Шаблон может содержать стандартные подстановочные символы glob, а также два дополнительных символа — **/ и /**, которые могут соответствовать нескольким компонентам пути. Подробности см. в gitignore[5]. Для удобства:

  • Если шаблон начинается с ~/, ~ заменяется содержимым переменной окружения HOME.

  • Если шаблон начинается с ./, он заменяется каталогом, содержащим текущий файл конфигурации.

  • Если шаблон не начинается ни с ~/, ни с ./, ни с /, к нему автоматически добавляется префикс **/. Например, шаблон foo/bar становится **/foo/bar и будет соответствовать /any/path/to/foo/bar.

  • Если шаблон заканчивается на /, к нему автоматически добавляется **. Например, шаблон foo/ становится foo/**. Иными словами, он соответствует «foo» и всему его содержимому, включая вложенные элементы.

gitdir/i

То же, что и gitdir, но при сопоставлении регистр не учитывается (например, в файловых системах, нечувствительных к регистру).

onbranch

Данные после ключевого слова onbranch и двоеточия считаются шаблоном со стандартными подстановочными символами glob и двумя дополнительными символами — **/ и /**, которые могут соответствовать нескольким компонентам пути. Если мы находимся в рабочем дереве, где имя текущей выбранной ветки соответствует шаблону, условие включения выполнено.

Если шаблон заканчивается на /, к нему автоматически добавляется **. Например, шаблон foo/ становится foo/**. Иными словами, он соответствует всем веткам, начинающимся с foo/. Это полезно, если ветки организованы иерархически и требуется применить конфигурацию ко всем веткам этой иерархии.

hasconfig:remote.*.url

Данные после этого ключевого слова и двоеточия считаются шаблоном со стандартными подстановочными символами glob и двумя дополнительными символами — **/ и /**, которые могут соответствовать нескольким компонентам. При первом появлении этого ключевого слова остальные файлы конфигурации просматриваются на наличие удалённых URL-адресов (без применения каких-либо значений). Если найден хотя бы один удалённый URL-адрес, соответствующий шаблону, условие включения выполнено.

Файлы, включённые этим параметром (непосредственно или косвенно), не могут содержать удалённые URL-адреса.

Обратите внимание: в отличие от других условий includeIf, разрешение этого условия зависит от информации, которая ещё неизвестна на момент чтения условия. Типичный сценарий использования — наличие этого параметра в системной или глобальной конфигурации, а удалённого URL-адреса — в локальной; поэтому при разрешении условия требуется предварительное сканирование. Чтобы избежать проблемы «курицы и яйца», при которой потенциально включаемые файлы могут влиять на решение об их включении, Git разрывает этот цикл, запрещая этим файлам влиять на разрешение таких условий (и тем самым запрещая им объявлять удалённые URL-адреса).

Это ключевое слово названо так для обеспечения прямой совместимости со схемой имён, поддерживающей больше условий включения на основе переменных, однако на данный момент Git поддерживает только описанное выше ключевое слово.

Ещё несколько примечаний о сопоставлении с помощью gitdir и gitdir/i:

  • Символические ссылки в $GIT_DIR перед сопоставлением не разрешаются.

  • При сопоставлении за пределами $GIT_DIR используются как пути символических ссылок, так и реальные пути. Например, если ~/git является символической ссылкой на /mnt/storage/git, соответствовать будут и gitdir:~/git, и gitdir:/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

Значения

Значения многих переменных обрабатываются как простые строки, однако некоторые переменные принимают значения определённых типов, и для их записи существуют правила.

логическое значение

Если переменная принимает логическое значение, для true и false допускается множество синонимов; регистр символов во всех них не учитывается.

true

Литералами логического значения true являются yes, on, true и 1. Кроме того, переменная, заданная без = <value>, считается равной true.

false

Литералами логического значения false являются no, off, false, 0 и пустая строка.

При преобразовании значения в каноническую форму с помощью спецификатора типа --type=bool git config гарантирует, что результатом будет «true» или «false» (в нижнем регистре).

целое число

Значение многих переменных, задающих различные размеры, можно снабдить суффиксами k, M,…​, означающими «умножить число на 1024», «на 1024×1024» и т. д.

цвет

Значение переменной, принимающей цвет, представляет собой список цветов (не более двух: один для переднего плана, один для фона) и атрибутов (сколько угодно), разделённых пробелами.

Допустимы следующие основные цвета: normal, black, red, green, yellow, blue, magenta, cyan, white и default. Первый указанный цвет задаёт передний план, второй — фон. Все основные цвета, кроме normal и default, имеют яркий вариант, который можно указать, добавив перед цветом префикс bright, например brightred.

Цвет normal не изменяет цвет. Он эквивалентен пустой строке, но его можно использовать в качестве цвета переднего плана, если задаётся только цвет фона (например, «normal red»).

Цвет default явно сбрасывает цвет до значения по умолчанию терминала, например для сброса фона. Хотя поведение зависит от терминала, обычно это не то же самое, что «white black».

Цвета также можно задавать числами от 0 до 255; для них используется режим ANSI с 256 цветами (однако учтите, что не все терминалы могут его поддерживать). Если терминал поддерживает эту возможность, можно также задавать 24-битные значения RGB в шестнадцатеричном формате, например #ff0ab3, или 12-битные значения RGB, например #f1b, эквивалентные 24-битному цвету #ff11bb.

Допустимые атрибуты: bold, dim, ul, blink, reverse, italic и strike (для зачёркнутых букв). Положение атрибутов относительно цветов (до, после или между ними) не имеет значения. Отдельные атрибуты можно отключить, поставив перед ними no или no- (например, noreverse, no-ul и т. д.).

Псевдоатрибут reset сбрасывает все цвета и атрибуты перед применением указанных параметров окрашивания. Например, reset green задаст зелёный цвет переднего плана и фон по умолчанию без активных атрибутов.

Пустая строка цвета не оказывает никакого влияния на цвет. Это можно использовать, чтобы не окрашивать отдельные элементы, не отключая цвета полностью.

Для предопределённых цветовых слотов Git атрибуты сбрасываются в начале каждого элемента окрашенного вывода. Поэтому настройка color.decorate.branch на black окрасит имя ветки в обычный black, даже если предыдущий элемент в той же строке вывода (например, открывающая скобка перед списком имён веток в выводе log --decorate) окрашен с помощью bold или другого атрибута. Однако пользовательские форматы журнала могут использовать более сложное многослойное окрашивание, и в таких случаях могут быть полезны отрицательные формы.

путь

Переменной, принимающей путь, можно задать строку, начинающуюся с «~/» или «~user/»; к такой строке применяется обычная подстановка тильды: ~/ заменяется значением $HOME, а ~user/ — домашним каталогом указанного пользователя.

Если путь начинается с %(prefix)/, оставшаяся часть интерпретируется как путь относительно «префикса среды выполнения» Git, то есть относительно расположения, в котором установлен Git. Например, %(prefix)/bin/ указывает на каталог, в котором находится исполняемый файл Git. Если Git собран без поддержки префикса среды выполнения, вместо него используется префикс, заданный при сборке. В маловероятном случае, когда нужно указать буквальный путь, который не должен подвергаться подстановке not, перед ним необходимо поставить ./, например так: ./%(prefix)/bin.

Если перед именем переменной конфигурации стоит :(optional), переменная считается несуществующей, если указанный путь не существует.

Переменные

Обратите внимание, что этот список неполон и не обязательно исчерпывающий. Описание переменных, относящихся к конкретным командам, можно найти в соответствующих страницах руководства.

Другие инструменты, связанные с Git, также могут использовать собственные переменные. Создавая новые переменные для своего инструмента, убедитесь, что их имена не конфликтуют с именами, используемыми самим Git и другими популярными инструментами, и опишите их в документации.

add.ignoreErrors
add.ignore-errors (устарела)

Указывает git add продолжать добавление файлов, если некоторые файлы не удаётся добавить из-за ошибок индексирования. Эквивалент параметра --ignore-errors команды git-add[1]. Переменная add.ignore-errors устарела, поскольку её имя не соответствует обычному соглашению об именовании переменных конфигурации.

advice.*

Эти переменные управляют различными необязательными справочными сообщениями, призванными помочь новым пользователям. Если переменные не заданы, Git выводит сообщение вместе с инструкциями о том, как отключить его. Чтобы сообщить Git, что вы поняли проблему и больше не нуждаетесь в конкретном справочном сообщении, задайте соответствующей переменной значение false.

Эти сообщения предназначены для помощи пользователям и выводятся в стандартный поток ошибок. Если инструменты, запускающие Git как подпроцесс, считают их мешающими, они могут задать в окружении переменную GIT_ADVICE=0, чтобы отключить все справочные сообщения.

addEmbeddedRepo

Показывается, если пользователь случайно добавляет один репозиторий Git внутрь другого.

addEmptyPathspec

Показывается, если пользователь запускает git add, не указав параметр pathspec.

addIgnoredFile

Показывается, если пользователь пытается добавить игнорируемый файл в индекс.

amWorkDir

Показывается, если git-am[1] не удаётся применить файл патча, и сообщает пользователю расположение файла.

ambiguousFetchRefspec

Показывается, если refspec для получения данных из нескольких удалённых репозиториев соответствует одному и тому же пространству имён веток удалённого отслеживания, из-за чего не удаётся настроить отслеживание ветки.

checkoutAmbiguousRemoteBranchName

Показывается, если аргумент команды git-checkout[1] или git-switch[1] неоднозначно соответствует ветке удалённого отслеживания в нескольких удалённых репозиториях в ситуации, когда однозначный аргумент привёл бы к переключению на ветку удалённого отслеживания. О том, как задать удалённый репозиторий, используемый по умолчанию в некоторых ситуациях, когда выводится это сообщение, см. переменную конфигурации checkout.defaultRemote.

commitBeforeMerge

Показывается, если git-merge[1] отказывается выполнять слияние, чтобы не перезаписать локальные изменения.

detachedHead

Показывается, если пользователь с помощью git-switch[1] или git-checkout[1] переходит в состояние отделённого HEAD, и сообщает, как впоследствии создать локальную ветку.

diverging

Показывается, если перемотка вперёд невозможна.

fetchShowForcedUpdates

Показывается, если git-fetch[1] требуется много времени для вычисления принудительных обновлений после обновления ссылок, или чтобы предупредить об отключённой проверке.

forceDeleteBranch

Показывается, если пользователь пытается удалить не полностью слитую ветку без указания параметра принудительного удаления.

ignoredHook

Показывается, если хук игнорируется, потому что для него не установлен признак исполняемого файла.

implicitIdentity

Показывается, если данные пользователя определяются по имени пользователя и доменному имени системы, и сообщает, как настроить его идентификационные данные.

mergeConflict

Показывается, если выполнение различных команд прерывается из-за конфликтов.

nestedTag

Показывается, если пользователь пытается рекурсивно создать тег для объекта-тега.

pushAlreadyExists

Показывается, если git-push[1] отклоняет обновление, которое не допускает перемотки вперёд (например, тег).

pushFetchFirst

Показывается, если git-push[1] отклоняет обновление, пытающееся перезаписать удалённую ссылку, указывающую на объект, которого у нас нет.

pushNeedsForce

Показывается, если git-push[1] отклоняет обновление, пытающееся перезаписать удалённую ссылку, указывающую на объект, не являющийся коммитом, или заставить удалённую ссылку указывать на объект, не являющийся коммитом.

pushNonFFCurrent

Показывается, если git-push[1] завершается с ошибкой из-за обновления текущей ветки, не допускающего перемотки вперёд.

pushNonFFMatching

Показывается, если пользователь запустил git-push[1] и явно отправил «соответствующие ссылки» (то есть использовал : или указал refspec, который не является текущей веткой), что привело к ошибке из-за невозможности перемотки вперёд.

pushRefNeedsUpdate

Показывается, если git-push[1] отклоняет принудительное обновление ветки, поскольку её ссылка удалённого отслеживания содержит обновления, которых нет локально.

pushUnqualifiedRefname

Показывается, если git-push[1] не удаётся определить по исходной и целевой ссылкам, к какому пространству имён удалённых ссылок относится источник, но при этом можно предложить пользователю отправить данные в refs/heads/* или refs/tags/* в зависимости от типа исходного объекта.

pushUpdateRejected

Задайте для этой переменной значение false, если хотите одновременно отключить сообщения pushNonFFCurrent, pushNonFFMatching, pushAlreadyExists, pushFetchFirst, pushNeedsForce и pushRefNeedsUpdate.

rebaseTodoError

Показывается при возникновении ошибки после редактирования списка команд для перебазирования.

refSyntax

Показывается, если пользователь указывает недопустимое имя ссылки, и сообщает о документации по синтаксису ссылок.

resetNoRefresh

Показывается, если git-reset[1] требуется более 2 секунд для обновления индекса после сброса, и сообщает пользователю, что можно использовать параметр --no-refresh.

resolveConflict

Показывается различными командами, если конфликты мешают выполнить операцию.

rmHints

Показывается при ошибке в выводе git-rm[1] и подсказывает, как действовать дальше в текущем состоянии.

sequencerInUse

Показывается, если команда sequencer уже выполняется.

skippedCherryPicks

Показывается, если git-rebase[1] пропускает коммит, который уже был перенесён с помощью cherry-pick в вышестоящую ветку.

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] отказывается отделить HEAD без явного параметра --detach.

updateSparsePath

Показывается, если git-add[1] или git-rm[1] предлагается обновить записи индекса за пределами текущей разреженной рабочей копии.

waitingForEditor

Показывается, пока Git ожидает ввода в редакторе. Актуально, например, если редактор запускается не в терминале.

worktreeAddOrphan

Показывается, если пользователь пытается создать рабочее дерево по недопустимой ссылке, и сообщает, как вместо этого создать новую ветку без коммитов.

alias.*
alias.*.command

Псевдонимы команд для оболочки команды git[1]. Псевдонимы можно задавать в двух форматах:

  1. Без подраздела, например [alias] co = checkout. Имя псевдонима ("co" в этом примере) может содержать только ASCII-буквы и цифры и символ -; регистр букв при сопоставлении не учитывается.

  2. С подразделом, например [alias "co"] command = checkout. Имя псевдонима может содержать любые символы, включая UTF-8, кроме символов новой строки и нулевых байтов; сопоставление выполняется с учётом регистра, по исходным байтам. Действие псевдонима задаётся в command.

Примеры:

# Without subsection (ASCII alphanumeric and dash only)
[alias]
    co = checkout
    st = status

# With subsection (allows any characters, including UTF-8)
[alias "hämta"]
    command = fetch
[alias "rätta till"]
    command = commit --amend

Если задан псевдоним Git, например:

$ git config --global alias.last "cat-file commit HEAD"
# Which is equivalent to
$ git config --global alias.last.command "cat-file commit HEAD"

git last эквивалентно git cat-file commit HEAD.

Чтобы избежать путаницы и проблем при использовании скриптов, псевдонимы, скрывающие существующие команды Git, игнорируются, за исключением устаревших команд. Аргументы разделяются пробелами; поддерживаются обычные правила экранирования и заключения в кавычки оболочки. Для заключения аргументов в кавычки можно использовать пару кавычек или обратную косую черту.

Обратите внимание, что первое слово псевдонима не обязательно должно быть командой. Это может быть параметр командной строки, передаваемый при вызове git. В частности, это полезно при использовании с -c для передачи разовых настроек или с -p для принудительного включения постраничного вывода. Например, можно определить loud-rebase = -c commit.verbose=true rebase, чтобы запуск git loud-rebase был эквивалентен git -c commit.verbose=true rebase. Кроме того, полезным будет псевдоним ps = -p status, поскольку git ps будет выводить постранично результат команды git status, хотя сама исходная команда этого не делает.

Если раскрытие псевдонима начинается с восклицательного знака, оно будет интерпретироваться как команда оболочки. Например, если определить alias.new = !gitk --all --not ORIG_HEAD, то вызов git new будет эквивалентен выполнению команды оболочки gitk --all --not ORIG_HEAD. Обратите внимание:

  • Команды оболочки выполняются из корневого каталога репозитория, который не обязательно совпадает с текущим каталогом.

  • Переменной GIT_PREFIX присваивается значение, возвращаемое командой git rev-parse --show-prefix, запущенной из исходного текущего каталога. См. git-rev-parse[1].

  • Псевдонимы команд оболочки всегда получают любые дополнительные аргументы, переданные командной строке Git, в виде позиционных аргументов.

    • Будьте осторожны, если псевдоним оболочки представляет собой скрипт в одну строку с несколькими командами (например, в конвейере), обращается к нескольким аргументам или иным образом не может обработать позиционные аргументы, добавляемые в конец. Например, псевдоним 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[1] вызывает git-mailsplit[1] для патчей в формате mbox с параметром --keep-cr. В этом случае git-mailsplit[1] не будет удалять \r из строк, заканчивающихся на \r\n. Значение можно переопределить, указав --no-keep-cr в командной строке.

am.threeWay

По умолчанию git-am[1] завершится с ошибкой, если патч не удастся применить без конфликтов. Если задать значение true, эта настройка указывает git-am[1] использовать трёхстороннее слияние, если в патче записана идентичность объектов blob, к которым его нужно применить, и эти объекты blob доступны локально (эквивалентно указанию параметра --3way в командной строке). По умолчанию установлено значение false.

am.messageId

При использовании git-am[1] добавляет к коммиту завершающий элемент Message-ID на основе заголовка электронного письма (см. git-interpret-trailers[1]). См. также параметры --message-id и --no-message-id.

apply.ignoreWhitespace

Если задано значение change, указывает git apply игнорировать изменения в пробельных символах, как и параметр --ignore-space-change. Если задано одно из значений no, none, never, false, указывает 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>.sampleRate и bitmapPseudoMerge.<name>.threshold), будут рассматриваться для включения в битовую карту псевдослияния.

Коммиты группируются в группы псевдослияния в зависимости от того, соответствуют ли шаблону — расширенному регулярному выражению — какие-либо ссылки, указывающие на данный коммит.

Внутри группы псевдослияния коммиты могут быть дополнительно сгруппированы в подгруппы на основе групп захвата в шаблоне. Эти подгруппы формируются из регулярных выражений путём объединения всех групп захвата регулярного выражения с - дефисом между ними.

Например, если шаблон — refs/tags/, то все теги (при условии, что они отвечают приведённым ниже критериям) будут считаться кандидатами в одну группу псевдослияния. Однако если шаблон — refs/remotes/([0-9])+/tags/, то теги с разных удалённых репозиториев будут сгруппированы в отдельные группы псевдослияния в зависимости от номера удалённого репозитория.

bitmapPseudoMerge.<name>.decay

Определяет скорость, с которой уменьшается размер последовательных групп битовых карт псевдослияния. Значение должно быть неотрицательным. Этот параметр можно считать k в функции f(n) = C * n^-k, где f(n) — размер `n`-й группы.

Если задать скорость затухания равной 0, все группы будут иметь одинаковый размер. Если задать скорость затухания равной 1, размер начальной группы составит nth group to be 1/n. При более высоких значениях скорости затухания размер каждой следующей группы уменьшается всё быстрее. Значение по умолчанию — 1.

Если все группы имеют одинаковый размер, группы с более новыми коммитами могут использоваться реже, чем более ранние группы, поскольку ссылки на новые коммиты, вероятнее всего, будут обновляться чаще, чем ссылка на старый коммит.

bitmapPseudoMerge.<name>.sampleRate

Определяет долю коммитов без битовых карт (среди вершин ссылок), выбираемых для включения в нестабильную битовую карту псевдослияния. Значение должно быть больше 0 и меньше либо равно 1. Значение по умолчанию — 1.

bitmapPseudoMerge.<name>.threshold

Определяет минимальный возраст коммитов без битовых карт (как указано выше, среди вершин ссылок), которые могут быть включены в нестабильную битовую карту псевдослияния. Значение по умолчанию — 1.week.ago.

bitmapPseudoMerge.<name>.maxMerges

Определяет максимальное число коммитов псевдослияния, между которыми могут распределяться коммиты.

Для групп псевдослияния, шаблоны которых не содержат групп захвата, этот параметр применяется ко всем коммитам, соответствующим регулярному выражению. Для шаблонов, содержащих одну или несколько групп захвата, этот параметр применяется к каждой уникальной группе захвата.

Например, если группа захвата — 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]. По умолчанию этот параметр отключён.

blame.coloring

Определяет цветовую схему для вывода команды blame. Значением может быть repeatedLines, highlightRecent или none (значение по умолчанию).

blame.date

Задаёт формат дат в выводе git-blame[1]. Если параметр не задан, используется формат iso. Допустимые значения см. в описании параметра --date в git-log[1].

blame.showEmail

Показывать адрес электронной почты автора вместо его имени в git-blame[1]. По умолчанию этот параметр отключён.

blame.showRoot

Не считать корневые коммиты границами в git-blame[1]. По умолчанию этот параметр отключён.

blame.ignoreRevsFile

Игнорировать ревизии, перечисленные в файле (по одному полному имени объекта на строку) при выполнении git-blame[1]. Пробелы и комментарии, начинающиеся с #, игнорируются. Этот параметр можно указывать несколько раз. Пустое имя файла сбрасывает список игнорируемых ревизий. Этот параметр обрабатывается перед параметром командной строки --ignore-revs-file.

blame.markUnblamableLines

Помечать в выводе git-blame[1] символом * строки, изменённые игнорируемой ревизией, которые не удалось отнести к другому коммиту.

blame.markIgnoredLines

Помечать в выводе git-blame[1] символом ? строки, изменённые игнорируемой ревизией, которые удалось отнести к другому коммиту.

branch.autoSetupMerge

Указывает git branch, git switch и git checkout настраивать новые ветки так, чтобы git-pull[1] правильно выполнял слияние с исходной веткой. Даже если этот параметр не задан, такое поведение можно выбрать отдельно для каждой ветки с помощью параметров --track и --no-track. Значение по умолчанию — true. Допустимые значения:

false

автоматическая настройка не выполняется

true

автоматическая настройка выполняется, если исходная точка — ветка отслеживания удалённого репозитория

always

автоматическая настройка выполняется, если исходная точка — локальная ветка или ветка отслеживания удалённого репозитория

inherit

если для исходной точки настроено отслеживание, эта настройка копируется в новую ветку

simple

автоматическая настройка выполняется, только если исходная точка — ветка отслеживания удалённого репозитория, а имя новой ветки совпадает с именем ветки удалённого репозитория.

branch.autoSetupRebase

Если с помощью git branch, git switch или git checkout создаётся новая ветка, отслеживающая другую ветку, эта переменная указывает Git настроить pull на перебазирование вместо слияния (см. branch.<name>.rebase). Допустимые значения:

never

перебазирование никогда автоматически не включается.

local

перебазирование включается для отслеживаемых веток других локальных веток.

remote

перебазирование включается для отслеживаемых веток веток отслеживания удалённых репозиториев.

always

перебазирование включается для всех отслеживаемых веток.

Сведения о настройке отслеживания одной веткой другой см. в 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 для отправки изменений. Он также переопределяет remote.pushDefault при отправке из ветки <name>. Если вы получаете изменения из одного места (например, из вышестоящего репозитория), а отправляете в другое (например, в собственный репозиторий для публикации), задайте remote.pushDefault, чтобы указать удалённый репозиторий для отправки из всех веток, а этот параметр используйте для переопределения значения для конкретной ветки.

branch.<name>.merge

Вместе с branch.<name>.remote определяет вышестоящую ветку для данной ветки. Параметр указывает git fetch/git pull/git rebase, какую ветку объединять, а также может влиять на git push (см. push.default). Находясь в ветке <name>, он указывает git fetch спецификацию ссылок по умолчанию, которую следует пометить для слияния в FETCH_HEAD. Значение обрабатывается как удалённая часть спецификации ссылок и должно соответствовать ссылке, получаемой из удалённого репозитория, указанного в branch.<name>.remote. Сведения о слиянии используются командой git pull (которая сначала вызывает git fetch) для поиска ветки слияния по умолчанию. Без этого параметра команда git pull по умолчанию выполняет слияние с первой полученной спецификацией ссылок. Укажите несколько значений, чтобы выполнить слияние «осьминог». Если нужно настроить git pull так, чтобы она выполняла слияние в <name> из другой ветки локального репозитория, задайте для branch.<name>.merge нужную ветку, а для branch.<name>.remote используйте относительный путь . (точку).

branch.<name>.mergeOptions

Задаёт параметры слияния по умолчанию для ветки <name>. Синтаксис и поддерживаемые параметры совпадают с git-merge[1], однако значения параметров, содержащие пробельные символы, в настоящее время не поддерживаются.

branch.<name>.rebase

Если значение равно true, перебазировать ветку <name> поверх полученной ветки вместо слияния с веткой по умолчанию из удалённого репозитория по умолчанию при запуске git pull. См. pull.rebase, если требуется настроить такое поведение не для отдельной ветки.

Если значение равно merges (или просто m), передать параметр --rebase-merges команде git rebase, чтобы включить локальные коммиты слияния в перебазирование (подробности см. в 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 (см. параметр -w в git-help[1]) или рабочего репозитория в gitweb (см. git-instaweb[1]).

bundle.*

Ключи bundle.* могут присутствовать в файле списка пакетов, найденном с помощью параметра git clone --bundle-uri. В настоящее время эти ключи не действуют, если указаны в файле конфигурации репозитория, но в будущем это изменится. Подробности см. в документе о проектировании URI пакетов.

bundle.version

Это целочисленное значение указывает версию формата списка пакетов, используемого в данном списке. В настоящее время допустимо только значение 1.

bundle.mode

Это строковое значение должно быть равно all или any. Оно определяет, необходимы ли все объявленные пакеты для полного понимания содержащейся в них информации (all) или достаточно любого одного URI пакета из списка (any).

bundle.heuristic

Если существует этот ключ со строковым значением, список пакетов предназначен для эффективной работы с инкрементными командами git fetch. Эвристика указывает на наличие дополнительных ключей для каждого пакета, помогающих определить, какое подмножество пакетов следует загрузить клиенту. В настоящее время поддерживается только значение creationToken.

bundle.<id>.*

Ключи bundle.<id>.* используются для описания отдельного элемента списка пакетов, сгруппированного под <id> для идентификации.

bundle.<id>.uri

Это строковое значение задаёт URI, по которому Git может получить содержимое данного <id>. Этот URI может указывать на файл пакета или другой список пакетов.

checkout.defaultRemote

При выполнении git checkout <something> или git switch <something>, если у вас только один удалённый репозиторий, Git может неявно перейти к переключению на ветку и её отслеживанию, например origin/<something>. Это перестаёт работать, как только появляется несколько удалённых репозиториев с ссылкой <something>. Этот параметр позволяет задать предпочтительный удалённый репозиторий, который всегда будет выбираться при разрешении неоднозначности. Обычно в качестве такого значения указывают origin.

В настоящее время этот параметр используется командами git-switch[1] и git-checkout[1], когда git checkout <something> или git switch <something> переключает на ветку <something> в другом удалённом репозитории, а также командой git-worktree[1], когда git worktree add указывает на ветку удалённого репозитория. В будущем этот параметр может использоваться и другими командами или функциями переключения.

checkout.guess

Задаёт значение по умолчанию для параметра --guess или --no-guess в командах git checkout и git switch. См. git-switch[1] и git-checkout[1].

checkout.workers

Количество параллельных рабочих процессов для обновления рабочего дерева. По умолчанию используется один процесс, то есть выполнение происходит последовательно. Если значение меньше единицы, Git использует столько рабочих процессов, сколько доступно логических ядер. Этот параметр и checkout.thresholdForParallelism влияют на все команды, выполняющие переключение. Например, checkout, clone, reset, sparse-checkout и т. д.

Примечание
Параллельное переключение обычно обеспечивает более высокую производительность для репозиториев на SSD или в NFS. Для репозиториев на дисках с вращающимися пластинами и/или компьютеров с небольшим количеством ядер последовательное переключение, используемое по умолчанию, зачастую работает быстрее. На производительность параллельного варианта также могут влиять размер репозитория и уровень сжатия.
checkout.thresholdForParallelism

При параллельном переключении с небольшим количеством файлов затраты на запуск подпроцессов и межпроцессное взаимодействие могут превысить выигрыш от распараллеливания. Этот параметр позволяет задать минимальное количество файлов, при котором следует использовать параллельное переключение. Значение по умолчанию — 100.

clean.requireForce

Логический параметр, запрещающий git-clean удалять файлы без указания -f. По умолчанию включён.

clone.defaultRemoteName

Имя удалённого репозитория, создаваемого при клонировании репозитория. По умолчанию — origin. Его можно переопределить, передав параметр командной строки --origin команде git-clone[1].

clone.rejectShallow

Отклонять клонирование неглубокого репозитория; это поведение можно переопределить, передав параметр --reject-shallow в командной строке. См. git-clone[1].

clone.filterSubmodules

Если задан фильтр частичного клонирования (см. --filter в git-rev-list[1]) и используется --recurse-submodules, применять этот фильтр также к подмодулям.

color.advice

Логический параметр для включения или отключения цвета в подсказках (например, при ошибке отправки; список см. в advice.*). Может принимать значения always, false (или never) либо auto (или true); в последнем случае цвета используются только при выводе ошибок в терминал. Если параметр не задан, используется значение color.ui (по умолчанию — auto).

color.advice.hint

Использовать пользовательский цвет для подсказок.

color.blame.highlightRecent

Задаёт цвет аннотаций строк для git blame --color-by-age в зависимости от возраста строки.

Для этого параметра следует задать разделённый запятыми список значений цвета и даты: список должен начинаться и заканчиваться цветом, а даты должны идти от самых ранних к самым поздним. Метаданные будут окрашены указанными цветами, если строка была добавлена до заданной отметки времени; более ранние цвета с отметкой времени при этом переопределяются.

Вместо абсолютной отметки времени можно использовать относительное время. Например, значение 2.weeks.ago подходит для обозначения всего, что старше двух недель.

По умолчанию используется blue,12 month ago,white,1 month ago,red: всё, что старше года, окрашивается в синий цвет; недавние изменения возрастом от месяца до года остаются белыми, а строки, добавленные за последний месяц, окрашиваются в красный цвет.

color.blame.repeatedLines

Использовать указанный цвет для аннотаций строк в git blame --color-lines, если они относятся к тому же коммиту, что и предыдущая строка. По умолчанию используется голубой цвет.

color.branch

Логическое значение для включения или отключения цвета в выводе git-branch[1]. Может принимать значение always, false (или never) либо auto (или true); в последнем случае цвет используется только при выводе в терминал. Если значение не задано, используется значение color.ui (по умолчанию — auto).

color.branch.<slot>

Использовать заданный цвет для раскрашивания ветвей. <slot> может принимать одно из значений: current (текущая ветвь), local (локальная ветвь), remote (ветвь удалённого отслеживания в refs/remotes/), upstream (отслеживаемая вышестоящая ветвь), plain (другие ссылки).

color.diff

Использовать ли управляющие последовательности ANSI для раскрашивания исправлений. Если задано значение always, команды git-diff[1], git-log[1] и git-show[1] будут раскрашивать все исправления. Если задано значение true или auto, эти команды будут использовать цвет только при выводе в терминал. Если значение не задано, используется значение color.ui (по умолчанию — auto).

Это не влияет на git-format-patch[1] и низкоуровневые команды git-diff-*. Значение можно переопределить в командной строке параметром --color[=<when>].

color.diff.<slot>

Использовать заданный цвет для раскрашивания различий. <slot> указывает, какую часть исправления раскрашивать заданным цветом; возможные значения: context (контекстный текст — plain является историческим синонимом), meta (метаинформация), frag (заголовок фрагмента), func (функция в заголовке фрагмента), old (удалённые строки), new (добавленные строки), commit (заголовки коммитов), whitespace (подсветка ошибок в пробельных символах), oldMoved (удалённые строки), newMoved (добавленные строки), oldMovedDimmed, oldMovedAlternative, oldMovedAlternativeDimmed, newMovedDimmed, newMovedAlternative newMovedAlternativeDimmed (подробности см. в настройке <mode> параметра --color-moved команды git-diff[1]), contextDimmed, oldDimmed, newDimmed, contextBold, oldBold и newBold (подробности см. в git-range-diff[1]).

color.decorate.<slot>

Использовать заданный цвет для вывода git log --decorate. <slot> может принимать одно из значений: branch, remoteBranch, tag, stash или HEAD — соответственно для локальных ветвей, ветвей удалённого отслеживания, тегов, stash и HEAD; 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

текст, совпавший с шаблоном (эквивалентно заданию matchContext и matchSelected)

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> может принимать значение prompt, header, help или error для четырёх разных типов обычного вывода интерактивных команд.

color.pager

Логическое значение, определяющее, должны ли цветовые режимы auto раскрашивать вывод, передаваемый программе постраничного просмотра. По умолчанию включено; задайте значение false, если ваша программа постраничного просмотра не распознаёт коды цветов ANSI.

color.push

Логическое значение для включения или отключения цвета в сообщениях об ошибках при отправке изменений. Может принимать значение always, false (или never) либо auto (или true); в последнем случае цвет используется только при выводе сообщения об ошибке в терминал. Если значение не задано, используется значение color.ui (по умолчанию — auto).

color.push.error

Использовать заданный цвет для сообщений об ошибках при отправке изменений.

color.remote

Если значение задано, ключевые слова в начале строки подсвечиваются. Это ключевые слова "error", "warning", "hint" и "success"; регистр при сопоставлении не учитывается. Может принимать значение always, false (или never) либо auto (или true). Если значение не задано, используется значение color.ui (по умолчанию — auto).

color.remote.<slot>

Использовать заданный цвет для каждого ключевого слова удалённого узла. <slot> может принимать значение hint, warning, success или error, соответствующее ключевому слову.

color.showBranch

Логическое значение для включения или отключения цвета в выводе git-show-branch[1]. Может принимать значение always, false (или never) либо auto (или true); в последнем случае цвет используется только при выводе в терминал. Если значение не задано, используется значение color.ui (по умолчанию — auto).

color.status

Логическое значение для включения или отключения цвета в выводе git-status[1]. Может принимать значение always, false (или 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

Логическое значение для включения или отключения цвета при отклонении отправки изменений. Может принимать значение always, false (или never) либо auto (или true); в последнем случае цвет используется только при выводе сообщения об ошибке в терминал. Если значение не задано, используется значение color.ui (по умолчанию — auto).

color.transport.rejected

Использовать заданный цвет, если отправка изменений была отклонена.

color.ui

Эта переменная задаёт значения по умолчанию для таких переменных, как color.diff и color.grep, которые управляют использованием цвета в разных группах команд. Область её действия будет расширяться по мере того, как новые команды будут получать настройки для задания значения параметра --color по умолчанию. Задайте значение false или never, если хотите, чтобы команды Git не использовали цвет без явного включения с помощью другой настройки или параметра --color. Задайте значение always, если хотите, чтобы цвет использовался для всего вывода, не предназначенного для обработки программами; задайте значение true или auto (значение по умолчанию начиная с Git 1.8.4), если хотите, чтобы такой вывод раскрашивался при отправке в терминал.

column.ui

Указывает, должны ли поддерживаемые команды выводить данные в несколько столбцов. Эта переменная содержит список параметров, разделённых пробелами или запятыми:

Эти параметры задают условия включения функции (по умолчанию — never):

always

всегда выводить в несколько столбцов

never

никогда не выводить в несколько столбцов

auto

выводить в несколько столбцов, если вывод направлен в терминал

Эти параметры задают способ заполнения таблицы (по умолчанию — column). Если не заданы ни always, ни never, ни auto, задание любого из этих параметров подразумевает always.

column

сначала заполнять столбцы, затем строки

row

сначала заполнять строки, затем столбцы

plain

выводить в один столбец

Наконец, эти параметры можно сочетать с параметром компоновки (по умолчанию — 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

Этот параметр переопределяет значение по умолчанию для параметра --cleanup в git commit. Подробности см. в git-commit[1]. Изменение значения по умолчанию может быть полезно, если вы всегда хотите сохранять в сообщении журнала строки, начинающиеся с символа комментария (core.commentChar, по умолчанию #); в этом случае следует указать git config commit.cleanup whitespace (обратите внимание: если вы так поступите, строки справки, начинающиеся с символа комментария, потребуется удалить из шаблона журнала коммитов самостоятельно).

commit.gpgSign

Логическое значение, указывающее, следует ли подписывать все коммиты с помощью GPG. Использование этого параметра при выполнении таких операций, как перебазирование, может привести к подписанию большого количества коммитов. Чтобы не вводить парольную фразу GPG несколько раз, можно использовать агент.

commit.status

Логическое значение, включающее или отключающее добавление сведений о состоянии в шаблон сообщения коммита при подготовке сообщения в редакторе. По умолчанию — true.

commit.template

Задаёт путь к файлу, который будет использоваться в качестве шаблона для новых сообщений коммитов.

commit.verbose

Логическое значение или целое число, задающее уровень подробности для git commit. Подробности см. в git-commit[1].

commitGraph.generationVersion

Задаёт версию номеров поколений, используемую при записи или чтении файла commit-graph. Если указана версия 1, исправленные даты коммитов не будут записываться или считываться. По умолчанию — 2.

commitGraph.maxNewFilters

Задаёт значение по умолчанию для параметра --max-new-filters команды git commit-graph write (см. git-commit-graph[1]).

commitGraph.changedPaths

Если значение равно true, команда git commit-graph write по умолчанию вычисляет и записывает фильтры Блума для изменённых путей, что равносильно передаче параметра --changed-paths. Если значение равно false или не задано, фильтры Блума для изменённых путей записываются во время выполнения git commit-graph write только в том случае, если фильтры уже есть в текущем файле commit-graph. Это соответствует поведению команды git commit-graph write по умолчанию без параметра --[no-]changed-paths. Чтобы перезаписать файл commit-graph без фильтров, используйте параметр --no-changed-paths. Параметр командной строки --[no-]changed-paths всегда имеет приоритет над этой настройкой. По умолчанию не задано.

commitGraph.readChangedPaths

Устарел. Эквивалентен commitGraph.changedPathsVersion=-1, если значение равно true, и commitGraph.changedPathsVersion=0, если значение равно false. (Если также задан 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 для добавления команд в список автодополнения или удаления их из него. Обычно автодополнение доступно только для команд porcelain и некоторых других выбранных команд. В эту переменную можно добавить другие команды, разделив их пробелами. Если поставить перед командой -, она будет удалена из существующего списка.

core.fileMode

Сообщает Git, следует ли учитывать бит исполнения файлов в рабочем дереве.

Некоторые файловые системы сбрасывают бит исполнения при извлечении файла, отмеченного как исполняемый, или устанавливают его при извлечении неисполняемого файла. git-clone[1] или git-init[1] проверяют, корректно ли файловая система обрабатывает бит исполнения, и при необходимости автоматически устанавливают эту переменную.

Однако репозиторий может находиться в файловой системе, которая корректно обрабатывает режимы файлов, и при его создании этой переменной присваивается значение true, но позднее репозиторий может стать доступен из другой среды, которая теряет режим файла (например, при экспорте ext4 через подключение CIFS или при работе с репозиторием, созданным в Cygwin, из Git for Windows или Eclipse). В таком случае может потребоваться установить для этой переменной значение false. См. git-update-index[1].

По умолчанию значение равно true (если core.filemode не указан в файле конфигурации).

core.hideDotFiles

(Только для Windows) Если значение равно true, вновь созданные каталоги и файлы, имена которых начинаются с точки, помечаются как скрытые. Если задано значение dotGitOnly, скрытым будет только каталог .git/, а остальные файлы, имена которых начинаются с точки, скрыты не будут. По умолчанию используется режим dotGitOnly.

core.ignoreCase

Внутренняя переменная, включающая различные обходные решения для улучшения работы Git в файловых системах, не чувствительных к регистру, таких как APFS, HFS+, FAT, NTFS и другие. Например, если при просмотре каталога Git ожидает файл «Makefile», но обнаруживает «makefile», он считает, что это тот же файл, и продолжает учитывать его как «Makefile».

По умолчанию значение равно false, однако git-clone[1] или git-init[1] проверяют файловую систему и при создании репозитория устанавливают core.ignoreCase в true, если это необходимо.

Для корректной работы Git полагается на правильную настройку этой переменной с учётом используемой операционной системы и файловой системы. Изменение этого значения может привести к неожиданному поведению.

core.precomposeUnicode

Этот параметр используется только реализацией Git для Mac OS. Если core.precomposeUnicode=true, Git отменяет разложение Unicode в именах файлов, выполняемое Mac OS. Это полезно при совместном использовании репозитория в Mac OS и Linux или Windows. (Требуется Git for Windows версии 1.7.10 или выше либо Git под cygwin 1.7.) Если значение равно 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.

В противном случае эта переменная содержит путь к команде-хуку «fsmonitor».

Эта команда-хук используется для определения всех файлов, которые могли измениться после указанной даты и времени. Эта информация ускоряет работу Git, позволяя избежать ненужного сканирования неизменённых файлов.

См. раздел «fsmonitor-watchman» в githooks[5].

Обратите внимание: если вы одновременно используете несколько версий Git, например одну в командной строке, а другую в среде разработки, определение core.fsmonitor было расширено и теперь допускает логические значения наряду с путями к хукам. Версии Git 2.35.1 и более ранние не распознают логические значения и будут считать значения «true» или «false» путями к хукам, которые следует вызвать. В версиях Git с 2.26 по 2.35.1 по умолчанию используется протокол хуков V2, а при сбое мониторинг fsmonitor отключается (выполняется полное сканирование). В версиях Git до 2.26 по умолчанию используется протокол хуков V1; они молча предполагают, что изменений для отчёта нет (сканирование не выполняется), поэтому команды проверки состояния могут выдавать неполные результаты. Поэтому перед использованием встроенного монитора файловой системы рекомендуется обновить все версии Git.

core.fsmonitorHookVersion

Задаёт версию протокола, используемую при вызове хука «fsmonitor».

В настоящее время доступны версии 1 и 2. Если параметр не задан, сначала проверяется версия 2, а в случае сбоя — версия 1. В версии 1 для определения файлов, изменившихся с указанного момента времени, в качестве входных данных используется временная метка, однако некоторые мониторы, например Watchman, при работе с временными метками подвержены состояниям гонки. В версии 2 используется непрозрачная строка, позволяющая монитору возвращать данные для определения изменившихся файлов без состояний гонки.

core.trustctime

Если значение равно false, различия ctime между индексом и рабочим деревом игнорируются; это полезно, когда время изменения inode регулярно меняется по причинам, не связанным с Git (например, из-за сканеров файловой системы или некоторых систем резервного копирования). См. git-update-index[1]. По умолчанию значение равно true.

core.splitIndex

Если значение равно true, используется функция разделённого индекса. См. git-update-index[1]. По умолчанию значение равно false.

core.untrackedCache

Определяет, что делать с кэшем неотслеживаемых файлов в индексе. Если эта переменная не задана или имеет значение keep, кэш сохраняется. Если задано значение true, кэш будет автоматически добавлен. Если задано значение false, кэш будет автоматически удалён. Прежде чем задать значение true, убедитесь, что mtime в вашей системе работает правильно. См. git-update-index[1]. По умолчанию используется значение keep, если только не включён параметр feature.manyFiles, который по умолчанию устанавливает для этой настройки значение true.

core.checkStat

Если значение не задано или равно default, проверяется множество полей структуры stat, чтобы определить, изменился ли файл с момента последнего обращения к нему Git. Если для этой переменной конфигурации задано значение minimal, при проверке исключаются доли секунды в mtime и ctime, uid и gid владельца файла, номер inode (а также номер устройства, если Git был собран с его использованием); проверяются только целые секунды mtime (и ctime, если задано значение core.trustCtime) и размер файла.

Некоторые реализации Git не оставляют пригодных для использования значений в отдельных полях (например, JGit); исключение этих полей из сравнения в режиме minimal может улучшить совместимость, если один и тот же репозиторий одновременно используется этими системами.

core.quotePath

Команды, выводящие пути (например, ls-files, diff), заключают «необычные» символы в имени пути в двойные кавычки и экранируют их обратными косыми чертами так же, как в языке C экранируются управляющие символы (например, \t для TAB, \n для LF, \\ для обратной косой черты), а также байты со значениями выше 0x80 (например, восьмеричная последовательность \302\265 для символа «микро» в UTF-8). Если для этой переменной задано значение false, байты выше 0x80 больше не считаются «необычными». Двойные кавычки, обратная косая черта и управляющие символы экранируются независимо от значения этой переменной. Обычный пробел не считается «необычным». Многие команды могут выводить имена путей без изменений с помощью параметра -z. По умолчанию значение равно true.

core.eol

Задаёт тип окончания строк, используемый в рабочем каталоге для файлов, помеченных как текстовые (либо атрибутом text, либо параметром text=auto, если Git автоматически распознаёт содержимое как текст). Допустимые значения: lf, crlf и native; последнее использует окончания строк, принятые на данной платформе. По умолчанию используется значение native. Дополнительные сведения о преобразовании окончаний строк см. в gitattributes[5]. Обратите внимание: это значение игнорируется, если для core.autocrlf задано значение true или 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; в этом случае полученный файл будет содержать CRLF, хотя исходный файл содержал LF. Однако в обоих рабочих деревьях окончания строк будут согласованными: либо все LF, либо все CRLF, но никогда не смешанными. Файл со смешанными окончаниями строк будет обнаружен механизмом core.safecrlf.

core.autocrlf

Установка для этой переменной значения «true» равносильна установке атрибута text в значение «auto» для всех файлов и установке core.eol в значение «crlf». Задайте значение true, если в рабочем каталоге вы хотите использовать окончания строк CRLF, а в репозитории используются LF. Этой переменной можно присвоить значение input; в этом случае преобразование при выводе не выполняется.

core.checkRoundtripEncoding

Список кодировок, разделённых запятыми и/или пробелами, для которых Git выполняет проверку обратного преобразования UTF-8, если они указаны в атрибуте working-tree-encoding (см. gitattributes[5]). По умолчанию используется значение SHIFT-JIS.

core.symlinks

Если значение равно false, символические ссылки извлекаются в виде небольших обычных файлов, содержащих текст ссылки. git-update-index[1] и git-add[1] не будут менять записанный тип на обычный файл. Полезно для файловых систем, таких как FAT, которые не поддерживают символические ссылки.

По умолчанию значение равно true, однако git-clone[1] или git-init[1] проверяют файловую систему и при создании репозитория устанавливают core.symlinks в false, если это необходимо.

core.gitProxy

«Прокси-команда», запускаемая (как command host port) вместо прямого подключения к удалённому серверу при получении данных по протоколу Git. Если значение переменной задано в формате «КОМАНДА для ДОМЕНА», команда применяется только к именам хостов, заканчивающимся указанной строкой домена. Эту переменную можно задавать несколько раз; значения проверяются в указанном порядке, и используется первое совпавшее.

Переопределяется переменной окружения GIT_PROXY_COMMAND (которая всегда применяется ко всем доменам без особой обработки «для»).

Специальную строку none можно использовать в качестве прокси-команды, чтобы указать, что для данного шаблона домена прокси использовать не следует. Это удобно, если нужно исключить серверы внутри межсетевого экрана из использования прокси, сохранив общий прокси по умолчанию для внешних доменов.

core.sshCommand

Если эта переменная задана, команды git fetch и git push будут использовать указанную команду вместо ssh при подключении к удалённой системе. Команда задаётся в том же формате, что и переменная окружения GIT_SSH_COMMAND, и переопределяется, если эта переменная окружения задана.

core.ignoreStat

Если значение равно true, Git не будет использовать вызовы lstat() для обнаружения изменений файлов, устанавливая бит «assume-unchanged» для отслеживаемых файлов, которые он одинаково обновил и в индексе, и в рабочем дереве.

Если файлы изменяются вне Git, пользователь должен будет явно подготовить изменённые файлы (например, см. раздел Examples в git-update-index[1]). Обычно Git не обнаруживает изменения таких файлов.

Это полезно в системах, где вызовы lstat() выполняются очень медленно, например CIFS/Microsoft Windows.

По умолчанию значение равно false.

core.preferSymlinkRefs

Вместо используемого по умолчанию формата «symref» для HEAD и других файлов символических ссылок на ссылки использовать символические ссылки файловой системы. Иногда это требуется для работы со старыми скриптами, которые ожидают, что HEAD будет символической ссылкой.

Эта настройка устарела и будет удалена в Git 3.0. Символические ссылки на ссылки всегда будут записываться в виде текстовых symref.

core.alternateRefsCommand

При объявлении указателей доступной истории из альтернативного репозитория используйте указанную команду оболочки вместо git-for-each-ref[1]. Первый аргумент — абсолютный путь к альтернативному репозиторию. Вывод должен содержать по одному шестнадцатеричному идентификатору объекта в каждой строке (то есть такой же, как вывод 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 = false), а все остальные репозитории считаются пустыми (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»); скорее всего, это ошибка конфигурации. При запуске команд Git в каталоге «/path/to» корнем рабочего дерева по-прежнему будет считаться «/different/path», что может привести к путанице, если вы не знаете, что делаете (например, создаёте в другом месте снимок того же индекса, доступный только для чтения, вместо обычного рабочего дерева репозитория).

core.lockfilePid

Если значение равно true, Git будет создавать PID-файл рядом с файлами блокировки. Если не удаётся получить блокировку и существует PID-файл, Git может предоставить дополнительные диагностические сведения о процессе, удерживающем блокировку, в том числе о том, продолжает ли он работать. По умолчанию — false.

Имя PID-файла образуется вставкой ~pid перед суффиксом .lock. Например, если файл блокировки называется index.lock, PID-файл будет называться index~pid.lock. Файл содержит одну строку в формате pid <value>, за которой следует символ новой строки.

core.logAllRefUpdates

Включает журнал ссылок (reflog). Обновления ссылки <ref> записываются в файл «$GIT_DIR/logs/<ref>»: в него добавляются новые и старые SHA-1, дата и время, а также причина обновления, но только если файл существует. Если для этой переменной конфигурации задано значение true, отсутствующий файл «$GIT_DIR/logs/<ref>» автоматически создаётся для вершин веток (то есть в refs/heads/), удалённых ссылок (то есть в refs/remotes/), ссылок на заметки (то есть в refs/notes/) и символической ссылки HEAD. Если задано значение always, отсутствующий журнал ссылок автоматически создаётся для любой ссылки в refs/.

Эти сведения можно использовать, чтобы определить, какой коммит был вершиной ветки «2 дня назад».

По умолчанию значение равно true в репозитории, связанном с рабочим каталогом, и false в пустом репозитории.

core.repositoryFormatVersion

Внутренняя переменная, определяющая формат репозитория и версию его структуры. См. gitrepository-layout[5].

core.sharedRepository

При group (или true) репозиторий становится общим для нескольких пользователей в группе (все файлы и объекты становятся доступными для записи группе). При all (или world или everybody) репозиторий будет доступен для чтения всем пользователям, а также общим для группы. При umask (или false) Git будет использовать права доступа, сообщённые umask(2). При 0xxx, где 0xxx — восьмеричное число, файлы в репозитории будут иметь это значение режима доступа. 0xxx переопределит значение umask пользователя (в то время как остальные параметры переопределяют только запрошенные части значения umask пользователя). Примеры: 0660 сделает репозиторий доступным для чтения и записи владельцу и группе, но недоступным для остальных (эквивалентно group, если, например, umask равен 0022). 0640 — это репозиторий, доступный группе для чтения, но не для записи. См. git-init[1]. По умолчанию — false.

core.warnAmbiguousRefs

Если значение равно true, Git предупредит вас, если переданное имя ссылки неоднозначно и может соответствовать нескольким ссылкам в репозитории. По умолчанию — true.

core.compression

Целое число от -1 до 9, задающее уровень сжатия по умолчанию. -1 — значение zlib по умолчанию. 0 означает отсутствие сжатия, а значения от 1 до 9 задают различные компромиссы между скоростью и размером; 9 — самое медленное. Если параметр задан, он служит значением по умолчанию для других переменных сжатия, таких как core.looseCompression и pack.compression.

core.looseCompression

Целое число от -1 до 9, задающее уровень сжатия объектов, не входящих в pack-файл. -1 — значение zlib по умолчанию. 0 означает отсутствие сжатия, а значения от 1 до 9 задают различные компромиссы между скоростью и размером; 9 — самое медленное. Если параметр не задан, используется значение core.compression. Если и оно не задано, используется 1 (максимальная скорость).

core.packedGitWindowSize

Количество байтов pack-файла, отображаемых в память за одну операцию отображения. Больший размер окна может позволить системе быстрее обрабатывать меньшее количество больших pack-файлов. Меньший размер окна отрицательно влияет на производительность из-за увеличения числа обращений к менеджеру памяти операционной системы, но может улучшить производительность при доступе к большому количеству больших pack-файлов.

По умолчанию — 1 MiB, если при компиляции был задан NO_MMAP; в противном случае — 32 MiB на 32-разрядных платформах и 1 GiB на 64-разрядных платформах. Это значение должно подходить всем пользователям и операционным системам. Скорее всего, корректировать его не потребуется.

Поддерживаются распространённые суффиксы единиц измерения: k, m или g.

core.packedGitLimit

Максимальное количество байтов из pack-файлов, одновременно отображаемых в память. Если для выполнения операции Git потребуется обратиться одновременно к большему объёму данных, он отменит отображение уже существующих областей, чтобы освободить виртуальное адресное пространство процесса.

По умолчанию — 256 MiB на 32-разрядных платформах и 32 TiB (фактически без ограничений) на 64-разрядных платформах. Это значение должно подходить всем пользователям и операционным системам, за исключением самых крупных проектов. Скорее всего, корректировать его не потребуется.

Поддерживаются распространённые суффиксы единиц измерения: k, m или g.

core.deltaBaseCacheLimit

Максимальное количество байтов на поток, выделяемое для кэширования базовых объектов, на которые могут ссылаться несколько объектов в дельта-формате. Храня в кэше целиком распакованные базовые объекты, Git может избежать повторной распаковки часто используемых базовых объектов.

По умолчанию — 96 MiB на всех платформах. Это значение должно подходить всем пользователям и операционным системам, за исключением самых крупных проектов. Скорее всего, корректировать его не потребуется.

Поддерживаются распространённые суффиксы единиц измерения: k, m или g.

core.bigFileThreshold

Размер файлов, считающихся «большими». Как описано ниже, это меняет поведение множества команд Git, а также способ хранения таких файлов в репозитории. Значение по умолчанию — 512 MiB. Поддерживаются распространённые суффиксы единиц измерения: k, m или g.

Файлы, размер которых превышает заданный предел:

  • Сохраняются в pack-файлах в сжатом виде, без попытки сжатия дельт.

    Предел по умолчанию выбран прежде всего с учётом этого варианта использования. Благодаря ему в большинстве проектов исходный код и другие текстовые файлы сжимаются в виде дельт, а крупные двоичные медиафайлы — нет.

    Хранение больших файлов без сжатия дельт позволяет избежать чрезмерного использования памяти ценой небольшого увеличения занимаемого на диске места.

  • Считаются помеченными как «двоичные» (см. 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[5]) в дополнение к .gitattributes (для каждого каталога) и .git/info/attributes. Значение по умолчанию — $XDG_CONFIG_HOME/git/attributes. Если $XDG_CONFIG_HOME не задана или пуста, вместо неё используется $HOME/.config/git/attributes.

core.hooksPath

По умолчанию Git ищет хуки в каталоге $GIT_DIR/hooks. Укажите здесь другой путь, например /etc/git/hooks, и Git будет искать хуки в этом каталоге, например /etc/git/hooks/pre-receive вместо $GIT_DIR/hooks/pre-receive.

Путь может быть абсолютным или относительным. Относительный путь отсчитывается от каталога, в котором запускаются хуки (см. раздел «DESCRIPTION» в githooks[5]).

Эта переменная конфигурации полезна, если вы хотите централизованно настраивать хуки Git, а не задавать их отдельно для каждого репозитория, либо использовать более гибкую централизованную альтернативу каталогу init.templateDir, в котором изменены хуки по умолчанию.

Также можно полностью отключить все хуки, задав для core.hooksPath значение /dev/null. Обычно это рекомендуется только опытным пользователям и для отдельных команд, с помощью параметров конфигурации вида git -c core.hooksPath=/dev/null ....

core.editor

Команды вроде commit и tag, позволяющие редактировать сообщения с помощью запуска редактора, используют значение этой переменной, если она задана, а переменная среды GIT_EDITOR не задана. См. git-var[1].

core.commentChar
core.commentString

Команды вроде commit и tag, позволяющие редактировать сообщения, считают строку комментарием, если она начинается с этого символа, и удаляют такие строки после завершения работы редактора (по умолчанию #).

Если задано значение "auto", git-commit выберет символ, с которого не начинается ни одна строка в существующих сообщениях коммитов. Поддержка этого значения считается устаревшей и будет удалена в Git 3.0 из-за следующих ограничений:

  • Несовместимо с добавлением комментариев в шаблон сообщения коммита. Сюда входят комментарии о конфликтах, добавляемые в сообщение коммита командами cherry-pick, merge, rebase и revert.

  • Несовместимо с добавлением комментариев в сообщение коммита в хуке prepare-commit-msg.

  • Несовместимо с командами fixup и squash при перебазировании.

  • Не учитывается командой git notes.

Обратите внимание, что эти две переменные являются псевдонимами друг друга, и в современных версиях Git можно использовать со значением commentChar строку (например, // или ⁑⁕⁑). Версии Git до v2.45.0 игнорируют commentString, но отклоняют значение commentChar, состоящее более чем из одного байта ASCII. Если вы планируете использовать конфигурацию со старыми и новыми версиями 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 не меняет её). Чтобы выборочно переопределить настройку LESS по умолчанию, можно задать для core.pager, например, значение less -S. Git передаст его оболочке, которая преобразует итоговую команду в LESS=FRX less -S. В среде параметр S не задан, но он передаётся в командной строке и указывает less обрезать длинные строки. Аналогично, задание для core.pager значения less -+F отключит в командной строке параметр F, заданный в среде, и деактивирует поведение less «выходить, если помещается на одном экране». Можно включать определённые флаги только для отдельных команд: например, задание для pager.blame значения less -S включает обрезку строк только для git blame.

Аналогично, если переменная среды LV не задана, Git устанавливает её в -c. Это значение можно переопределить, экспортировав LV с другим значением или задав для core.pager значение lv +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-eol и blank-at-eof.

  • cr-at-eol считает символ возврата каретки в конце строки частью её завершителя; то есть при включённом параметре trailing-space не срабатывает, если символ перед таким возвратом каретки не является пробельным (по умолчанию выключено).

  • incomplete-line считает ошибкой последнюю строку файла, если в конце отсутствует символ новой строки (по умолчанию выключено).

  • tabwidth=<n> задаёт количество позиций символов, занимаемых символом табуляции; это имеет значение для indent-with-non-tab и при исправлении Git ошибок tab-in-indent. Ширина табуляции по умолчанию — 8. Допустимые значения — от 1 до 63.

core.fsync

Список компонентов репозитория, разделённых запятыми, которые следует защитить с помощью core.fsyncMethod при создании или изменении. Чтобы отключить защиту компонента, добавьте перед ним -. Незащищённые компоненты могут быть потеряны при некорректном завершении работы системы. Если у вас нет особых требований, рекомендуется оставить этот параметр пустым или выбрать одно из значений: committed, added или all.

При обработке этой настройки набор компонентов начинается со значения по умолчанию для платформы; отключённые компоненты удаляются, а дополнительные добавляются. none сбрасывает состояние, игнорируя значение по умолчанию для платформы.

Пустая строка сбрасывает конфигурацию fsync до значения по умолчанию для платформы. На большинстве платформ значение по умолчанию эквивалентно core.fsync=committed,-loose-object: оно обеспечивает хорошую производительность, но при некорректном завершении работы системы есть риск потери последних изменений.

  • none очищает набор синхронизируемых компонентов.

  • loose-object защищает объекты, добавленные в репозиторий в виде отдельных объектов.

  • pack защищает объекты, добавленные в репозиторий в виде pack-файла.

  • pack-metadata защищает битовые карты и индексы pack-файлов.

  • commit-graph защищает файл графа коммитов.

  • index защищает индекс при его изменении.

  • objects — агрегированный параметр, эквивалентный loose-object,pack.

  • reference защищает ссылки, изменённые в репозитории.

  • derived-metadata — агрегированный параметр, эквивалентный pack-metadata,commit-graph.

  • committed — агрегированный параметр, в настоящее время эквивалентный objects. Этот режим снижает производительность, чтобы гарантировать защиту изменений, зафиксированных в репозитории с помощью git commit и подобных команд.

  • added — агрегированный параметр, в настоящее время эквивалентный committed,index. Этот режим ещё сильнее снижает производительность, чтобы гарантировать защиту результатов таких команд, как git add, и подобных операций.

  • all — агрегированный параметр, выполняющий синхронизацию всех перечисленных выше отдельных компонентов.

core.fsyncMethod

Значение, указывающее стратегию, которую Git будет использовать для защиты данных репозитория с помощью fsync и связанных примитивов.

  • fsync использует системный вызов fsync() или его аналог на платформе.

  • writeout-only отправляет запросы на запись страниц кэша, но в зависимости от файловой системы и оборудования хранения данные, добавленные в репозиторий, могут не сохраниться при сбое системы. Это режим по умолчанию в macOS.

  • batch включает режим, в котором для подготовки нескольких обновлений в кэше обратной записи на диск используется только сброс с записью, а в конце операции выполняется полный fsync фиктивного файла, чтобы инициировать сброс кэша диска.

    В настоящее время режим batch применяется только к файлам отдельных объектов. Остальные данные репозитория сохраняются так же надёжно, как если бы был указан параметр fsync. Ожидается, что этот режим столь же безопасен, как fsync, для репозиториев в macOS, хранящихся в файловых системах HFS+ или APFS, и в Windows — в файловых системах NTFS или ReFS.

core.fsyncObjectFiles

Этот логический параметр включает fsync() при записи файлов объектов. Настройка устарела. Вместо неё используйте core.fsync.

Эта настройка влияет на данные, добавляемые в репозиторий Git в виде отдельных объектов. Если значение равно true, Git выполнит fsync или аналогичный системный вызов для сброса кэшей, чтобы отдельные объекты сохраняли целостность при некорректном завершении работы системы.

core.preloadIndex

Включает параллельную предварительную загрузку индекса для таких операций, как git diff

Это может ускорить такие операции, как git diff и git status, особенно в файловых системах вроде NFS, для которых характерно слабое кэширование и, следовательно, относительно высокая задержка операций ввода-вывода. Если параметр включён, Git будет параллельно сравнивать индекс с данными файловой системы, позволяя выполнять операции ввода-вывода одновременно. По умолчанию — true.

core.unsetenvvars

Только для Windows: список имён переменных среды, разделённых запятыми, которые необходимо удалить перед запуском любого другого процесса. По умолчанию — PERL5LIB, поскольку Git for Windows настаивает на использовании собственного интерпретатора Perl.

core.createObject

Можно задать значение link; в этом случае для гарантии того, что создание объекта не перезапишет существующие объекты, создаётся жёсткая ссылка, а затем удаляется исходный файл.

В некоторых сочетаниях файловой системы и операционной системы этот способ ненадёжен. В таких случаях задайте для этой настройки значение rename; однако это отключит проверку, гарантирующую, что существующие файлы объектов не будут перезаписаны.

core.notesRef

При отображении сообщений коммитов также показывать заметки, хранящиеся в указанной ссылке. Ссылка должна быть полностью квалифицированной. Если указанная ссылка не существует, это не считается ошибкой, а означает, что заметки выводить не нужно.

По умолчанию используется "refs/notes/commits"; значение можно переопределить переменной среды GIT_NOTES_REF. См. git-notes[1].

core.commitGraph

Если значение равно true, Git будет читать файл графа коммитов (если он существует), чтобы разобрать структуру графа коммитов. По умолчанию — true. Дополнительные сведения см. в git-commit-graph[1].

core.useReplaceRefs

Если задано значение false, ведёт себя так, как если бы в командной строке был указан параметр --no-replace-objects. Дополнительные сведения см. в git[1] и git-replace[1].

core.multiPackIndex

Использовать файл multi-pack-index для отслеживания нескольких pack-файлов с помощью одного индекса. Дополнительные сведения см. в git-multi-pack-index[1]. По умолчанию — true.

core.sparseCheckout

Включить функцию «разреженной выгрузки». Дополнительные сведения см. в git-sparse-checkout[1].

core.sparseCheckoutCone

Включает «конический режим» функции разреженной выгрузки. Если файл 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

При получении учётных данных считать компонент "path" URL-адреса http или https значимым. По умолчанию — false. Дополнительные сведения см. в gitcredentials[7].

credential.sanitizePrompt

По умолчанию в именах пользователей и узлов, отображаемых в запросе пароля, не допускаются управляющие символы (по умолчанию они кодируются в формате URL). Чтобы изменить это поведение, задайте для этого параметра значение false.

credential.protectProtocol

По умолчанию в протоколе, используемом Git при взаимодействии со вспомогательной программой для работы с учётными данными, не допускаются символы возврата каретки. Эта настройка позволяет переопределить значение по умолчанию.

credential.username

Если для сетевой аутентификации не задано имя пользователя, использовать это имя по умолчанию. См. credential.<context>.* ниже и gitcredentials[7].

credential.<url>.*

Любые из перечисленных выше параметров credential.* можно применять выборочно к отдельным учётным данным. Например, параметр "credential.https://example.com.username" задаёт имя пользователя по умолчанию только для подключений по https к example.com. Подробности о сопоставлении URL-адресов см. в gitcredentials[7].

credentialCache.ignoreSIGHUP

Указывает git-credential-cache—​daemon игнорировать SIGHUP, а не завершать работу.

credentialStore.lockTimeoutMS

Время в миллисекундах, в течение которого git-credential-store повторяет попытки при блокировке файла учётных данных. Значение 0 означает, что повторные попытки не выполняются; -1 означает, что попытки выполняются бесконечно. Значение по умолчанию — 1000 (то есть повторять попытки в течение 1 с).

diff.autoRefreshIndex

При использовании git diff для сравнения с файлами рабочего дерева не считать изменениями изменения только в stat. Вместо этого незаметно выполнять git update-index --refresh, чтобы обновлять кэшированную информацию stat для путей, содержимое которых в рабочем дереве совпадает с содержимым в индексе. По умолчанию этот параметр имеет значение true. Обратите внимание: это влияет только на Porcelain-команды git diff, но не на низкоуровневые команды diff, такие как git diff-files.

diff.dirstat

Разделённый запятыми список параметров --dirstat, задающих поведение по умолчанию параметра --dirstat для git-diff[1] и подобных команд. Значения по умолчанию можно переопределить в командной строке (с помощью --dirstat=<param>,...). Резервные значения по умолчанию (если они не изменены параметром diff.dirstat) — changes,noncumulative,3. Доступны следующие параметры:

changes

Вычислять значения dirstat, подсчитывая строки, удалённые из исходного файла или добавленные в целевой. При этом не учитывается объём перемещения фрагментов кода внутри файла. Другими словами, перестановка строк в файле учитывается меньше, чем остальные изменения. Это поведение по умолчанию, если параметр не указан.

lines

Вычислять значения dirstat с помощью обычного построчного анализа diff и суммировать количество удалённых и добавленных строк. (Для бинарных файлов вместо этого подсчитываются блоки по 64 байта, поскольку у бинарных файлов нет естественного понятия строк.) Это поведение --dirstat требует больше вычислительных ресурсов, чем поведение changes, но учитывает переставленные строки внутри файла так же, как и остальные изменения. Результат согласуется с выводом, получаемым при использовании других параметров --*stat.

files

Вычислять значения dirstat, подсчитывая количество изменённых файлов. В анализе dirstat каждый изменённый файл имеет одинаковый вес. Это поведение --dirstat требует наименьших вычислительных ресурсов, поскольку содержимое файлов вообще не анализируется.

cumulative

Учитывать изменения во вложенном каталоге также и для родительского каталога. Обратите внимание: при использовании cumulative сумма указанных процентов может превышать 100%. Поведение по умолчанию (без накопления) можно задать параметром noncumulative.

<limit>

Целочисленный параметр задаёт процентный порог (по умолчанию 3%). Каталоги, на долю которых приходится меньше этого процента изменений, не отображаются в выводе.

Пример: следующая команда подсчитает изменённые файлы, игнорируя каталоги, на которые приходится менее 10% от общего количества изменённых файлов, и суммируя количество изменений во вложенных каталогах для родительских каталогов: files,10,cumulative.

diff.statNameWidth

Ограничить ширину части с именем файла в выводе --stat. Если задан, параметр применяется ко всем командам, формирующим вывод --stat, кроме format-patch.

diff.statGraphWidth

Ограничить ширину части с графиком в выводе --stat. Если задан, параметр применяется ко всем командам, формирующим вывод --stat, кроме format-patch.

diff.context

Формировать diff с <n> строками контекста вместо значения по умолчанию, равного 3. Это значение переопределяется параметром -U.

diff.interHunkContext

Показывать контекст между фрагментами diff, добавляя указанное количество строк и объединяя таким образом близко расположенные фрагменты. Это значение используется по умолчанию для параметра командной строки --inter-hunk-context.

diff.external

Если эта переменная конфигурации задана, diff формируется не с помощью встроенных средств Git, а указанной командой. Значение можно переопределить переменной окружения GIT_EXTERNAL_DIFF. Команда вызывается с параметрами, описанными в разделе «Git Diffs» справки git[1]. Примечание: если требуется использовать внешнюю программу diff только для части файлов, вместо этого можно воспользоваться gitattributes[5].

diff.trustExitCode

Если этому логическому параметру присвоено значение true, команда diff.external должна возвращать код завершения 0, если считает входные файлы одинаковыми, или 1, если считает их различными, как diff(1). Если параметру присвоено значение false (по умолчанию), команда должна возвращать код завершения 0 независимо от того, одинаковы ли файлы. Любой другой код завершения приводит к сообщению Git о фатальной ошибке.

diff.ignoreSubmodules

Задаёт значение по умолчанию для --ignore-submodules. Обратите внимание: это влияет только на Porcelain-команды git diff, но не на низкоуровневые команды diff, такие как git diff-files. При отображении незакоммиченных изменений этот параметр также учитывают команды git checkout и git switch. Если задать значение all, сводка по подмодулям, обычно отображаемая командами git commit и git status при установленном параметре status.submoduleSummary, будет отключена, если только это не переопределено параметром командной строки --ignore-submodules. На команды git submodule этот параметр не влияет. По умолчанию задано значение untracked, поэтому все неотслеживаемые подмодули игнорируются.

diff.mnemonicPrefix

Если параметр задан, git diff использует пару префиксов, отличающуюся от стандартных a/ и b/ в зависимости от сравниваемых объектов. При включённой конфигурации в обратном выводе diff порядок префиксов также меняется на противоположный:

git diff

сравнивает индекс (i) и рабочее дерево (w);

git diff HEAD

сравнивает коммит (c) и рабочее дерево (w);

git diff --cached

сравнивает коммит (c) и индекс (i);

git diff HEAD:<file1> <file2>

сравнивает объект (o) и сущность рабочего дерева (w);

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

сравнивает два объекта, не относящихся к Git, <a> и <b>.

diff.noPrefix

Если параметр задан, git diff не отображает префиксы исходного и целевого файлов.

diff.srcPrefix

Если параметр задан, git diff использует указанный префикс исходного файла. По умолчанию используется a/.

diff.dstPrefix

Если параметр задан, git diff использует указанный префикс целевого файла. По умолчанию используется b/.

diff.relative

Если параметру присвоено значение true, git diff не показывает изменения за пределами каталога и выводит пути относительно текущего каталога.

diff.orderFile

Файл, задающий порядок файлов в diff. Подробности см. в описании параметра -O команды git-diff[1]. Если diff.orderFile — относительный путь, он считается относительно корня рабочего дерева.

diff.renameLimit

Количество файлов, рассматриваемых при полном поиске копирований и переименований; эквивалент параметра git diff -l. Если значение не задано, в настоящее время по умолчанию используется 1000. Эта настройка не действует, если поиск переименований отключён.

diff.renames

Определяет, выполняет ли Git поиск переименований и каким образом. Если задано значение false, поиск переименований отключён. Если задано значение true, включён базовый поиск переименований. Если задано значение copies или copy, Git также выполняет поиск копирований. По умолчанию используется true. Обратите внимание: это влияет только на Porcelain-команды git diff, такие как git-diff[1] и git-log[1], но не на низкоуровневые команды, например git-diff-files[1].

diff.suppressBlankEmpty

Логический параметр, отключающий стандартное поведение — вывод пробела перед каждой пустой строкой вывода. По умолчанию имеет значение false.

diff.submodule

Задаёт формат отображения различий в подмодулях. Формат short показывает только имена коммитов в начале и в конце диапазона. Формат log перечисляет коммиты в диапазоне так же, как это делает summary команды git-submodule[1]. Формат diff показывает встроенный diff изменённого содержимого подмодуля. По умолчанию используется short.

diff.wordRegex

Расширенное регулярное выражение POSIX, используемое для определения того, что считать «словом» при вычислении различий пословно. Последовательности символов, соответствующие регулярному выражению, являются «словами», все остальные символы считаются игнорируемыми пробельными символами.

diff.<driver>.command

Команда пользовательского драйвера diff. Подробности см. в gitattributes[5].

diff.<driver>.trustExitCode

Если этому логическому параметру присвоено значение true, команда diff.<driver>.command должна возвращать код завершения 0, если считает входные файлы одинаковыми, или 1, если считает их различными, как diff(1). Если параметру присвоено значение false (по умолчанию), команда должна возвращать код завершения 0 независимо от того, одинаковы ли файлы. Любой другой код завершения приводит к сообщению Git о фатальной ошибке.

diff.<driver>.xfuncname

Регулярное выражение, которое драйвер diff должен использовать для распознавания заголовка фрагмента. Также можно использовать встроенный шаблон. Подробности см. в gitattributes[5].

diff.<driver>.binary

Задайте этому параметру значение true, чтобы драйвер diff считал файлы бинарными. Подробности см. в gitattributes[5].

diff.<driver>.textconv

Команда, которую драйвер diff должен вызывать для создания преобразованной в текст версии файла. Результат преобразования используется для формирования удобочитаемого diff. Подробности см. в gitattributes[5].

diff.<driver>.wordRegex

Регулярное выражение, которое драйвер diff должен использовать для разделения слов в строке. Подробности см. в gitattributes[5].

diff.<driver>.cachetextconv

Задайте этому параметру значение true, чтобы драйвер diff кэшировал результаты преобразования текста. Подробности см. в gitattributes[5].

diff.indentHeuristic

Задайте этому параметру значение false, чтобы отключить эвристики, включённые по умолчанию и сдвигающие границы фрагментов diff для повышения удобочитаемости патчей.

diff.algorithm

Выбрать алгоритм diff. Доступны следующие варианты:

default
myers

Базовый жадный алгоритм diff. В настоящее время используется по умолчанию.

minimal

Затратить дополнительное время, чтобы гарантировать создание минимально возможного diff.

patience

При создании патчей использовать алгоритм «patience diff».

histogram

Этот алгоритм расширяет алгоритм patience, «поддерживая общие элементы с низкой частотой встречаемости».

diff.wsErrorHighlight

Подсвечивать ошибки в пробельных символах в строках diff context, old или new. Несколько значений разделяются запятыми; none сбрасывает предыдущие значения, default сбрасывает список до new, а all — сокращение для old,new,context. Ошибки в пробельных символах выделяются цветом color.diff.whitespace. Параметр командной строки --ws-error-highlight=<kind> переопределяет эту настройку.

diff.colorMoved

Если задано допустимое значение <mode> или значение true, перемещённые строки в diff окрашиваются иначе. Описание допустимых режимов см. в --color-moved в справке git-diff[1]. Если задано просто значение true, используется цветовой режим по умолчанию. Если задано значение false, перемещённые строки не окрашиваются.

diff.colorMovedWS

Если перемещённые строки окрашиваются, например, с помощью настройки diff.colorMoved, этот параметр определяет режим обработки пробелов. Описание допустимых режимов см. в --color-moved-ws в справке git-diff[1].

diff.tool

Управляет выбором инструмента diff, используемого командой git-difftool[1]. Эта переменная переопределяет значение, настроенное в merge.tool. В списке ниже приведены допустимые встроенные значения. Любое другое значение рассматривается как пользовательский инструмент diff и требует определения соответствующей переменной difftool.<tool>.cmd.

diff.guitool

Управляет выбором инструмента diff, используемого командой git-difftool[1], если указан флаг -g/--gui. Эта переменная переопределяет значение, настроенное в merge.guitool. В списке ниже приведены допустимые встроенные значения. Любое другое значение рассматривается как пользовательский инструмент diff и требует определения соответствующей переменной 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

Задаёт команду для вызова указанного инструмента diff. Указанная команда выполняется в оболочке; доступны следующие переменные: LOCAL содержит имя временного файла с содержимым исходного образа diff, а REMOTE содержит имя временного файла с содержимым конечного образа diff.

Подробнее см. описание параметра --tool=<tool> в справке git-difftool[1].

difftool.<tool>.path

Переопределяет путь к указанному инструменту. Полезно, если инструмент не находится в PATH.

difftool.trustExitCode

Завершать difftool, если вызванный инструмент diff возвращает ненулевой статус завершения.

Подробнее см. описание параметра --trust-exit-code в справке git-difftool[1].

difftool.prompt

Запрашивать подтверждение перед каждым вызовом инструмента diff.

difftool.guiDefault

Задайте значение true, чтобы по умолчанию использовать diff.guitool (эквивалентно указанию аргумента --gui), или auto, чтобы выбирать diff.guitool или diff.tool в зависимости от наличия значения переменной окружения DISPLAY. По умолчанию используется значение false; в этом случае аргумент --gui необходимо указать явно, чтобы использовать diff.guitool.

extensions.*

Если не указано иное, указывать расширение нельзя, если core.repositoryFormatVersion не равно 1. См. gitrepository-layout[5].

compatObjectFormat

Указывает алгоритм хеширования для обеспечения совместимости. Допустимые значения: sha1 и sha256. Указанное значение должно отличаться от значения extensions.objectFormat. Это позволяет обеспечить взаимодействие на клиентском уровне между репозиториями Git, у которых objectFormat совпадает с этим compatObjectFormat. В частности, после полной реализации станет возможна отправка изменений в репозиторий и получение изменений из репозитория, у которого objectFormat совпадает с compatObjectFormat. Кроме того, можно будет использовать идентификаторы объектов (oid), закодированные в compatObjectFormat, наряду с oid, закодированными в objectFormat, для указания объектов в локальном репозитории.

Обратите внимание: функциональность, включаемая этим расширением, реализована не полностью и может измениться. В настоящее время она существует только для разработки и тестирования базовой функции и не предназначена для использования конечными пользователями.

noop

Это расширение никак не изменяет поведение Git. Оно полезно только для тестирования совместимости с форматом 1.

По историческим причинам это расширение учитывается независимо от настройки core.repositoryFormatVersion.

noop-v1

Это расширение никак не изменяет поведение Git. Оно полезно только для тестирования совместимости с форматом 1.

objectFormat

Указывает используемый алгоритм хеширования. Допустимые значения: sha1 и sha256. Если значение не указано, используется sha1.

Обратите внимание: эту настройку должны задавать только git-init[1] или git-clone[1]. Попытка изменить ее после инициализации не сработает и приведет к проблемам, которые трудно диагностировать.

partialClone

Если включено, указывает, что репозиторий был создан с частичным клонированием (или позднее получил данные посредством частичной выборки) и что удаленный репозиторий мог не отправить некоторые ненужные объекты. Такой удаленный репозиторий называется «promisor remote» и гарантирует, что все пропущенные объекты можно будет получить из него в будущем.

Значением этого ключа является имя promisor remote.

По историческим причинам это расширение учитывается независимо от настройки core.repositoryFormatVersion.

preciousObjects

Если включено, указывает, что объекты в репозитории НЕЛЬЗЯ удалять (например, с помощью git-prune или git repack -d).

По историческим причинам это расширение учитывается независимо от настройки core.repositoryFormatVersion.

refStorage

Указывает формат хранения ссылок и соответствующую полезную нагрузку. Значением может быть имя формата или URI:

  • Только имя формата (например, reftable или files).

  • URI в формате <format>://<payload> явно указывает и формат, и полезную нагрузку (например, reftable:///foo/bar).

Поддерживаются следующие имена форматов:

files

для отдельных файлов с packed-refs. Это формат по умолчанию.

reftable

для формата reftable.

Полезная нагрузка передается непосредственно серверной части ссылок. Для серверных частей files и reftable она должна быть путем в файловой системе, где будут храниться ссылки. Если полезная нагрузка не указана, используется commondir. Относительные пути разрешаются относительно $GIT_DIR. В будущем другие серверные части могут поддерживать иные схемы полезной нагрузки, например postgres://127.0.0.1:5432?database=myrepo.

Обратите внимание: эту настройку должны задавать только git-init[1] или git-clone[1]. Попытка изменить ее после инициализации не сработает и приведет к проблемам, которые трудно диагностировать.

relativeWorktrees

Если включено, указывает, что как минимум одно рабочее дерево связано с использованием относительных путей. Настройка включается автоматически, если рабочее дерево было создано или восстановлено с параметром --relative-paths либо если для параметра конфигурации worktree.useRelativePaths задано значение true.

submodulePathConfig

Это расширение предназначено для небольшого числа пользователей, которые:

  • сталкиваются с ошибками вида refusing to create ... in another submodule's git dir по разным причинам, например из-за конфликтов в файловых системах без учета регистра при создании модулей с именами foo и Foo.

  • нуждаются в более гибкой структуре подмодулей, например из-за вложенных имен вроде foo, foo/bar и foo/baz, которые не поддерживаются стандартным механизмом gitdir, использующим расположения вида .git/modules/<plain-name> и вызывающим дополнительные конфликты.

Если включено extensions.submodulePathConfig, конфигурация submodule.<name>.gitdir становится единственным источником достоверной информации обо всех путях gitdir подмодулей и автоматически задается для всех новых подмодулей при клонировании и инициализации.

Git выдаст ошибку, если для модуля не задан соответствующий параметр submodule.<name>.gitdir.

Существующие подмодули (созданные до появления расширения) необходимо перенести, добавив отсутствующие записи конфигурации. Это можно сделать вручную, например для каждого подмодуля: git config submodule.<name>.gitdir .git/modules/<name>, или с помощью команды git submodule--helper migrate-gitdir-configs, которая проходит по всем подмодулям и пытается перенести их.

Расширение можно автоматически включать для новых репозиториев, задав для init.defaultSubmodulePathConfig значение true, например выполнив git config --global init.defaultSubmodulePathConfig true.

worktreeConfig

Если включено, рабочие деревья будут загружать настройки конфигурации из файла $GIT_DIR/config.worktree в дополнение к файлу $GIT_COMMON_DIR/config. Обратите внимание: для основного рабочего дерева $GIT_COMMON_DIR и $GIT_DIR совпадают, тогда как для других рабочих деревьев $GIT_DIR имеет значение $GIT_COMMON_DIR/worktrees/<id>/. Настройки в файле config.worktree имеют приоритет над настройками из любых других файлов конфигурации.

При включении этого расширения необходимо переместить некоторые параметры из общего файла конфигурации в файл config.worktree основного рабочего дерева, если он существует:

  • core.worktree необходимо переместить из $GIT_COMMON_DIR/config в $GIT_COMMON_DIR/config.worktree.

  • Если core.bare имеет значение true, его необходимо переместить из $GIT_COMMON_DIR/config в $GIT_COMMON_DIR/config.worktree.

В зависимости от того, хотите ли вы настраивать параметры разреженного извлечения отдельно для каждого рабочего дерева, также может быть полезно изменить расположение core.sparseCheckout и core.sparseCheckoutCone. По умолчанию встроенная команда git sparse-checkout включает это расширение, задает эти значения конфигурации отдельно для каждого рабочего дерева и использует файл $GIT_DIR/info/sparse-checkout, чтобы независимо указывать разреженность для каждого рабочего дерева. Дополнительные сведения см. в git-sparse-checkout[1].

По историческим причинам это расширение учитывается независимо от настройки core.repositoryFormatVersion.

fastimport.unpackLimit

Если число объектов, импортированных с помощью git-fast-import[1], меньше этого предела, объекты будут распакованы в отдельные файлы объектов. Если же число импортированных объектов равно этому пределу или превышает его, пакет будет сохранен как pack-файл. Сохранение пакета, созданного fast-import, может ускорить завершение операции импорта, особенно в медленных файловых системах. Если параметр не задан, вместо него используется значение transfer.unpackLimit.

feature.*

Параметры конфигурации, начинающиеся с feature., изменяют значения по умолчанию для группы других параметров конфигурации. Эти группы создаются сообществом разработчиков Git как рекомендуемые настройки по умолчанию и могут изменяться. В частности, могут добавляться новые параметры конфигурации с другими значениями по умолчанию.

feature.experimental

Включает параметры конфигурации, недавно появившиеся в Git и рассматриваемые в качестве настроек по умолчанию в будущем. Параметры конфигурации из этой группы могут добавляться или удаляться в каждом выпуске, в том числе в минорных обновлениях. Из-за новизны этих параметров возможны непредвиденные взаимодействия между ними. Включите эту настройку, если хотите оставить отзыв об экспериментальных функциях. Новые значения по умолчанию:

  • fetch.negotiationAlgorithm=skipping может ускорить согласование при получении данных, пропуская за раз больше коммитов и сокращая число циклов обмена данными.

  • pack.useBitmapBoundaryTraversal=true может ускорить обход bitmap, обрабатывая меньше объектов.

  • pack.allowPackReuse=multi может сократить время создания пакета за счет повторного использования объектов из нескольких пакетов, а не только из одного.

  • pack.usePathWalk может ускорить создание pack-файлов и значительно уменьшить их размер при наличии определенных совпадений имен файлов с хешем имен по умолчанию в Git.

  • init.defaultRefFormat=reftable приводит к тому, что в новых инициализированных репозиториях для хранения ссылок используется формат reftable. Этот новый формат решает проблемы с файловыми системами без учета регистра, обеспечивает лучшее сжатие и значительно повышает производительность во многих сценариях. Дополнительные сведения об этом новом формате хранения см. в Documentation/technical/reftable.adoc.

feature.manyFiles

Включает параметры конфигурации, оптимизирующие работу с репозиториями, в рабочем каталоге которых много файлов. При большом количестве файлов такие команды, как git status и git checkout, могут работать медленно; новые значения по умолчанию повышают производительность:

  • index.skipHash=true ускоряет запись индекса, не вычисляя завершающую контрольную сумму. Обратите внимание: из-за этого версии Git до 2.13.0 откажутся разбирать индекс, а версии Git до 2.40.0 сообщат о повреждении индекса при выполнении git fsck.

  • index.version=4 включает сжатие префиксов путей в индексе.

  • core.untrackedCache=true включает кэш неотслеживаемых файлов. Эта настройка предполагает, что mtime на вашем компьютере работает корректно.

fetch.recurseSubmodules

Этот параметр управляет тем, будет ли git fetch (и лежащая в его основе операция получения данных в git pull) рекурсивно получать данные для заполненных подмодулей. Параметру можно задать логическое значение или значение on-demand. Если задано логическое значение, команда fetch и pull при значении true безусловно рекурсивно обрабатывает подмодули, а при значении false не выполняет рекурсию. Если задано значение on-demand, команды fetch и pull выполняют рекурсию в заполненный подмодуль, только если суперпроект получает коммит, обновляющий ссылку подмодуля. По умолчанию используется значение on-demand или значение submodule.recurse, если оно задано.

fetch.fsckObjects

Если установлено значение true, git-fetch-pack проверит все полученные объекты. О том, что именно проверяется, см. в transfer.fsckObjects. По умолчанию используется значение false. Если параметр не задан, вместо него используется значение transfer.fsckObjects.

fetch.fsck.<msg-id>

Работает как fsck.<msg-id>, но используется командой git-fetch-pack[1], а не git-fsck[1]. Подробности см. в документации к fsck.<msg-id>.

fetch.fsck.skipList

Работает как fsck.skipList, но используется командой git-fetch-pack[1], а не git-fsck[1]. Подробности см. в документации к fsck.skipList.

fetch.unpackLimit

Если число объектов, полученных по встроенному протоколу передачи Git, меньше этого предела, объекты будут распакованы в отдельные файлы объектов. Если число полученных объектов равно этому пределу или превышает его, полученный пакет будет сохранен как pack-файл после добавления всех отсутствующих базовых дельт. Сохранение пакета при отправке данных может ускорить завершение операции отправки, особенно в медленных файловых системах. Если параметр не задан, вместо него используется значение transfer.unpackLimit.

fetch.prune

Если значение равно true, команда fetch будет автоматически вести себя так, как если бы в командной строке был указан параметр --prune. См. также remote.<name>.prune и раздел «ОБРЕЗКА» в git-fetch[1].

fetch.pruneTags

Если значение равно true, при очистке команда fetch будет автоматически вести себя так, как если бы был указан refspec refs/tags/*:refs/tags/*, если он еще не задан. Это позволяет задать одновременно этот параметр и fetch.prune, чтобы поддерживать соответствие ссылок upstream один к одному. См. также remote.<name>.pruneTags и раздел «ОБРЕЗКА» в git-fetch[1].

fetch.all

Если значение равно true, команда fetch попытается обновить все доступные удаленные репозитории. Это поведение можно переопределить, передав --no-all или явно указав один или несколько удаленных репозиториев для получения данных. По умолчанию используется значение false.

fetch.output

Управляет выводом состояния обновления ссылок. Допустимые значения: full и compact. Значение по умолчанию — full. Подробности см. в разделе «ВЫВОД» в git-fetch[1].

fetch.negotiationAlgorithm

Управляет отправкой сведений о коммитах в локальном репозитории при согласовании содержимого pack-файла, который должен отправить сервер. Задайте значение consecutive, чтобы использовать алгоритм, который последовательно обходит коммиты и проверяет каждый из них. Задайте значение skipping, чтобы использовать алгоритм, пропускающий коммиты для более быстрого схождения, но способный привести к созданию pack-файла большего размера, чем необходимо. Задайте значение noop, чтобы вообще не отправлять никаких сведений: это почти наверняка приведет к созданию pack-файла большего размера, чем необходимо, но позволит пропустить этап согласования. Задайте значение default, чтобы отменить ранее заданные настройки и использовать поведение по умолчанию. Обычно по умолчанию используется значение consecutive, но если feature.experimental имеет значение true, по умолчанию используется значение skipping. Если задано неизвестное значение, команда git fetch завершится с ошибкой.

См. также параметры --negotiate-only и --negotiation-restrict команды git-fetch[1].

fetch.showForcedUpdates

Задайте значение false, чтобы включить --no-show-forced-updates в командах git-fetch[1] и git-pull[1]. По умолчанию используется значение true.

fetch.parallel

Указывает максимальное число операций получения данных, выполняемых одновременно (для подмодулей или удаленных репозиториев, если действует параметр --multiple команды git-fetch[1]).

Значение 0 означает использование подходящего значения по умолчанию. Если параметр не задан, по умолчанию используется значение 1.

Для подмодулей эту настройку можно переопределить с помощью параметра конфигурации submodule.fetchJobs.

fetch.writeCommitGraph

Задайте значение true, чтобы после каждой команды git fetch, загружающей pack-файл с удаленного репозитория, записывать граф коммитов. При использовании параметра --split в большинстве случаев поверх существующих файлов графа коммитов будет создаваться очень небольшой файл. Иногда эти файлы будут объединяться, и запись может занять больше времени. Обновленный файл графа коммитов повышает производительность многих команд Git, включая git merge-base, git push -f и git log --graph. По умолчанию используется значение false.

fetch.bundleURI

В этом значении хранится URI для загрузки данных об объектах Git из bundle URI перед выполнением инкрементальной выборки с исходного сервера Git. Это аналогично работе параметра --bundle-uri команды git-clone[1]. Команда git clone --bundle-uri задаст значение fetch.bundleURI, если в переданном bundle URI содержится список пакетов, организованный для инкрементальной выборки.

Если изменить это значение, а в репозитории задано значение fetch.bundleCreationToken, удалите это значение fetch.bundleCreationToken, прежде чем получать данные из нового bundle URI.

fetch.bundleCreationToken

При инкрементальном получении данных с помощью fetch.bundleURI из списка пакетов, использующего эвристику «creationToken», в этом значении конфигурации хранится максимальное значение creationToken среди загруженных пакетов. Это значение позволяет избежать загрузки пакетов в будущем, если объявленное значение creationToken не превышает его.

Значения токена создания выбирает поставщик, обслуживающий конкретный bundle URI. Если изменить URI в параметре fetch.bundleURI, перед получением данных обязательно удалите значение параметра fetch.bundleCreationToken.

filter.<driver>.clean

Команда, используемая для преобразования содержимого файла рабочего дерева в blob при добавлении файла в индекс. Подробности см. в gitattributes[5].

filter.<driver>.smudge

Команда, используемая для преобразования содержимого объекта blob в файл рабочего дерева при извлечении файла. Подробности см. в gitattributes[5].

format.attach

Включает вложения multipart/mixed по умолчанию для format-patch. Значением также может быть строка в двойных кавычках: в этом случае вложения будут включены по умолчанию, а указанное значение будет использовано как разделитель. См. параметр --attach команды git-format-patch[1]. Чтобы отменить ранее заданное значение, задайте пустую строку.

format.from

Задает значение по умолчанию для параметра --from команды format-patch. Принимает логическое значение либо имя и адрес электронной почты. Если значение равно false, по умолчанию format-patch использует --no-from и непосредственно указывает авторов коммитов в поле «From:» писем с патчами. Если значение равно true, по умолчанию format-patch использует --from, указывая в поле «From:» писем с патчами ваши данные коммитера и добавляя в тело письма поле «From:», если данные отличаются. Если задано значение, не являющееся логическим, format-patch использует его вместо данных коммитера. По умолчанию используется значение false.

format.forceInBodyFrom

Задает значение по умолчанию для параметра --[no-]force-in-body-from команды format-patch. По умолчанию используется значение false.

format.numbered

Логическое значение, которое включает или отключает порядковые номера в темах писем с патчами. По умолчанию используется значение «auto»: нумерация включается, только если патчей больше одного. Ее можно включить или отключить для всех сообщений, задав значение «true» или «false». См. параметр --numbered команды git-format-patch[1].

format.headers

Дополнительные заголовки электронной почты, включаемые в отправляемый по почте патч. См. git-format-patch[1].

format.to
format.cc

Дополнительные получатели, включаемые в отправляемый по почте патч. См. параметры --to и --cc команды git-format-patch[1].

format.subjectPrefix

По умолчанию format-patch создает файлы с префиксом темы [PATCH]. Используйте эту переменную, чтобы изменить префикс.

format.coverFromDescription

Режим по умолчанию, определяющий, какие части сопроводительного письма будут заполнены описанием ветки при использовании format-patch. См. параметр --cover-from-description команды git-format-patch[1].

format.signature

По умолчанию format-patch выводит подпись с номером версии Git. Используйте эту переменную, чтобы изменить значение по умолчанию. Задайте для этой переменной пустую строку ("") , чтобы отключить создание подписи.

format.signatureFile

Работает так же, как format.signature, но в качестве подписи используется содержимое файла, указанного этой переменной.

format.suffix

По умолчанию format-patch создает файлы с суффиксом .patch. Используйте эту переменную, чтобы изменить суффикс (если требуется, не забудьте включить точку).

format.encodeEmailHeaders

Кодирует заголовки электронной почты с символами, отличными от ASCII, с помощью «Q-кодирования» (описанного в RFC 2047) для передачи по электронной почте. По умолчанию используется значение true.

format.pretty

Формат pretty по умолчанию для команд log/show/whatchanged. См. 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

Логическое значение, позволяющее включить по умолчанию параметр -s/--signoff команды format-patch. Примечание: добавление завершающей строки Signed-off-by к патчу должно быть осознанным действием и означает, что вы подтверждаете наличие у вас прав на передачу этой работы на условиях той же лицензии с открытым исходным кодом. Дополнительное обсуждение см. в документе SubmittingPatches.

format.coverLetter

Логическое значение, определяющее, нужно ли создавать сопроводительное письмо при вызове format-patch. Кроме того, можно задать значение "auto", чтобы создавать сопроводительное письмо, только если патчей больше одного. По умолчанию — false.

format.commitListFormat

Если параметр --commit-list-format не указан, format-patch использует значение этой переменной, чтобы определить формат записи каждого коммита. По умолчанию используется shortlog.

format.outputDirectory

Задаёт пользовательский каталог для хранения полученных файлов вместо текущего рабочего каталога. Будут созданы все компоненты пути.

format.filenameMaxLength

Максимальная длина имён выходных файлов, создаваемых командой format-patch; по умолчанию — 64. Может быть переопределена параметром командной строки --filename-max-length=<n>.

format.useAutoBase

Логическое значение, позволяющее включить по умолчанию параметр --base=auto команды format-patch. Также можно задать значение "whenAble", чтобы разрешить включение --base=auto, если доступна подходящая база, но в противном случае пропускать добавление сведений о базе, не завершая работу format с ошибкой.

format.notes

Задаёт значение по умолчанию для параметра --notes команды format-patch. Принимает логическое значение или ссылку, указывающую, откуда получать заметки. Если задано значение 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

Логическое значение, включающее надёжный формат "mboxrd", когда используется --stdout, чтобы экранировать строки "^>+From ".

format.noprefix

Если задано, в патчах не показываются префиксы исходного файла и файла назначения. Это эквивалентно параметру diff.noprefix, используемому в git diff (но не учитываемому в 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.ui и core.editor, переменные receive.fsck.<msg-id> и fetch.fsck.<msg-id> не будут использовать настройку fsck.<msg-id> в качестве запасного значения, если для них не заданы значения. Чтобы единообразно настроить параметры fsck для разных ситуаций, все три переменные должны иметь одинаковые значения.

Если задана настройка fsck.<msg-id>, ошибки можно преобразовать в предупреждения и наоборот, настроив параметр fsck.<msg-id>, где <msg-id> — это идентификатор сообщения fsck, а значение должно быть одним из следующих: error, warn или ignore. Для удобства fsck добавляет идентификатор сообщения в начало текста ошибки или предупреждения. Например, "missingEmail: invalid author/committer line - missing email" означает, что настройка fsck.missingEmail = ignore скроет эту проблему.

В целом лучше перечислить существующие объекты с проблемами с помощью fsck.skipList, чем указывать типы ошибок, общие для этих объектов, чтобы игнорировать их: в последнем случае новые проявления тех же ошибок могут остаться незамеченными.

Если задать неизвестное значение fsck.<msg-id>, fsck завершит работу с ошибкой. Если же задать неизвестные значения receive.fsck.<msg-id> и fetch.fsck.<msg-id>, Git лишь выдаст предупреждение.

Поддерживаемые значения <msg-id> см. в разделе Fsck Messages справки git-fsck[1].

fsck.skipList

Путь к списку имён объектов (то есть по одному полному SHA-1 на строку), для которых известно, что они повреждены, но нефатально, и которые следует игнорировать. В Git версии 2.20 и новее игнорируются комментарии (#), пустые строки, а также начальные и конечные пробелы. В более старых версиях любая строка, не содержащая SHA-1, вызовет ошибку.

Эта возможность полезна, когда необходимо принять давно существующий проект, несмотря на ошибки в ранних коммитах, которые можно безопасно игнорировать, например недопустимые адреса электронной почты коммиттеров. Примечание: этой настройкой нельзя пропускать повреждённые объекты.

Как и переменная fsck.<msg-id>, эта переменная имеет соответствующие варианты receive.fsck.skipList и fetch.fsck.skipList.

В отличие от таких переменных, как color.ui и core.editor, переменные receive.fsck.skipList и fetch.fsck.skipList не будут использовать настройку fsck.skipList в качестве запасного значения, если для них не заданы значения. Чтобы единообразно настроить параметры fsck для разных ситуаций, все три переменные должны иметь одинаковые значения.

В более старых версиях Git (до 2.20) в документации указывалось, что список имён объектов должен быть отсортирован. Это никогда не было обязательным требованием: имена объектов могли располагаться в любом порядке. Однако при чтении списка отслеживалось, отсортирован ли он, для внутренней реализации двоичного поиска, которая могла работать быстрее с уже отсортированным списком. Если только список не был огромным, не было смысла специально сортировать его заранее. Начиная с Git версии 2.20 используется хеш-таблица, поэтому теперь предварительная сортировка списка не нужна.

fsmonitor.allowRemote

По умолчанию демон fsmonitor отказывается работать с репозиториями на сетевых файловых системах. Настройка fsmonitor.allowRemote со значением true переопределяет это поведение. Учитывается только если для core.fsmonitor задано значение true.

fsmonitor.socketDir

Эта настройка, предназначенная для Mac OS и Linux, если она задана, указывает каталог, в котором создаётся сокет домена Unix для обмена данными между демоном fsmonitor и различными командами Git. Каталог должен находиться в нативной файловой системе. Учитывается только если для core.fsmonitor задано значение true.

gc.aggressiveDepth

Параметр глубины, используемый в алгоритме дельта-сжатия команды git gc --aggressive. По умолчанию равен 50 — значению по умолчанию параметра --depth, если не используется --aggressive.

Подробнее см. документацию по параметру --depth команды git-repack[1].

gc.aggressiveWindow

Параметр размера окна, используемый в алгоритме дельта-сжатия команды git gc --aggressive. По умолчанию равен 250 — это значительно больше стандартного значения --window, равного 10.

Подробнее см. документацию по параметру --window команды git-repack[1].

gc.auto

Если количество неупакованных объектов в репозитории превышает примерно это значение, команда git gc --auto упакует их. Некоторые команды Porcelain время от времени используют эту команду для выполнения лёгкой сборки мусора. Значение по умолчанию — 6700.

Если задать значение 0, отключится не только автоматическая упаковка, основанная на количестве неупакованных объектов, но и все остальные эвристики, которые git gc --auto обычно использует для определения необходимости выполнения работы, например gc.autoPackLimit.

gc.autoPackLimit

Если количество пакетов, не помеченных файлом *.keep в репозитории, превышает это значение, команда git gc --auto объединит их в один пакет большего размера. Значение по умолчанию — 50. Значение 0 отключает эту функцию. Установка для gc.auto значения 0 также отключает её.

См. приведённую ниже переменную конфигурации gc.bigPackThreshold. Если она используется, то влияет на работу ограничения числа автоматически упаковываемых объектов.

gc.autoDetach

Заставляет команду git gc --auto немедленно завершить работу и продолжить выполнение в фоновом режиме, если система это поддерживает. Значение по умолчанию — true. Эта переменная конфигурации используется как запасная, если maintenance.autoDetach не задана.

gc.bigPackThreshold

Если значение ненулевое, при запуске git gc сохраняются все пакеты, не относящиеся к cruft-пакетам, размер которых превышает этот предел. Это очень похоже на --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 в репозитории делает его недоступным для клонирования версиями Git до 1.5.1.2 через простые транспортные протоколы, например HTTP. Эта переменная определяет, запускает ли git gc команду git pack-refs. Для включения этой функции во всех репозиториях, не являющихся чистыми, можно задать значение notbare либо указать логическое значение. По умолчанию используется true.

gc.cruftPacks

Хранить недостижимые объекты в cruft-пакете (см. git-repack[1]), а не в виде неупакованных объектов. Значение по умолчанию — true.

gc.maxCruftSize

Ограничивает размер новых cruft-пакетов при перепаковке. Если задан одновременно с --max-cruft-size, приоритет имеет параметр командной строки. См. параметр --max-cruft-size команды git-repack[1].

gc.pruneExpire

При запуске git gc будет вызвана команда prune --expire 2.weeks.ago (а при использовании cruft-пакетов через gc.cruftPacks или --cruft — также repack --cruft --cruft-expiration 2.weeks.ago). Эту переменную конфигурации можно использовать для переопределения периода ожидания. Значение "now" отключает период ожидания и немедленно удаляет недостижимые объекты, а значение "never" запрещает удаление. Эта функция помогает предотвратить повреждение данных, если git gc выполняется одновременно с другим процессом, записывающим данные в репозиторий; см. раздел "NOTES" в git-gc[1].

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

При принятии решения об удалении объекта (при создании cruft-пакета или хранении недостижимых объектов в неупакованном виде) выполняет указанные команды командной оболочки. Их вывод интерпретируется как идентификаторы объектов, которые Git будет считать «недавно созданными» независимо от их возраста. Считая время изменения этих объектов равным текущему, Git сохранит все упомянутые в выводе объекты и их потомков вне зависимости от их фактического возраста.

Вывод должен содержать ровно один шестнадцатеричный идентификатор объекта в каждой строке и ничего больше. Объекты, которые не удаётся найти в репозитории, игнорируются. Поддерживается несколько хуков, но каждый из них должен завершиться успешно, иначе операция (создание cruft-пакета или распаковка недостижимых объектов) будет прервана.

gc.repackFilter

При перепаковке использовать указанный фильтр для перемещения определённых объектов в отдельный файл пакета. См. параметр --filter=<filter-spec> команды git-repack[1].

gc.repackFilterTo

При перепаковке с использованием фильтра, см. gc.repackFilter, указанное расположение используется для создания файла пакета, содержащего отфильтрованные объекты. ПРЕДУПРЕЖДЕНИЕ: указанное расположение должно быть доступно, например, через механизм alternates в Git; в противном случае Git может счесть репозиторий повреждённым, поскольку не сможет получить доступ к объектам в этом файле пакета. См. параметр --filter-to=<dir> команды git-repack[1] и раздел objects/info/alternates справки gitrepository-layout[5].

gc.rerereResolved

Записи о конфликтах слияния, которые вы разрешили ранее, хранятся в течение указанного количества дней после запуска git rerere gc. Можно также использовать более понятные человеку значения, например "1.month.ago". Значение по умолчанию — 60 дней. См. git-rerere[1].

gc.rerereUnresolved

Записи о конфликтах слияния, которые вы не разрешили, хранятся в течение указанного количества дней после запуска git rerere gc. Можно также использовать более понятные человеку значения, например "1.month.ago". Значение по умолчанию — 15 дней. См. git-rerere[1].

gitcvs.commitMsgAnnotation

Добавляет эту строку к каждому сообщению коммита. Чтобы отключить эту функцию, задайте пустую строку. По умолчанию — "via git-CVS emulator".

gitcvs.enabled

Определяет, включён ли интерфейс сервера CVS для этого репозитория. См. git-cvsserver[1].

gitcvs.logFile

Путь к файлу журнала, в который интерфейс сервера CVS, ну… записывает разные данные. См. git-cvsserver[1].

gitcvs.usecrlfattr

Если задано значение true, сервер проверяет атрибуты преобразования окончаний строк файлов, чтобы определить используемые режимы -k. Если атрибуты указывают Git считать файл текстовым, режим -k останется пустым, чтобы клиенты CVS считали его текстовым. Если атрибуты отключают преобразование текста, файлу будет назначен режим -kb, который запрещает клиенту выполнять какое-либо преобразование символов новой строки. Если атрибуты не позволяют определить тип файла, используется gitcvs.allBinary. См. gitattributes[5].

gitcvs.allBinary

Используется, если gitcvs.usecrlfattr не определяет правильный режим -kb. Если задано значение true, все файлы, для которых не удалось определить режим, отправляются клиенту в режиме -kb. В результате клиент считает их двоичными файлами и не выполняет преобразование символов новой строки. Если задать значение "guess", содержимое файлов анализируется, чтобы определить, являются ли они двоичными, как и в случае с core.autocrlf.

gitcvs.dbName

База данных, используемая git-cvsserver для кэширования сведений о ревизиях, полученных из репозитория Git. Точное значение зависит от используемого драйвера базы данных; для SQLite (драйвера по умолчанию) это имя файла. Поддерживает подстановку переменных (подробности см. в git-cvsserver[1]). Не может содержать точку с запятой (;). По умолчанию: %Ggitcvs.%m.sqlite

gitcvs.dbDriver

Используемый драйвер Perl DBI. Здесь можно указать любой доступный драйвер, но он может не работать. git-cvsserver тестируется с DBD::SQLite, сообщалось о работоспособности с DBD::Pg и о неработоспособности с DBD::mysql. Экспериментальная функция. Не может содержать двойное двоеточие (:). По умолчанию: SQLite. См. git-cvsserver[1].

gitcvs.dbUser
gitcvs.dbPass

Имя пользователя и пароль для базы данных. Полезно только при настройке gitcvs.dbDriver, поскольку SQLite не использует понятия пользователей и паролей баз данных. gitcvs.dbUser поддерживает подстановку переменных (подробности см. в git-cvsserver[1]).

gitcvs.dbTableNamePrefix

Префикс имени таблиц базы данных. Добавляется в начало имён всех используемых таблиц, позволяя использовать одну базу данных для нескольких репозиториев. Поддерживает подстановку переменных (подробности см. в git-cvsserver[1]). Все небуквенные символы заменяются символами подчёркивания.

Все переменные gitcvs, кроме gitcvs.usecrlfattr и gitcvs.allBinary, также можно указывать как 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

Путь к программе, используемой вместо "gpg" при создании или проверке подписи PGP. Программа должна поддерживать тот же интерфейс командной строки, что и GPG: для проверки отсоединённой подписи выполняется команда "gpg --verify $signature - <$file", и программа должна сообщать об успешной проверке подписи, завершая работу с кодом 0. Для создания отсоединённой подписи в формате ASCII-armored содержимое, которое нужно подписать, передаётся стандартному вводу команды "gpg -bsau $key", а программа должна отправить результат в стандартный вывод.

gpg.format

Задаёт формат ключа, используемый для подписания с помощью --gpg-sign. По умолчанию используется "openpgp". Другие возможные значения: "x509", "ssh".

Описание формата подписи, который зависит от выбранного gpg.format, см. в gitformat-signature[5].

gpg.<format>.program

Используйте этот параметр, чтобы настроить программу для выбранного формата подписи (см. gpg.program и gpg.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. При успешном завершении в первой строке вывода ожидается корректный открытый ключ SSH с префиксом key::. Это позволяет использовать скрипт для динамического поиска нужного открытого ключа, когда статически настроить user.signingKey нецелесообразно. Например, когда ключи или SSH-сертификаты часто меняются или выбор нужного ключа зависит от внешних факторов, неизвестных Git.

gpg.ssh.allowedSignersFile

Файл, содержащий открытые ключи SSH, которым вы готовы доверять. Файл состоит из одной или нескольких строк с субъектами, за которыми следует открытый ключ SSH. Например: user1@example.com,user2@example.com ssh-rsa AAAAX1... Подробности см. в разделе "ALLOWED SIGNERS" справки ssh-keygen(1). Субъект используется только для идентификации ключа и доступен при проверке подписи.

В SSH, в отличие от gpg, нет понятия уровней доверия. Чтобы различать действительные и доверенные подписи, при проверке подписи устанавливается уровень доверия fully, если открытый ключ присутствует в allowedSignersFile. В противном случае уровень доверия равен undefined, и git verify-commit/tag завершится с ошибкой.

Этот файл можно разместить вне репозитория; каждый разработчик поддерживает собственное хранилище доверенных ключей. Центральный сервер репозитория может автоматически создавать этот файл из SSH-ключей, имеющих доступ на отправку изменений, чтобы проверять код. В корпоративной среде этот файл, вероятно, создаётся в общей папке средствами автоматизации, которые уже управляют SSH-ключами разработчиков.

Репозиторий, в котором разрешены только подписанные коммиты, может хранить файл непосредственно в репозитории, используя путь относительно корневого каталога рабочего дерева. Таким образом, добавлять или изменять ключи в связке ключей могут только авторы коммитов, у которых уже есть действительный ключ.

Начиная с OpensSSH 8.8 в этом файле можно указывать срок действия ключа с помощью параметров valid-after и valid-before. Git будет считать подписи действительными, если подписывающий ключ был действителен на момент создания подписи. Это позволяет пользователям сменить ключ для подписания, не делая недействительными все ранее созданные подписи.

Также можно использовать ключ SSH CA с параметром cert-authority (см. раздел "CERTIFICATES" справки ssh-keygen(1)).

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, чтобы выбрать между basic и extended.

grep.extendedRegexp

Если задано значение true, по умолчанию включается параметр --extended-regexp. Этот параметр игнорируется, если для параметра grep.patternType задано значение, отличное от default.

grep.threads

Количество рабочих потоков grep. Если значение не задано (или равно 0), Git использует столько потоков, сколько доступно логических ядер.

grep.fullName

Если задано значение true, по умолчанию включается параметр --full-name.

grep.fallbackToNoIndex

Если задано значение true, вместо этого используется git grep --no-index, если команда git grep выполняется вне репозитория git. По умолчанию — false.

gui.commitMsgWidth

Задаёт ширину окна сообщения коммита в git-gui[1]. По умолчанию используется значение "75".

gui.diffContext

Задаёт количество контекстных строк, используемых в вызовах diff из git-gui[1]. По умолчанию используется значение "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

Значение "true" указывает, что git-gui[1] должен удалять ветки удалённого отслеживания при выполнении fetch. По умолчанию используется значение "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

Задаёт радиус исторического контекста в днях, отображаемого в gitk[1] для выбранного коммита при выборе пункта меню Show History Context в git gui blame. Если значение этой переменной равно нулю, отображается вся история.

gui.GCWarning

Определяет, должен ли git-gui[1] предлагать выполнить сборку мусора, если Git обнаруживает в репозитории большое количество свободных объектов. По умолчанию используется значение "true".

guitool.<name>.cmd

Задаёт командную строку оболочки, выполняемую при выборе соответствующего пункта меню Tools в git-gui[1]. Этот параметр обязателен для каждого инструмента. Команда выполняется из корневого каталога рабочего дерева; в окружение передаётся имя инструмента в переменной GIT_GUITOOL, имя выбранного файла — в FILENAME, а имя текущей ветки — в CUR_BRANCH (если HEAD отделён, CUR_BRANCH имеет пустое значение).

guitool.<name>.needsFile

Запускать инструмент, только если в графическом интерфейсе выбран diff. Гарантирует, что FILENAME не пуст.

guitool.<name>.noConsole

Запускать команду без вывода, не создавая окна для отображения результата.

guitool.<name>.noRescan

Не сканировать рабочий каталог на наличие изменений после завершения работы инструмента.

guitool.<name>.confirm

Показывать диалог подтверждения перед запуском инструмента.

guitool.<name>.argPrompt

Запрашивать у пользователя строковый аргумент и передавать его инструменту через переменную окружения ARGS. Поскольку запрос аргумента подразумевает подтверждение, параметр confirm не действует, если этот параметр включён. Если для параметра задано значение true, yes или 1, в диалоговом окне используется встроенная общая подсказка; в противном случае используется точное значение переменной.

guitool.<name>.revPrompt

Запрашивать у пользователя одну допустимую ревизию и задавать переменную окружения REVISION. В остальном этот параметр аналогичен argPrompt и может использоваться вместе с ним.

guitool.<name>.revUnmerged

Показывать только несведённые ветки во вложенном диалоговом окне revPrompt. Это полезно для инструментов, подобных merge или rebase, но не для таких операций, как checkout или reset.

guitool.<name>.title

Задаёт заголовок диалогового окна запроса. По умолчанию используется имя инструмента.

guitool.<name>.prompt

Задаёт общую строку подсказки, отображаемую в верхней части диалогового окна перед разделами для argPrompt и revPrompt. По умолчанию в строке указывается фактическая команда.

help.browser

Задаёт браузер, используемый для отображения справки в формате web. См. git-help[1].

help.format

Переопределяет формат справки, используемый по умолчанию командой git-help[1]. Поддерживаются значения man, info, web и html. По умолчанию используется man. Значения web и html означают одно и то же.

help.autoCorrect

Если Git обнаруживает опечатку и может определить ровно одну допустимую команду, похожую на ошибочно введённую, он попытается предложить правильную команду или даже автоматически выполнить её. Возможные значения параметра конфигурации:

  • 0, "false", "off", "no", "show": показать предлагаемую команду (значение по умолчанию).

  • 1, "true", "on", "yes", "immediate": немедленно выполнить предлагаемую команду.

  • положительное число > 1: выполнить предлагаемую команду через указанное количество десятых долей секунды (0,1 с).

  • "never": не выполнять и не показывать предлагаемые команды.

  • "prompt": показать предложение и запросить подтверждение на выполнение команды.

help.htmlPath

Задаёт путь к каталогу с документацией HTML. Поддерживаются пути файловой системы и URL. При отображении справки в формате web этот путь добавляется в начало URL HTML-страниц. По умолчанию используется путь к документации в каталоге установки Git.

hook.<friendly-name>.command

Команда, выполняемая для hook.<friendly-name>. <friendly-name> — уникальное имя, идентифицирующее этот хук. События хуков, запускающие команду, настраиваются с помощью hook.<friendly-name>.event. Значением может быть путь к исполняемому файлу или однострочная команда оболочки. Если для одного и того же <friendly-name> указано несколько значений, используется только последнее разобранное значение. См. git-hook[1].

hook.<friendly-name>.event

События хуков, запускающие hook.<friendly-name>. Значение — имя события хука, например «pre-commit» или «update». (Полный список событий хуков см. в githooks[5].) При наступлении указанного события выполняется связанный с ним hook.<friendly-name>.command. Этот ключ может иметь несколько значений. Чтобы запускать hook.<friendly-name> при нескольких событиях, укажите этот ключ несколько раз. Пустое значение сбрасывает список событий, удаляя все ранее заданные события для hook.<friendly-name>. См. git-hook[1].

<friendly-name> не должно совпадать с именем известного события хука (например, не используйте hook.pre-commit.event). Использование известного имени события в качестве friendly-name приводит к фатальной ошибке, поскольку создаёт неоднозначность с hook.<event>.enabled и hook.<event>.jobs. Для неизвестных имён событий выводится предупреждение, если <friendly-name> совпадает со значением события.

hook.<friendly-name>.enabled

Определяет, включён ли хук hook.<friendly-name>. По умолчанию — true. Установите значение false, чтобы отключить хук, не удаляя его настройки. Это особенно полезно, когда хук задан в системном или глобальном файле конфигурации и его нужно отключить для определённого репозитория. См. git-hook[1].

hook.<friendly-name>.parallel

Определяет, может ли хук hook.<friendly-name> выполняться параллельно с другими хуками для того же события. По умолчанию — false. Установите значение true только в том случае, если скрипт хука безопасно выполнять параллельно с другими хуками для того же события. Если для какого-либо хука события значение этого параметра не равно true, все хуки этого события выполняются последовательно независимо от значения hook.jobs. Этот параметр нужно указывать только для настроенных (именованных) хуков. Для традиционных хуков, находящихся в каталоге hooks, указывать его не нужно: они выполняются параллельно, если эффективное число заданий больше 1. См. git-hook[1].

hook.<event>.enabled

Параметр, включающий или отключающий все хуки для события хука <event>. Если установить значение false, для этого события не будут запускаться никакие хуки независимо от настроек отдельных хуков hook.<friendly-name>.enabled. По умолчанию — true. См. git-hook[1].

Примечание об именовании: <event> должно быть именем события (например, pre-commit), а не friendly-name хука. Поскольку использовать известное имя события в качестве friendly-name запрещено (см. приведённый выше раздел hook.<friendly-name>.event), для известных событий неоднозначности между настройками .enabled на уровне события и отдельного хука нет. Для неизвестных событий, если friendly-name совпадает с именем события вопреки предупреждению, параметр .enabled рассматривается только как настройка отдельного хука.

hook.<event>.jobs

Задаёт, сколько хуков может одновременно выполняться для события хука <event> (например, hook.post-receive.jobs = 4). Переопределяет hook.jobs для этого события. Действуют те же ограничения параллельного выполнения: этот параметр не влияет на работу, если для всех настроенных хуков этого события не задано значение hook.<friendly-name>.parallel равным true. Установите значение -1, чтобы использовать число доступных ядер ЦП. Значением должно быть положительное целое число или -1; нулевое значение отклоняется с предупреждением. См. git-hook[1].

Примечание об именовании: хотя этот ключ похож на hook.<friendly-name>.* (настройку отдельного хука), <event> должно быть именем события, а не friendly-name хука. Компонент ключа сохраняется буквально и во время выполнения ищется по имени события; преобразования между этими двумя пространствами имён не происходит. Например, ключ вида hook.my-hook.jobs сохраняется как "my-hook", но во время выполнения поиск выполняется по имени события (например, "post-receive"), поэтому hook.my-hook.jobs будет молча проигнорирован, даже если для этого события зарегистрирован my-hook. При настройке hook.<event>.jobs используйте hook.post-receive.jobs или любое другое допустимое имя события.

hook.jobs

Задаёт, сколько хуков может одновременно выполняться при параллельном запуске хуков. Если параметр не задан, по умолчанию используется значение 1 (последовательное выполнение). Установите значение -1, чтобы использовать число доступных ядер ЦП. Значение можно переопределить для отдельного события с помощью hook.<event>.jobs. Некоторые хуки всегда выполняются последовательно независимо от этого параметра, поскольку они работают с общими данными и их нельзя безопасно выполнять параллельно:

applypatch-msg
prepare-commit-msg
commit-msg

Получают файл с сообщением коммита и могут перезаписать его на месте.

pre-commit
post-checkout
push-to-checkout
post-commit

Обращаются к рабочему дереву, индексу или состоянию репозитория.

Этот параметр не влияет на работу, если для всех настроенных хуков этого события не задано значение hook.<friendly-name>.parallel равным true.

Для хуков pre-push, которые обычно не объединяют stdout и stderr, установка значения больше 1 (или передача -j) приведёт к перенаправлению stdout в stderr, чтобы обеспечить корректное разделение перемежающегося параллельного вывода.

http.proxy

Переопределяет HTTP-прокси, обычно задаваемый с помощью переменных среды http_proxy, https_proxy и all_proxy (см. curl(1)). Помимо синтаксиса, понимаемого curl, можно указать строку прокси с именем пользователя, но без пароля. В этом случае git попытается получить пароль тем же способом, что и для других учётных данных. Дополнительные сведения см. в gitcredentials[7]. Таким образом, синтаксис имеет вид [protocol://][user[:password]@]proxyhost[:port][/path]. Этот параметр можно переопределить отдельно для каждого удалённого репозитория; см. remote.<name>.proxy

Любой прокси, независимо от способа настройки, должен быть полностью прозрачным и не должен каким-либо образом изменять, преобразовывать или буферизовать запрос или ответ. Известно, что непрозрачные прокси вызывают различные сбои в работе Git.

http.proxyAuthMethod

Задаёт метод аутентификации на HTTP-прокси. Параметр действует, только если настроенная строка прокси содержит имя пользователя (то есть имеет вид user@host или user@host:port). Значение можно переопределить отдельно для каждого удалённого репозитория; см. remote.<name>.proxyAuthMethod. Оба параметра можно переопределить с помощью переменной среды GIT_HTTP_PROXY_AUTHMETHOD. Возможные значения:

  • anyauth — автоматически выбирает подходящий метод аутентификации. Предполагается, что прокси отвечает на запрос без аутентификации кодом состояния 407 и одним или несколькими заголовками Proxy-authenticate с поддерживаемыми методами аутентификации. Это значение используется по умолчанию.

  • basic — базовая HTTP-аутентификация

  • digest — HTTP-аутентификация по дайджесту; предотвращает передачу пароля прокси в открытом виде

  • negotiate — аутентификация GSS-Negotiate (ср. параметр --negotiate команды curl(1))

  • ntlm — аутентификация NTLM (ср. параметр --ntlm команды curl(1))

http.proxySSLCert

Путь к файлу с клиентским сертификатом, используемым для аутентификации на HTTPS-прокси. Значение можно переопределить с помощью переменной среды GIT_PROXY_SSL_CERT.

http.proxySSLKey

Путь к файлу с закрытым ключом, используемым для аутентификации на HTTPS-прокси. Значение можно переопределить с помощью переменной среды GIT_PROXY_SSL_KEY.

http.proxySSLCertPasswordProtected

Включает запрос пароля Git для SSL-сертификата прокси. В противном случае OpenSSL будет запрашивать пароль у пользователя, возможно, неоднократно, если сертификат или закрытый ключ зашифрован. Значение можно переопределить с помощью переменной среды GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED.

http.proxySSLCAInfo

Путь к файлу со связкой сертификатов, используемой для проверки прокси при работе через HTTPS-прокси. Значение можно переопределить с помощью переменной среды GIT_PROXY_SSL_CAINFO.

http.emptyAuth

Пытается выполнить аутентификацию, не запрашивая имя пользователя или пароль. Это можно использовать для попытки аутентификации GSS-Negotiate без указания имени пользователя в URL, поскольку libcurl обычно требует имя пользователя для аутентификации. Возможные значения:

  • auto (по умолчанию) — отправлять пустые учётные данные, только если в ответе сервера 401 объявлен требующий их механизм аутентификации (например, GSS-Negotiate); в противном случае перейти к запросу учётных данных через помощник учётных данных.

  • true — всегда отправлять пустые учётные данные в самом первом запросе, до получения от сервера ответа 401.

  • false — никогда не отправлять пустые учётные данные. Механизмы, требующие пустых учётных данных или явного указания имени пользователя, например GSS-Negotiate, работать не будут.

http.proactiveAuth

Пытается выполнить аутентификацию, не отправляя предварительно запрос без аутентификации и не дожидаясь ответа 401. Это можно использовать, чтобы гарантировать аутентификацию всех запросов. Если для http.emptyAuth задано значение true, этот параметр не действует.

Если используемый помощник учётных данных указывает схему аутентификации (то есть через поле authtype), будет использоваться эта схема; если указаны имя пользователя и пароль без схемы, используется базовая аутентификация. Значение параметра определяет схему, запрашиваемую у помощника. Возможные значения:

  • basic — запросить у помощника базовую аутентификацию.

  • auto — позволить помощнику выбрать подходящую схему.

  • none — отключить упреждающую аутентификацию.

Обратите внимание, что при такой настройке всегда следует использовать TLS, поскольку в противном случае легко случайно раскрыть учётные данные в открытом виде, если выбрана базовая аутентификация.

http.delegation

Управляет делегированием учётных данных GSSAPI. В libcurl делегирование по умолчанию отключено начиная с версии 7.21.7. Задаёт параметр, указывающий серверу, что ему разрешено делегировать в отношении учётных данных пользователя. Используется с GSS/Kerberos. Возможные значения:

  • none — не разрешать делегирование.

  • policy — делегировать, только если в сервисном билете Kerberos установлен флаг OK-AS-DELEGATE; это определяется политикой области.

  • always — безусловно разрешить серверу делегирование.

http.extraHeader

Передаёт дополнительный HTTP-заголовок при взаимодействии с сервером. Если задано несколько таких записей, все они добавляются в качестве дополнительных заголовков. Чтобы разрешить переопределение настроек, унаследованных из системной конфигурации, пустое значение сбрасывает список дополнительных заголовков.

http.cookieFile

Путь к файлу с ранее сохранёнными строками cookie, которые следует использовать в HTTP-сеансе Git, если они подходят для сервера. Формат файла с cookie должен соответствовать обычным HTTP-заголовкам или формату файлов cookie Netscape/Mozilla (см. curl(1)). Если задать пустую строку, будут приниматься только новые cookie от сервера и отправляться обратно в последующих запросах в рамках того же соединения. Обратите внимание: файл, указанный в http.cookieFile, используется только для чтения, если не задан параметр http.saveCookies.

http.saveCookies

Если параметр задан, сохраняет в файл, указанный в http.cookieFile, cookie, полученные во время запросов. Не действует, если параметр http.cookieFile не задан или задан как пустая строка.

http.version

Использует указанную версию протокола HTTP при взаимодействии с сервером. Если требуется принудительно задать версию по умолчанию, доступная версия и версия по умолчанию зависят от libcurl. В настоящее время этот параметр может принимать следующие значения:

  • HTTP/2

  • HTTP/1.1

http.curloptResolve

Информация о разрешении имён узлов, которая будет использоваться libcurl в первую очередь при отправке HTTP-запросов. Информация должна иметь один из следующих форматов:

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

  • -HOST:PORT

Первый формат перенаправляет все запросы к указанному HOST:PORT на заданные ADDRESS(s). Второй формат удаляет все предыдущие значения конфигурации для этой комбинации 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 использовать версию SSL по умолчанию для libcurl и игнорировать явно заданный параметр 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

Определяет, проверять ли сертификат SSL при получении или отправке данных через HTTPS. По умолчанию — true. Значение можно переопределить с помощью переменной среды GIT_SSL_NO_VERIFY.

http.sslCert

Файл с сертификатом SSL, используемым при получении или отправке данных через HTTPS. Значение можно переопределить с помощью переменной среды GIT_SSL_CERT.

http.sslKey

Файл с закрытым ключом SSL, используемым при получении или отправке данных через HTTPS. Значение можно переопределить с помощью переменной среды GIT_SSL_KEY.

http.sslCertPasswordProtected

Включает запрос пароля Git для сертификата SSL. В противном случае OpenSSL будет запрашивать пароль у пользователя, возможно, неоднократно, если сертификат или закрытый ключ зашифрован. Значение можно переопределить с помощью переменной среды GIT_SSL_CERT_PASSWORD_PROTECTED.

http.sslCAInfo

Файл с сертификатами, используемыми для проверки другой стороны при получении или отправке данных через HTTPS. Значение можно переопределить с помощью переменной среды GIT_SSL_CAINFO.

http.sslCAPath

Каталог с файлами сертификатов ЦС, используемыми для проверки другой стороны при получении или отправке данных через HTTPS. Значение можно переопределить с помощью переменной среды GIT_SSL_CAPATH.

http.sslBackend

Имя используемой серверной части SSL (например, «openssl» или «schannel»). Этот параметр игнорируется, если cURL не поддерживает выбор серверной части SSL во время выполнения.

http.sslCertType

Тип клиентского сертификата, используемого при получении или отправке данных через HTTPS. При использовании серверных частей openssl или gnutls поддерживаются значения «PEM» и «DER». Значение «P12» поддерживается для «openssl», «schannel», «securetransport» и gnutls версии 8.11 и выше. См. также CURLOPT_SSLCERTTYPE в документации libcurl. Значение можно переопределить с помощью переменной среды GIT_SSL_CERT_TYPE.

http.sslKeyType

Тип закрытого ключа клиента, используемого при получении или отправке данных через HTTPS (например, «PEM», «DER» или «ENG»). Применяется только при использовании серверной части «openssl». Значение «DER» не поддерживается в openssl. Особенно полезно значение «ENG» для аутентификации с помощью токенов PKCS#11, если в параметре sslCert указан URL PKCS#11. См. также CURLOPT_SSLKEYTYPE в документации libcurl. Значение можно переопределить с помощью переменной среды GIT_SSL_KEY_TYPE.

http.schannelCheckRevoke

Используется для включения или отключения проверки отзыва сертификатов в cURL, когда для http.sslBackend задано значение «schannel». Если параметр не задан, по умолчанию используется true. Отключать эту проверку следует только в том случае, если Git постоянно выдаёт ошибку о проверке статуса отзыва сертификата. Этот параметр игнорируется, если cURL не поддерживает установку соответствующей опции SSL во время выполнения.

http.schannelUseSSLCAInfo

Начиная с cURL v7.60.0, серверная часть Secure Channel может использовать связку сертификатов, заданную через http.sslCAInfo, однако при этом будет переопределено хранилище сертификатов Windows. Поскольку по умолчанию это нежелательно, Git по умолчанию сообщает cURL не использовать эту связку, если серверная часть schannel настроена через http.sslBackend, если только параметр http.schannelUseSSLCAInfo не переопределяет это поведение.

http.pinnedPubkey

Открытый ключ службы https. Значением может быть имя файла с открытым ключом в формате PEM или DER либо строка, начинающаяся с sha256//, за которым следует хеш sha256 открытого ключа в кодировке base64. См. также CURLOPT_PINNEDPUBLICKEY в документации libcurl. git завершится с ошибкой, если этот параметр задан, но не поддерживается cURL.

http.sslTry

Пытается использовать AUTH SSL/TLS и шифрованную передачу данных при подключении через обычный протокол FTP. Это может потребоваться, если FTP-сервер требует этого по соображениям безопасности или если вы хотите устанавливать защищённое соединение всякий раз, когда удалённый FTP-сервер его поддерживает. По умолчанию — false, поскольку на неправильно настроенных серверах это может приводить к ошибкам проверки сертификата.

http.maxRequests

Количество HTTP-запросов, запускаемых параллельно. Значение можно переопределить с помощью переменной среды GIT_HTTP_MAX_REQUESTS. По умолчанию — 5.

http.minSessions

Количество сеансов curl (суммарно по слотам), сохраняемых между запросами. Они не будут завершены вызовом curl_easy_cleanup(), пока не будет вызвана функция http_cleanup(). Если USE_CURL_MULTI не определён, значение будет ограничено единицей. По умолчанию — 1.

http.postBuffer

Максимальный размер буфера в байтах, используемого интеллектуальными транспортами HTTP при отправке данных POST на удалённую систему. Для запросов, превышающих размер этого буфера, используется HTTP/1.1 и Transfer-Encoding: chunked, чтобы не создавать локально огромный файл pack. По умолчанию — 1 MiB, чего достаточно для большинства запросов.

Обратите внимание: увеличение этого ограничения эффективно только для отключения передачи с разбиением на блоки, поэтому его следует использовать лишь в случаях, когда удалённый сервер или прокси поддерживает только HTTP/1.0 либо не соответствует стандарту HTTP. Как правило, увеличение значения не является эффективным решением большинства проблем с отправкой данных, но может значительно повысить потребление памяти, поскольку весь буфер выделяется даже для небольших отправок.

http.lowSpeedLimit
http.lowSpeedTime

Если скорость передачи HTTP в байтах в секунду остаётся ниже http.lowSpeedLimit дольше http.lowSpeedTime секунд, передача прерывается. Значения можно переопределить с помощью переменных среды GIT_HTTP_LOW_SPEED_LIMIT и GIT_HTTP_LOW_SPEED_TIME.

http.keepAliveIdle

Задаёт, сколько секунд ждать в неактивном соединении перед отправкой проб TCP keepalive (если это поддерживается ОС). Если параметр не задан, используется значение curl по умолчанию. Значение можно переопределить с помощью переменной среды GIT_HTTP_KEEPALIVE_IDLE.

http.keepAliveInterval

Задаёт интервал в секундах между пробами TCP keepalive (если это поддерживается ОС). Если параметр не задан, используется значение curl по умолчанию. Значение можно переопределить с помощью переменной среды GIT_HTTP_KEEPALIVE_INTERVAL.

http.keepAliveCount

Задаёт количество проб TCP keepalive, отправляемых до прекращения попыток и завершения соединения (если это поддерживается ОС). Если параметр не задан, используется значение curl по умолчанию. Значение можно переопределить с помощью переменной среды GIT_HTTP_KEEPALIVE_COUNT.

http.retryAfter

Время ожидания в секундах перед повторной попыткой, если сервер возвращает HTTP 429 (слишком много запросов) без заголовка Retry-After. По умолчанию — 0 (повторная попытка выполняется немедленно). Если заголовок Retry-After присутствует, его значение имеет приоритет над этим параметром; однако для автоматического использования предоставленного сервером заголовка Retry-After требуется libcurl версии 7.66.0 или новее. В более старых версиях настройте этот параметр вручную, чтобы задать задержку перед повторной попыткой. Значение можно переопределить с помощью переменной среды GIT_HTTP_RETRY_AFTER. См. также http.maxRetries и http.maxRetryTime.

http.maxRetries

Максимальное количество повторных попыток после получения ответа HTTP 429 (слишком много запросов). Чтобы отключить повторные попытки, установите значение 0 (по умолчанию). Значение можно переопределить с помощью переменной среды GIT_HTTP_MAX_RETRIES. См. также http.retryAfter и http.maxRetryTime.

http.maxRetryTime

Максимальное время в секундах ожидания одной повторной попытки при обработке ответов HTTP 429 (Too Many Requests). Если сервер запрашивает задержку (через заголовок Retry-After) или если http.retryAfter настроен на значение, превышающее этот максимум, Git немедленно завершит работу, не дожидаясь окончания задержки. Значение по умолчанию — 300 секунд (5 минут). Можно переопределить с помощью переменной окружения GIT_HTTP_MAX_RETRY_TIME. См. также http.retryAfter и http.maxRetries.

http.noEPSV

Логическое значение, отключающее использование команды FTP EPSV в curl. Это может быть полезно при работе с некоторыми «некачественными» FTP-серверами, не поддерживающими режим EPSV. Можно переопределить с помощью переменной окружения GIT_CURL_FTP_NO_EPSV. Значение по умолчанию — false (curl будет использовать EPSV).

http.userAgent

Строка HTTP USER_AGENT, передаваемая HTTP-серверу. Значение по умолчанию соответствует версии клиента Git, например git/1.7.1. Этот параметр позволяет заменить это значение более распространённым, например 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 в https://example.com/). Это поле должно полностью совпадать в ключе конфигурации и URL.

  2. Имя хоста/домена (например, example.com в https://example.com/). Это поле должно совпадать в ключе конфигурации и URL. В имени хоста можно указать *, чтобы учесть все поддомены на этом уровне. Например, https://*.example.com/ будет соответствовать https://foo.example.com/, но не https://foo.bar.example.com/.

  3. Номер порта (например, 8080 в http://example.com:8080/). Это поле должно полностью совпадать в ключе конфигурации и URL. Перед сравнением отсутствующие номера портов автоматически заменяются соответствующими значениями по умолчанию для данной схемы.

  4. Путь (например, repo.git в https://example.com/repo.git). Поле пути в ключе конфигурации должно точно совпадать с полем пути URL или быть его префиксом, состоящим из разделённых косыми чертами элементов пути. Это означает, что ключ конфигурации с путём foo/ соответствует пути URL foo/bar. Префикс может соответствовать только на границе косой черты (/). Более длинные совпадения имеют приоритет (поэтому ключ конфигурации с путём foo/bar лучше соответствует пути URL foo/bar, чем ключ конфигурации только с путём foo/).

  5. Имя пользователя (например, user в https://user@example.com/repo.git). Если ключ конфигурации содержит имя пользователя, оно должно точно совпадать с именем пользователя в 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

Папка, в которую помещаются письма, обычно папка Drafts. Например: INBOX.Drafts, INBOX/Drafts или [Gmail]/Drafts. Папка IMAP, с которой необходимо взаимодействовать, ДОЛЖНА быть указана; значение этой переменной конфигурации используется как значение по умолчанию, если параметр --folder не задан.

imap.tunnel

Команда для настройки туннеля к серверу IMAP, через который будут передаваться команды вместо прямого сетевого подключения к серверу. Обязательна, если не задан параметр imap.host.

imap.host

URL, указывающий на сервер. Для незащищённых соединений используйте префикс imap://, а для защищённых — префикс imaps://. Игнорируется, если задан параметр imap.tunnel, в противном случае обязателен.

imap.user

Имя пользователя для входа на сервер.

imap.pass

Пароль для входа на сервер.

imap.port

Целочисленный номер порта сервера, к которому следует подключиться. По умолчанию — 143 для узлов imap:// и 993 для узлов imaps://. Игнорируется, если задан параметр imap.tunnel.

imap.sslverify

Логическое значение, включающее или отключающее проверку сертификата сервера, используемого SSL/TLS-соединением. По умолчанию — true. Игнорируется, если задан параметр imap.tunnel.

imap.preformattedHTML

Логическое значение, включающее или отключающее использование HTML-кодирования при отправке патча. Патч в HTML-кодировке будет заключён в <pre> и будет иметь тип содержимого text/html. Ирония в том, что включение этого параметра заставляет Thunderbird отправлять патч как обычное текстовое письмо с форматом fixed. По умолчанию — false.

imap.authMethod

Задаёт метод аутентификации на сервере IMAP. Если Git собран с параметром NO_CURL, версия curl старше 7.34.0 или вы запускаете git-imap-send с параметром --no-curl, поддерживаются только методы PLAIN, CRAM-MD5, OAUTHBEARER и XOAUTH2. Если параметр не задан, git imap-send использует базовую команду IMAP LOGIN для передачи открытого текста.

include.path
includeIf.<condition>.path

Специальные переменные для подключения других файлов конфигурации. См. раздел «ФАЙЛ КОНФИГУРАЦИИ» в основной документации git-config[1], в частности подразделы «Подключение» и «Условное подключение».

index.recordEndOfIndexEntries

Указывает, должен ли индексный файл содержать раздел «End Of Index Entry». Это сокращает время загрузки индекса на многопроцессорных машинах, но при чтении индекса в версиях Git до 2.20 выводится сообщение «ignoring EOIE extension». По умолчанию задаётся значение true, если index.threads включён явно, и false в противном случае.

index.recordOffsetTable

Указывает, должен ли индексный файл содержать раздел «Index Entry Offset Table». Это сокращает время загрузки индекса на многопроцессорных машинах, но при чтении индекса в версиях Git до 2.20 выводится сообщение «ignoring IEOT extension». По умолчанию задаётся значение true, если index.threads включён явно, и false в противном случае.

index.sparse

Если параметр включён, индекс записывается с использованием записей разреженных каталогов. Это не действует, если параметры core.sparseCheckout и core.sparseCheckoutCone не включены одновременно. По умолчанию — false.

index.threads

Указывает количество потоков, запускаемых при загрузке индекса. Это предназначено для сокращения времени загрузки индекса на многопроцессорных машинах. Значение 0 или true заставит Git автоматически определить число процессоров и соответственно задать количество потоков. Значение 1 или false отключит многопоточность. По умолчанию — true.

index.version

Задаёт версию, с которой следует инициализировать новые индексные файлы. На существующие репозитории это не влияет. Если включён параметр feature.manyFiles, значением по умолчанию будет 4.

index.skipHash

Если параметр включён, завершающий хеш индексного файла не вычисляется. Это ускоряет команды Git, изменяющие индекс, например git add, git commit или git status. Вместо контрольной суммы в конец записывается последовательность нулевых байтов, указывающая на то, что вычисление было пропущено.

Если включить index.skipHash, клиенты Git старше версии 2.13.0 откажутся разбирать индекс, а клиенты Git старше версии 2.40.0 сообщат об ошибке при выполнении git fsck.

init.templateDir

Укажите каталог, из которого будут копироваться шаблоны. (См. раздел «КАТАЛОГ ШАБЛОНОВ» в git-init[1].)

init.defaultBranch

Позволяет переопределить имя ветки по умолчанию, например при инициализации нового репозитория.

init.defaultObjectFormat

Позволяет переопределить формат объектов по умолчанию для новых репозиториев. См. --object-format= в git-init[1]. Параметр командной строки и переменная среды GIT_DEFAULT_HASH имеют приоритет над этой настройкой.

init.defaultRefFormat

Позволяет переопределить формат хранения ссылок по умолчанию для новых репозиториев. См. --ref-format= в git-init[1]. Параметр командной строки и переменная среды GIT_DEFAULT_REF_FORMAT имеют приоритет над этой настройкой.

init.defaultSubmodulePathConfig

Логическое значение, определяющее, должны ли git init и git clone автоматически устанавливать extensions.submodulePathConfig в значение true. Это позволяет автоматически использовать расширение пути подмодуля во всех новых репозиториях. Если значение не задано, по умолчанию используется false.

instaweb.browser

Укажите программу, которая будет использоваться для просмотра рабочего репозитория в gitweb. См. git-instaweb[1].

instaweb.httpd

Команда HTTP-демона для запуска gitweb в рабочем репозитории. См. git-instaweb[1].

instaweb.local

Если значение равно true, веб-сервер, запущенный командой git-instaweb[1], будет привязан к локальному IP-адресу (127.0.0.1).

instaweb.modulePath

Путь к каталогу модулей по умолчанию, который будет использовать git-instaweb[1] вместо /usr/lib/apache2/modules. Используется, только если httpd — это Apache.

instaweb.port

Номер порта, к которому привязывается HTTP-демон gitweb. См. git-instaweb[1].

interactive.singleKey

Если установлено значение true, интерактивные команды позволяют пользователю вводить один символ нажатием одной клавиши (то есть без нажатия Enter). Сейчас это используется в режиме --patch команд git-add[1], git-checkout[1], git-restore[1], git-commit[1], git-reset[1] и git-stash[1].

interactive.diffFilter

Когда интерактивная команда (например, git add --patch) показывает раскрашенный diff, Git передаёт его через команду оболочки, заданную этой переменной конфигурации. Команда может дополнительно форматировать diff для удобства чтения, если сохраняет взаимно-однозначное соответствие со строками исходного 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

Выводит имена ссылок для всех коммитов, показываемых командой журнала. Возможные значения:

short

префиксы имён ссылок refs/heads/, refs/tags/ и refs/remotes/ не выводятся.

full

выводится полное имя ссылки (включая префикс).

auto

если вывод направлен в терминал, имена ссылок показываются так, как если бы был указан параметр short; в противном случае имена ссылок не показываются.

Это аналог параметра --decorate команды git log.

log.initialDecorationSet

По умолчанию git log показывает декорации только для некоторых известных пространств имён ссылок. Если задано all, все ссылки отображаются как декорации.

log.excludeDecoration

Исключает указанные шаблоны из декораций журнала. Это аналог параметра командной строки --decorate-refs-exclude, но параметр конфигурации можно переопределить параметром --decorate-refs.

log.diffMerges

Задаёт формат diff, используемый при указании --diff-merges=on; подробности см. в --diff-merges в git-log[1]. По умолчанию используется separate.

log.follow

Если значение равно true, git log будет вести себя так, как если бы был указан параметр --follow, когда задан один <path>. Это имеет те же ограничения, что и --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]), и объявит о поддержке этой функции при объявлении возможностей протокола версии 2. Значение «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, но значение рассматривается как ссылка на blob в репозитории. Если заданы и mailmap.file, и mailmap.blob, обрабатываются оба файла, причём записи из mailmap.file имеют приоритет. В репозитории без рабочей копии по умолчанию используется HEAD:.mailmap. В обычном репозитории значение по умолчанию пустое.

maintenance.auto

Этот логический параметр конфигурации определяет, запускают ли некоторые команды git maintenance run --auto после выполнения обычной работы. По умолчанию — true.

maintenance.autoDetach

Многие команды Git запускают автоматическое обслуживание после записи данных в репозиторий. Этот логический параметр конфигурации определяет, будет ли автоматическое обслуживание выполняться на переднем плане или процесс обслуживания будет отсоединён и продолжит работу в фоновом режиме.

Если значение не задано, в качестве запасного используется значение gc.autoDetach. Если не заданы оба значения, по умолчанию используется true, то есть процесс обслуживания будет отсоединён.

maintenance.strategy

Этот строковый параметр конфигурации позволяет выбрать одну из нескольких рекомендуемых стратегий обслуживания репозитория. Он определяет, какие задачи запускаются при выполнении git maintenance run, если не указаны аргументы --task=<task>. Этот параметр влияет на ручное, автоматическое и запланированное обслуживание. Набор выполняемых задач может различаться в зависимости от типа обслуживания.

Стратегию обслуживания можно дополнительно настроить с помощью параметров maintenance.<task>.enabled и maintenance.<task>.schedule. Если они заданы, эти значения используются вместо значений по умолчанию, предоставляемых параметром maintenance.strategy.

Возможные стратегии:

  • none: эта стратегия означает, что задачи не выполняются. Это стратегия по умолчанию для запланированного обслуживания.

  • gc: эта стратегия запускает задачу gc.

  • geometric: эта стратегия выполняет геометрическую переупаковку pack-файлов и поддерживает актуальность вспомогательных структур данных. Стратегия удаляет устаревшие данные из reflog и удаляет рабочие деревья, которые больше нельзя обнаружить. Если при геометрической переупаковке было бы принято решение объединить всё в один pack-файл, стратегия вместо этого создаёт cruft-пакет для всех недостижимых объектов. Объекты, уже входящие в cruft-пакет, удаляются по истечении срока хранения.

    Эта стратегия переупаковки полностью заменяет стратегию gc и рекомендуется для больших репозиториев. Это стратегия по умолчанию для ручного обслуживания.

  • incremental: этот параметр оптимизирован для выполнения небольших задач обслуживания, не удаляющих данные. При нём задача gc не планируется, зато задачи prefetch и commit-graph выполняются ежечасно, задачи loose-objects и incremental-repack — ежедневно, а задача pack-refs — еженедельно. При ручном обслуживании репозитория используется задача gc.

maintenance.<task>.enabled

Этот логический параметр конфигурации определяет, будет ли запускаться задача обслуживания с именем <task>, если для команды --task не указан параметр git maintenance run. Эти значения конфигурации игнорируются, если задан параметр --task. По умолчанию значение true имеет только maintenance.gc.enabled.

maintenance.<task>.schedule

Этот параметр конфигурации определяет, будет ли указанная задача <task> запускаться командой git maintenance run --schedule=<frequency>. Значение должно быть одним из следующих: «hourly», «daily» или «weekly».

maintenance.commit-graph.auto

Этот целочисленный параметр конфигурации определяет, как часто задача commit-graph должна запускаться в рамках git maintenance run --auto. Если значение равно нулю, задача commit-graph не будет запускаться с параметром --auto. Отрицательное значение заставляет выполнять задачу каждый раз. Положительное значение означает, что команда должна запускаться, когда число достижимых коммитов, отсутствующих в файле commit-graph, не меньше значения maintenance.commit-graph.auto. Значение по умолчанию — 100.

maintenance.loose-objects.auto

Этот целочисленный параметр конфигурации определяет, как часто задача loose-objects должна запускаться в рамках git maintenance run --auto. Если значение равно нулю, задача loose-objects не будет запускаться с параметром --auto. Отрицательное значение заставляет выполнять задачу каждый раз. Положительное значение означает, что команда должна запускаться, когда число отдельных объектов не меньше значения maintenance.loose-objects.auto. Значение по умолчанию — 100.

maintenance.loose-objects.batchSize

Этот целочисленный параметр конфигурации определяет максимальное число отдельных объектов, записываемых в pack-файл во время выполнения задачи loose-objects. Значение по умолчанию — пятьдесят тысяч. Укажите значение 0, чтобы не устанавливать ограничение.

maintenance.incremental-repack.auto

Этот целочисленный параметр конфигурации определяет, как часто задача incremental-repack должна запускаться в рамках git maintenance run --auto. Если значение равно нулю, задача incremental-repack не будет запускаться с параметром --auto. Отрицательное значение заставляет выполнять задачу каждый раз. Положительное значение означает, что команда должна запускаться, когда число pack-файлов, не включённых в multi-pack-index, не меньше значения maintenance.incremental-repack.auto. Значение по умолчанию — 10.

maintenance.geometric-repack.auto

Этот целочисленный параметр конфигурации определяет, как часто задача geometric-repack должна запускаться в рамках git maintenance run --auto. Если значение равно нулю, задача geometric-repack не будет запускаться с параметром --auto. Отрицательное значение заставляет выполнять задачу каждый раз. Положительное значение означает, что команда должна запускаться, если есть pack-файлы, которые необходимо объединить для сохранения геометрической прогрессии, либо если имеется как минимум указанное число отдельных объектов, которые будут записаны в новый pack-файл. Значение по умолчанию — 100.

maintenance.geometric-repack.splitFactor

Этот целочисленный параметр конфигурации определяет коэффициент геометрической последовательности. Подробности см. в параметре --geometric= команды git-repack[1]. По умолчанию используется 2.

maintenance.reflog-expire.auto

Этот целочисленный параметр конфигурации определяет, как часто задача reflog-expire должна запускаться в рамках git maintenance run --auto. Если значение равно нулю, задача reflog-expire не будет запускаться с параметром --auto. Отрицательное значение заставляет выполнять задачу каждый раз. Положительное значение означает, что команда должна запускаться, когда число устаревших записей в reflog «HEAD» не меньше значения maintenance.loose-objects.auto. Значение по умолчанию — 100.

maintenance.rerere-gc.auto

Этот целочисленный параметр конфигурации определяет, как часто задача rerere-gc должна запускаться в рамках git maintenance run --auto. Если значение равно нулю, задача rerere-gc не будет запускаться с параметром --auto. Отрицательное значение заставляет выполнять задачу каждый раз. При любом положительном значении команда запускается, если каталог «rr-cache» существует и содержит хотя бы одну запись, независимо от того, устарела она или нет. В будущем эта эвристика может быть уточнена. Значение по умолчанию — 1.

maintenance.worktree-prune.auto

Этот целочисленный параметр конфигурации определяет, как часто задача worktree-prune должна запускаться в рамках git maintenance run --auto. Если значение равно нулю, задача worktree-prune не будет запускаться с параметром --auto. Отрицательное значение заставляет выполнять задачу каждый раз. Положительное значение означает, что команда должна запускаться, когда число рабочих деревьев, подлежащих удалению, превышает это значение. Значение по умолчанию — 1.

man.viewer

Укажите программы, которые можно использовать для отображения справки в формате man. См. git-help[1].

man.<tool>.cmd

Укажите команду для вызова заданной программы просмотра man-страниц. Указанная команда выполняется в оболочке, а страница man передаётся ей в качестве аргумента. (См. git-help[1].)

man.<tool>.path

Переопределите путь к указанному инструменту, который можно использовать для отображения справки в формате man. См. git-help[1].

merge.conflictStyle

Задаёт стиль записи конфликтующих фрагментов в файлы рабочего дерева при слиянии. По умолчанию используется «merge»: выводится маркер конфликта <<<<<<<, изменения одной стороны, маркер =======, изменения другой стороны, а затем маркер >>>>>>>. Альтернативный стиль «diff3» добавляет маркер ||||||| и исходный текст перед маркером =======. Стиль «merge» обычно формирует меньшие конфликтующие области, чем diff3, как потому, что исходный текст исключён, так и потому, что совпадающие на обеих сторонах строки выделяются из области конфликта. Другой альтернативный стиль, «zdiff3», похож на diff3, но удаляет совпадающие строки обеих сторон из области конфликта, если они расположены близко к её началу или концу.

merge.defaultToUpstream

Если merge вызвана без аргумента-коммита, объединяет ветки, от которых зависит текущая ветка, используя их последние известные значения, сохранённые в ветках отслеживания удалённых репозиториев. Рассматриваются значения branch.<current branch>.merge, указывающие на ветки удалённого репозитория с именем, заданным параметром branch.<current-branch>.remote; затем они сопоставляются с соответствующими ветками отслеживания удалённых репозиториев через 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

Помимо имён веток, добавляет в сообщение журнала не более указанного числа однострочных описаний фактических объединяемых коммитов. По умолчанию — 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 переименования каталогов, влияя на то, что происходит во время слияния с новыми файлами, добавленными в каталог в одной ветви истории, если этот каталог был переименован в другой ветви истории. Возможные значения:

false

Обнаружение переименований каталогов отключено, поэтому такие новые файлы останутся в старом каталоге.

true

Обнаружение переименований каталогов включено, поэтому такие новые файлы будут перемещены в новый каталог.

conflict

Для таких путей будет сообщено о конфликте.

Если merge.renames имеет значение false, параметр merge.directoryRenames игнорируется и рассматривается как false. По умолчанию используется значение conflict.

merge.renormalize

Сообщает Git, что каноническое представление файлов в репозитории менялось со временем (например, в ранних коммитах текстовые файлы записывались с окончаниями строк CRLF, а в более поздних используются окончания строк LF). В таком репозитории для каждого файла, требующего трёхстороннего слияния содержимого, Git может преобразовать данные, записанные в коммитах, в канонический формат перед слиянием, чтобы уменьшить число ненужных конфликтов. Дополнительные сведения см. в разделе «Слияние ветвей с различающимися атрибутами checkin/checkout» в gitattributes[5].

merge.stat

Определяет, что выводить, если вообще что-либо выводить, между ORIG_HEAD и результатом слияния в конце операции. Возможные значения:

false

Ничего не выводить.

true

Выводить git diff --diffstat --summary ORIG_HEAD.

compact

Выводить git diff --compact-summary ORIG_HEAD.

Однако любое неизвестное значение (например, значение, добавленное в будущей версии Git) считается значением true, а не вызывает ошибку. По умолчанию используется значение true.

merge.autoStash

Если задано значение true, перед началом операции автоматически создаётся временная запись stash, а после её завершения она применяется. Это позволяет выполнять слияние в рабочем дереве с незакоммиченными изменениями. Однако используйте этот параметр с осторожностью: применение stash после успешного слияния может привести к нетривиальным конфликтам. Этот параметр можно переопределить параметрами --no-autostash и --autostash команды git-merge[1]. По умолчанию используется значение false.

merge.tool

Управляет выбором инструмента слияния для команды git-mergetool[1]. В списке ниже приведены допустимые встроенные значения. Любое другое значение рассматривается как пользовательский инструмент слияния; для него необходимо определить соответствующую переменную mergetool.<tool>.cmd.

merge.guitool

Управляет выбором инструмента слияния для команды git-mergetool[1], если указан флаг -g/--gui. В списке ниже приведены допустимые встроенные значения. Любое другое значение рассматривается как пользовательский инструмент слияния; для него необходимо определить соответствующую переменную 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 параметр --output, проверив вывод команды meld --help. Настройка mergetool.meld.hasOutput заставит Git пропустить эти проверки и использовать заданное значение. Установка для mergetool.meld.hasOutput значения true сообщает Git, что параметр --output нужно использовать безусловно; значение false предотвращает использование --output.

mergetool.meld.useAutoMerge

Если указан параметр --auto-merge, meld автоматически объединит все части без конфликтов, выделит конфликтующие части и дождётся решения пользователя. Установка для mergetool.meld.useAutoMerge значения true сообщает Git, что параметр --auto-merge с meld нужно использовать безусловно. Если установить для этого параметра значение auto, Git определит, поддерживается ли --auto-merge, и будет использовать --auto-merge только при наличии такой поддержки. Значение false полностью предотвращает использование --auto-merge и устанавливается по умолчанию.

mergetool.<variant>.layout

Настраивает расположение разделённых окон для <variant> vimdiff; допустимы значения vimdiff, nvimdiff, gvimdiff. При запуске git mergetool с параметром --tool=<variant> (или без --tool, если для merge.tool задано значение <variant>) Git проверит mergetool.<variant>.layout, чтобы определить расположение окон инструмента. Если конфигурация для конкретного варианта недоступна, используется значение vimdiff ' s. Если и оно недоступно, будет использовано расположение по умолчанию с четырьмя окнами. О настройке расположения см. раздел BACKEND SPECIFIC HINTS в git-mergetool[1].

mergetool.hideResolved

Во время слияния Git автоматически разрешает как можно больше конфликтов и записывает файл $MERGED, содержащий маркеры конфликтов вокруг конфликтов, которые не удалось разрешить; $LOCAL и $REMOTE обычно содержат версии файла до разрешения конфликтов Git. Этот флаг приводит к перезаписи $LOCAL и $REMOTE, чтобы инструменту слияния передавались только неразрешённые конфликты. Можно настроить отдельно для каждого инструмента с помощью переменной конфигурации mergetool.<tool>.hideResolved. По умолчанию используется значение false.

mergetool.keepBackup

После слияния исходный файл с маркерами конфликтов можно сохранить в файле с расширением .orig. Если для этой переменной задано значение false, этот файл не сохраняется. По умолчанию используется значение true (то есть резервные копии сохраняются).

mergetool.keepTemporaries

При вызове пользовательского инструмента слияния Git передаёт ему набор временных файлов. Если инструмент возвращает ошибку и для этой переменной задано значение true, временные файлы сохраняются; в противном случае они удаляются после завершения работы инструмента. По умолчанию используется значение false.

mergetool.writeToTemp

По умолчанию Git записывает временные версии BASE, LOCAL и REMOTE конфликтующих файлов в рабочем дереве. Если задано значение true, Git попытается использовать для этих файлов временный каталог. По умолчанию используется значение false.

mergetool.prompt

Запрашивать подтверждение перед каждым запуском программы разрешения конфликтов.

mergetool.guiDefault

Задайте значение true, чтобы по умолчанию использовать merge.guitool (эквивалентно указанию аргумента --gui), или значение auto, чтобы выбирать merge.guitool или merge.tool в зависимости от наличия значения переменной окружения DISPLAY. По умолчанию используется значение false; в этом случае аргумент --gui необходимо явно указать, чтобы использовать merge.guitool.

notes.mergeStrategy

Стратегия слияния, выбираемая по умолчанию при разрешении конфликтов в заметках. Должна иметь одно из значений: manual, ours, theirs, union или cat_sort_uniq. По умолчанию используется значение manual. Дополнительные сведения о каждой стратегии см. в разделе «NOTES MERGE STRATEGIES» в git-notes[1].

Эту настройку можно переопределить, передав параметр --strategy команде git-notes[1].

notes.<name>.mergeStrategy

Стратегия слияния, выбираемая при слиянии заметок в refs/notes/<name>. Переопределяет более общий параметр notes.mergeStrategy. Дополнительные сведения о доступных стратегиях см. в разделе «NOTES MERGE STRATEGIES» в git-notes[1].

notes.displayRef

Ссылка (или ссылки, если указана маска либо параметр задан несколько раз), из которой следует читать заметки при показе сообщений коммитов с помощью команд семейства git log, в дополнение к набору по умолчанию, заданному параметром core.notesRef или GIT_NOTES_REF.

Эту настройку можно переопределить переменной окружения GIT_NOTES_DISPLAY_REF, значением которой должен быть список ссылок или масок, разделённых двоеточиями.

Если указанные ссылки не существуют, будет выведено предупреждение; маски, которым не соответствует ни одна ссылка, молча игнорируются.

Эту настройку можно отключить параметром --no-notes для команд семейства git-log[1] либо параметром --notes=<ref>, принимаемым этими командами.

Эффективное значение core.notesRef (возможно, переопределённое значением GIT_NOTES_REF) также неявно добавляется в список отображаемых ссылок.

notes.rewrite.<command>

При переписывании коммитов с помощью <command> (в настоящее время amend или rebase), если значение этой переменной — false, git не будет копировать заметки из исходного коммита в переписанный. По умолчанию используется значение true. См. также параметр notes.rewriteRef ниже.

Эту настройку можно переопределить переменной окружения GIT_NOTES_REWRITE_REF, значением которой должен быть список ссылок или масок, разделённых двоеточиями.

notes.rewriteMode

Определяет, что делать при копировании заметок во время переписывания (см. параметр notes.rewrite.<command>), если целевой коммит уже содержит заметку. Должно быть задано одно из значений: overwrite, concatenate, cat_sort_uniq или ignore. По умолчанию используется значение concatenate.

Эту настройку можно переопределить переменной окружения GIT_NOTES_REWRITE_MODE.

notes.rewriteRef

При копировании заметок во время переписывания задаёт (полностью квалифицированную) ссылку, заметки из которой следует копировать. Можно указать маску; в этом случае будут скопированы заметки из всех подходящих ссылок. Эту настройку также можно задать несколько раз.

Значение по умолчанию отсутствует; чтобы включить переписывание заметок, необходимо настроить эту переменную. Задайте ей значение refs/notes/commits, чтобы включить переписывание заметок для коммитов по умолчанию.

Настройку можно переопределить переменной окружения GIT_NOTES_REWRITE_REF. Дополнительное описание её формата см. выше в разделе notes.rewrite.<command>.

pack.window

Размер окна, используемого командой git-pack-objects[1], если размер окна не указан в командной строке. По умолчанию — 10.

pack.depth

Максимальная глубина дельт, используемая командой git-pack-objects[1], если максимальная глубина не указана в командной строке. По умолчанию — 50. Максимальное значение — 4095.

pack.windowMemory

Максимальный объём памяти, который каждый поток команды git-pack-objects[1] может использовать для окна памяти пакета, если лимит не задан в командной строке. К значению можно добавить суффикс «k», «m» или «g». Если параметр не настроен (или явно установлен в 0), ограничение отсутствует.

pack.compression

Целое число от -1 до 9, задающее уровень сжатия объектов в файле пакета. Значение -1 соответствует значению по умолчанию zlib. Значение 0 означает отсутствие сжатия, а значения от 1 до 9 задают различные компромиссы между скоростью и размером; значение 9 обеспечивает самое медленное сжатие. Если параметр не задан, используется значение core.compression. Если и оно не задано, используется -1 — значение zlib по умолчанию, которое представляет собой «компромисс между скоростью и сжатием (в настоящее время соответствует уровню 6)».

Обратите внимание: изменение уровня сжатия не приводит к автоматическому пересжатию всех существующих объектов. Принудительно пересжать их можно, передав параметр -F команде git-repack[1].

pack.allowPackReuse

Если задано значение true или «single» и включены битовые карты достижимости, pack-objects попытается отправлять части файла пакета с битовой картой без изменений. Если задано значение «multi» и доступна битовая карта достижимости для нескольких пакетов, pack-objects попытается отправлять части всех пакетов в MIDX.

Если доступна только битовая карта для одного пакета, а для pack.allowPackReuse задано значение «multi», повторно используются части только файла пакета с битовой картой. Это может снизить расход памяти и процессорного времени при обслуживании fetch-запросов, но может привести к отправке немного большего пакета. По умолчанию используется значение true.

pack.island

Расширенное регулярное выражение, задающее набор островов дельт. Подробности см. в разделе «DELTA ISLANDS» в git-pack-objects[1].

pack.islandCore

Задаёт имя острова, объекты которого должны быть упакованы первыми. Это создаёт в начале одного из пакетов своего рода псевдопакет, чтобы объекты указанного острова можно было быстрее скопировать в любой пакет, который будет передан пользователю, запросившему эти объекты. На практике это означает, что указанный остров, скорее всего, должен соответствовать наиболее часто клонируемой части репозитория. См. также раздел «DELTA ISLANDS» в git-pack-objects[1].

pack.deltaCacheSize

Максимальный объём памяти в байтах, используемый для кэширования дельт командой git-pack-objects[1] перед их записью в пакет. Этот кэш ускоряет этап записи объектов, позволяя не вычислять повторно окончательный результат дельты после нахождения наилучшего соответствия для всех объектов. Однако перепаковка крупных репозиториев на машинах с нехваткой памяти может заметно замедлиться, особенно если из-за этого кэша система начнёт использовать подкачку. Значение 0 означает отсутствие ограничения. Минимальный размер — 1 байт; его можно использовать, чтобы фактически отключить кэш. По умолчанию — 256 МиБ.

pack.deltaCacheLimit

Максимальный размер дельты, кэшируемой командой git-pack-objects[1]. Этот кэш ускоряет этап записи объектов, позволяя не вычислять повторно окончательный результат дельты после нахождения наилучшего соответствия для всех объектов. По умолчанию — 1000. Максимальное значение — 65535.

pack.threads

Задаёт число потоков, запускаемых для поиска наилучших соответствий дельт. Для этого требуется, чтобы git-pack-objects[1] была собрана с поддержкой pthreads; в противном случае этот параметр игнорируется с предупреждением. Это позволяет сократить время упаковки на многопроцессорных машинах. Однако требуемый объём памяти для окна поиска дельт умножается на число потоков. Значение 0 заставляет Git автоматически определять число процессоров и соответствующим образом задавать число потоков.

pack.indexVersion

Задаёт версию индекса пакета по умолчанию. Допустимые значения: 1 — устаревший формат индекса пакета, использовавшийся в версиях Git до 1.5.2; 2 — новый формат индекса пакета, поддерживающий пакеты размером более 4 ГБ и обеспечивающий надлежащую защиту от перепаковки повреждённых пакетов. По умолчанию используется версия 2. Обратите внимание: если соответствующий пакет превышает 2 ГБ, принудительно используется версия 2, а этот параметр конфигурации игнорируется.

Если у вас старая версия Git, не распознающая файл *.idx версии 2, клонирование или получение данных по протоколу, отличному от собственного (например, «http»), при котором копируются и файл *.pack, и соответствующий файл *.idx с другой стороны, может привести к созданию репозитория, недоступного для вашей старой версии Git. Однако если размер файла *.pack меньше 2 ГБ, можно использовать git-index-pack[1] для файла *.pack, чтобы заново создать файл *.idx.

pack.packSizeLimit

Максимальный размер пакета. Эта настройка влияет только на упаковку в файл при повторной упаковке, то есть на протокол git:// она не влияет. Её можно переопределить параметром --max-pack-size команды git-repack[1]. При достижении этого ограничения создаётся несколько файлов пакетов.

Обратите внимание, что эта настройка редко бывает полезна и может привести к увеличению общего размера на диске (поскольку Git не будет хранить дельты между пакетами) и ухудшению производительности (поиск объектов в нескольких пакетах медленнее, чем в одном, а такие оптимизации, как битовые карты достижимости, не могут работать с несколькими пакетами).

Если вам необходимо активно использовать Git с файлами пакетов меньшего размера (например, потому что ваша файловая система не поддерживает большие файлы), эта настройка может помочь. Но если вы хотите передать файл пакета через носитель с ограничением по размеру (например, съёмный носитель, на котором не помещается весь репозиторий), скорее всего, лучше создать один большой файл пакета и разделить его с помощью универсальной программы для создания многотомных архивов (например, Unix split).

Минимально допустимый размер ограничен 1 МиБ. По умолчанию ограничение отсутствует. Поддерживаются распространённые суффиксы единиц измерения k, m или g.

pack.useBitmaps

Если значение равно true, Git будет использовать битовые карты пакетов (если они доступны) при упаковке в stdout (например, на стороне сервера во время fetch). По умолчанию — true. Обычно отключать эту настройку не нужно, за исключением случаев отладки битовых карт пакетов.

pack.useBitmapBoundaryTraversal

Если значение равно true, Git будет использовать экспериментальный алгоритм для вычисления запросов достижимости с помощью битовых карт. Вместо построения полных битовых карт для всех исключённых вершин и последующего объединения их операцией OR, исключённые вершины с существующими битовыми картами рассматриваются как добавочные (то есть включаются в результат с помощью OR, если они существуют, и игнорируются в противном случае), а битовая карта строится на границе.

При использовании этого алгоритма Git может включить слишком много объектов, поскольку он не раскрывает деревья, принадлежащие определённым коммитам UNINTERESTING. Эта неточность соответствует алгоритму обхода без битовых карт.

Во многих случаях это может ускорить работу по сравнению с точным алгоритмом, особенно если покрытие битовыми картами исключённой части запроса недостаточно.

pack.useSparse

Если значение равно true, Git по умолчанию будет использовать параметр --sparse в git pack-objects, если присутствует параметр --revs. Этот алгоритм обходит только деревья, встречающиеся в путях, в которых добавляются новые объекты. Это может значительно повысить производительность при вычислении пакета для отправки небольшого изменения. Однако в файл пакета могут попасть лишние объекты, если включённые коммиты содержат определённые типы прямых переименований. По умолчанию — true.

pack.usePathWalk

Включает по умолчанию параметр --path-walk для процессов git pack-objects. Полное описание см. в git-pack-objects[1].

pack.preferBitmapTips

Задаёт иерархию ссылок (например, "refs/heads/"); для указания нескольких иерархий этот параметр можно задать несколько раз. При выборе коммитов, для которых будут созданы битовые карты, предпочтение отдаётся коммиту на вершине ссылки, входящей в любую из настроенных иерархий.

Обратите внимание, что присвоение этому параметру значения refs/foo/ не означает, что коммиты на вершинах refs/foo/bar и refs/foo/baz обязательно будут выбраны. Это связано с тем, что коммиты для битовых карт выбираются из последовательности окон переменной длины.

Если в окне встречается коммит на вершине любой ссылки, являющейся суффиксом любого значения этого параметра, он немедленно получает преимущество перед любым другим коммитом в этом окне.

pack.writeBitmaps (устаревший параметр)

Это устаревший синоним параметра repack.writeBitmaps.

pack.writeBitmapHashCache

Если значение равно true, Git будет включать раздел «hash cache» в индекс битовых карт (если он записывается). Этот кэш можно использовать для эвристик Git при вычислении дельт, что потенциально позволяет получать более качественные дельты между объектами с битовыми картами и без них (например, при обслуживании fetch между старым пакетом с битовыми картами и объектами, отправленными после последнего gc). Недостаток в том, что для него требуется 4 байта дискового пространства на объект. По умолчанию — true.

При записи битовой карты достижимости для нескольких пакетов новые namehash не вычисляются; вместо этого все namehash, сохранённые в существующей битовой карте, переставляются в соответствующие позиции при записи новой битовой карты.

pack.writeBitmapLookupTable

Если значение равно true, Git будет включать раздел «lookup table» в индекс битовых карт (если он записывается). Эта таблица позволяет отложить загрузку отдельных битовых карт как можно дольше. Это может быть полезно в репозиториях с относительно большими индексами битовых карт. По умолчанию — false.

pack.readReverseIndex

Если значение равно true, Git будет читать все доступные файлы .rev (см. gitformat-pack[5]). Если значение равно false, обратный индекс будет создан с нуля и сохранён в памяти. По умолчанию — true.

pack.writeReverseIndex

Если значение равно true, Git будет записывать соответствующий файл .rev (см. gitformat-pack[5]) для каждого нового файла пакета во всех случаях, кроме git-fast-import[1] и механизма массовой фиксации изменений. По умолчанию — true.

pager.<cmd>

Если значение логическое, включает или отключает постраничный вывод результатов конкретной подкоманды Git при записи в tty. В противном случае включает постраничный вывод для подкоманды с помощью программы постраничного вывода, заданной значением pager.<cmd>. Если в командной строке указан параметр --paginate или --no-pager, он имеет приоритет над этой настройкой. Чтобы отключить постраничный вывод для всех команд, задайте для core.pager или GIT_PAGER значение cat.

pretty.<name>

Псевдоним строки формата --pretty=, описанной в git-log[1]. Любые заданные здесь псевдонимы можно использовать так же, как встроенные форматы 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]), чтобы сообщать об используемых им promisor-удалённых репозиториях, если таковые имеются. По умолчанию задано значение "false", то есть возможность "promisor-remote" не объявляется.

promisor.sendFields

Список дополнительных имён полей, связанных с удалёнными репозиториями, разделённых запятыми или пробелами. При объявлении promisor-удалённых репозиториев с помощью возможности "promisor-remote" сервер отправляет эти имена полей и связанные с ними значения из своей конфигурации (см. gitprotocol-v2[5]). В настоящее время поддерживаются только имена полей "partialCloneFilter" и "token".

partialCloneFilter

содержит фильтр частичного клонирования, используемый для удалённого репозитория.

token

содержит токен аутентификации для удалённого репозитория.

Если имя поля входит в этот список, а на сервере задана соответствующая переменная конфигурации "remote.foo.<field-name>" с непустым значением, то имя поля и его значение отправляются при объявлении promisor-удалённого репозитория "foo".

Этот список не действует, если для переменной конфигурации "promisor.advertise" не задано значение "true"; поля "name" и "url" всегда объявляются независимо от этой настройки.

promisor.acceptFromServer

Если задано значение "all", клиент принимает все promisor-удалённые репозитории, которые сервер может объявить с помощью возможности "promisor-remote". Если задано значение "knownName", клиент принимает promisor-удалённые репозитории, уже настроенные на клиенте и имеющие те же имена, что и объявленные клиентом. Это не очень безопасно, но может использоваться в корпоративной среде, где серверы и клиенты считаются надёжными и не будут менять имена и URL. Если задано значение "knownUrl", клиент принимает promisor-удалённые репозитории, для которых и имя, и URL, настроенные на клиенте, совпадают с объявленными сервером. Это безопаснее, чем "all" или "knownName", поэтому по возможности следует использовать именно этот вариант. По умолчанию задано значение "none", то есть ни один promisor-удалённый репозиторий, объявленный сервером, не будет принят. Принимая promisor-удалённый репозиторий, клиент соглашается с тем, что сервер может не включать в ответы на запросы клиента "fetch" и "clone" объекты, которые можно отложенно получить из этого promisor-удалённого репозитория. Сравнение имён и URL чувствительно к регистру. См. gitprotocol-v2[5].

promisor.checkFields

Список дополнительных имён полей, связанных с удалёнными репозиториями, разделённых запятыми или пробелами. Прежде чем принять promisor-удалённый репозиторий, клиент проверяет, совпадают ли значения этих полей, переданные сервером, со значениями полей в собственной конфигурации. В настоящее время поддерживаются только поля "partialCloneFilter" и "token".

Если одно из этих имён полей (например, "token") проверяется для объявленного promisor-удалённого репозитория (например, "foo"), для успешного прохождения проверки этого поля должны выполняться три условия:

  1. Соответствующая локальная настройка (например, remote.foo.token) должна быть задана.

  2. Сервер должен объявить поле "token" для удалённого репозитория "foo".

  3. Значение локально настроенного remote.foo.token должно в точности совпадать со значением поля "token", объявленным сервером.

Если хотя бы одно из этих условий не выполнено для любого имени поля из списка promisor.checkFields, объявленный удалённый репозиторий "foo" отклоняется.

Для поля "partialCloneFilter" это позволяет клиенту убедиться, что фильтр сервера совпадает с ожидаемым локально, предотвращая несоответствия в поведении фильтрации. Для поля "token" это можно использовать для проверки соответствия учётных данных аутентификации ожидаемым значениям.

Значения полей сравниваются с учётом регистра.

Поля "name" и "url" всегда проверяются в соответствии с политикой promisor.acceptFromServer, независимо от этой настройки.

Имена и значения полей сервер должен передавать с помощью возможности "promisor-remote", используя переменную конфигурации promisor.sendFields. Проверка полей выполняется только если для переменной конфигурации promisor.acceptFromServer не задано значение "None". Если задано значение "None", эта переменная конфигурации не действует. См. gitprotocol-v2[5].

promisor.storeFields

Список дополнительных имён полей, связанных с удалёнными репозиториями, разделённых запятыми или пробелами. Если клиент принимает объявленный удалённый репозиторий, он сохранит в своей конфигурации значения этих полей из объявления удалённого репозитория, а затем перезагрузит конфигурацию удалённых репозиториев. В настоящее время поддерживаются только поля "partialCloneFilter" и "token".

Например, если сервер объявляет для удалённого репозитория "foo" значение "partialCloneFilter=blob:limit=20k" и этот удалённый репозиторий принят, значение "blob:limit=20k" будет сохранено для переменной конфигурации "remote.foo.partialCloneFilter".

Однако если новое значение поля из объявления удалённого репозитория совпадает с существующим значением этого поля для удалённого репозитория на стороне клиента, конфигурация клиента не изменяется.

При сохранении нового значения в stderr выводится сообщение, чтобы уведомить об этом пользователей.

Обратите внимание, что по соображениям безопасности, если удалённый репозиторий ещё не настроен на стороне клиента, для него ничего не сохраняется. В любом случае новый удалённый репозиторий не создаётся и URL не сохраняется.

Перед сохранением фильтр частичного клонирования разбирается, чтобы проверить его корректность. Если он некорректен, выводится предупреждение, и фильтр не сохраняется.

Перед сохранением токена проверяется, что он не содержит управляющих символов. Если проверка не пройдена, выводится предупреждение, и токен не сохраняется.

protocol.allow

Если задано, определяет пользовательскую политику по умолчанию для всех протоколов, для которых явно не указана политика (protocol.<name>.allow). По умолчанию, если настройка не задана, для известных безопасных протоколов (http, https, git, ssh) действует политика always, для известных опасных протоколов (ext) — политика never, а для всех остальных протоколов (включая file) — политика user. Поддерживаются следующие политики:

  • always — протокол всегда можно использовать.

  • never — протокол никогда нельзя использовать.

  • user — протокол можно использовать, только если GIT_PROTOCOL_FROM_USER не задана или имеет значение 1. Эту политику следует использовать, если протокол должен быть доступен пользователю напрямую, но не должен использоваться командами, запускающими clone/fetch/push без участия пользователя, например при рекурсивной инициализации подмодулей.

protocol.<name>.allow

Задаёт политику для протокола <name>, используемого командами clone/fetch/push. Доступные политики описаны выше в разделе protocol.allow.

В настоящее время Git использует следующие имена протоколов:

  • file: любой локальный путь к файлу (включая URL file:// или локальные пути)

  • git: анонимный протокол git через прямое TCP-соединение (или прокси, если он настроен)

  • ssh: git через ssh (включая синтаксис host:path, ssh:// и т. д.).

  • http: git через http, как «умный http», так и «простой http». Обратите внимание: сюда not входит https; если вы хотите настроить оба варианта, настройте каждый отдельно.

  • внешние вспомогательные программы называются по имени своего протокола (например, используйте hg, чтобы разрешить вспомогательную программу git-remote-hg)

protocol.version

Если задано, клиенты будут пытаться взаимодействовать с сервером, используя указанную версию протокола. Если сервер её не поддерживает, взаимодействие переключается на версию 0. Если настройка не задана, по умолчанию используется 2. Поддерживаемые версии:

  • 0 — исходный протокол передачи данных.

  • 1 — исходный протокол передачи данных с добавлением строки версии в начальный ответ сервера.

  • 2 — протокол передачи данных версии 2; см. gitprotocol-v2[5].

pull.ff

По умолчанию Git не создаёт дополнительный коммит слияния при слиянии коммита, являющегося потомком текущего коммита. Вместо этого вершина текущей ветки перемещается перемоткой вперёд. Если задано значение false, эта переменная указывает Git создавать в таком случае дополнительный коммит слияния (эквивалентно передаче параметра --no-ff в командной строке). Если задано значение only, разрешены только такие слияния перемоткой вперёд (эквивалентно передаче параметра --ff-only в командной строке). При выполнении pull эта настройка переопределяет merge.ff.

pull.rebase

Если значение равно true, перебазирует ветки поверх полученной ветки вместо слияния ветки по умолчанию из удалённого репозитория по умолчанию при выполнении "git pull". Чтобы задать это поведение отдельно для каждой ветки, см. "branch.<name>.rebase".

Если задано значение merges (или просто m), передаёт параметр --rebase-merges команде git rebase, чтобы локальные коммиты слияния включались в перебазирование (подробности см. в git-rebase[1]).

Если задано значение interactive (или просто i), перебазирование выполняется в интерактивном режиме.

ПРИМЕЧАНИЕ: эта операция может быть опасной; не используйте её, если не понимаете её последствий (подробности см. в git-rebase[1]).

pull.octopus

Стратегия слияния по умолчанию при одновременном получении нескольких веток.

pull.autoStash

Если значение равно true, автоматически создаёт временную запись stash для сохранения локальных изменений перед началом операции и восстанавливает их после её завершения. Это может быть удобно, когда "git pull" выполняет перебазирование (а не слияние): в отличие от pull со слиянием, которое допускает локальные изменения, не мешающие слиянию, pull с перебазированием отказывается работать при наличии любых локальных изменений.

Если задан параметр pull.autostash (со значением true или false), параметры merge.autostash и rebase.autostash игнорируются. Если параметр pull.autostash вообще не задан, то в зависимости от значения pull.rebase используется либо merge.autostash, либо rebase.autostash. Можно переопределить параметром командной строки --[no-]autostash.

pull.twohead

Стратегия слияния по умолчанию при получении одной ветки.

push.autoSetupRemote

Если задано значение true, предполагает --set-upstream при отправке по умолчанию, если для текущей ветки не существует отслеживаемой upstream-ветки; эта настройка действует с параметрами push.default, simple и upstream команды current. Это полезно, если вы хотите, чтобы новые ветки по умолчанию отправлялись в удалённый репозиторий по умолчанию (как при поведении push.default=current), а также хотите настроить отслеживание upstream-ветки. Вероятнее всего, эта настройка будет полезна в централизованных рабочих процессах simple, где ожидается, что все ветки будут иметь одинаковые имена в удалённом репозитории.

push.default

Определяет действие, которое должна выполнять команда git push, если спецификация ссылки не задана (в командной строке, конфигурации или где-либо ещё). Разные значения подходят для разных рабочих процессов; например, в полностью централизованном рабочем процессе (то есть когда источник fetch совпадает с назначением push) наиболее подходящим, вероятно, будет upstream. Возможные значения:

nothing

ничего не отправлять (завершиться с ошибкой), если не задана спецификация ссылки. В первую очередь предназначено для тех, кто хочет избежать ошибок, всегда указывая параметры явно.

current

отправить текущую ветку, чтобы обновить ветку с тем же именем на принимающей стороне. Подходит как для централизованных, так и для нецентрализованных рабочих процессов.

upstream

отправить текущую ветку обратно в ветку, изменения из которой обычно интегрируются в текущую ветку (она называется @{upstream}). Этот режим имеет смысл только при отправке в тот же репозиторий, из которого обычно выполняется получение (то есть в централизованном рабочем процессе).

tracking

устаревший синоним параметра upstream.

simple

отправить текущую ветку в удалённый репозиторий под тем же именем.

Для этого режима необходимо знать, в какой удалённый репозиторий выполняется отправка. При отправке обратно в тот же удалённый репозиторий, из которого вы выполняете получение, у текущей ветки также должна быть отслеживаемая upstream-ветка с тем же именем.

Этот режим используется по умолчанию начиная с Git 2.0 и является самым безопасным вариантом для начинающих.

matching

отправить все ветки, имеющие одинаковые имена на обоих концах. Благодаря этому репозиторий, в который вы отправляете изменения, запоминает набор отправляемых веток (например, если вы всегда отправляете туда maint и master, но не другие ветки, в репозитории назначения будут эти две ветки, и ваши локальные maint и master будут туда отправлены).

Чтобы эффективно использовать этот режим, перед запуском git push необходимо убедиться, что all все ветки, которые вы собираетесь отправить, готовы к отправке, поскольку этот режим предназначен для отправки всех веток за один раз. Если вы обычно заканчиваете работу только над одной веткой и отправляете результат, пока другие ветки ещё не завершены, этот режим вам не подходит. Кроме того, этот режим не подходит для отправки в общий центральный репозиторий, поскольку другие люди могут добавлять туда новые ветки или обновлять вершины существующих веток без вашего контроля.

Раньше это значение использовалось по умолчанию, но начиная с Git 2.0 это не так (новое значение по умолчанию — simple).

push.followTags

Если задано значение true, по умолчанию включается параметр --follow-tags. Эту настройку можно переопределить при отправке, указав --no-follow-tags.

push.gpgSign

Может иметь логическое значение или строку if-asked. Значение true приводит к тому, что все отправки подписываются GPG, как если бы команде git-push[1] был передан параметр --signed. Строка if-asked приводит к подписыванию отправок, если сервер поддерживает такую возможность, как если бы команде git push был передан параметр --signed=if-asked. Значение false может переопределить значение из файла конфигурации с более низким приоритетом. Явный параметр командной строки всегда имеет приоритет над этой настройкой.

push.pushOption

Если в командной строке не задан аргумент --push-option=<option>, команда git push ведёт себя так, как если бы каждое значение <option> этой переменной было задано в виде --push-option=<option>.

Эта переменная может иметь несколько значений; пустое значение в файле конфигурации с более высоким приоритетом (например, .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, это эквивалентно указанию --force-if-includes в командной строке в качестве параметра git-push[1]. Указание --no-force-if-includes при отправке переопределяет эту настройку.

push.negotiate

Если задано значение true, попытаться уменьшить размер отправляемого pack-файла посредством раундов согласования, в ходе которых клиент и сервер пытаются найти общие коммиты. Если задано значение false, Git будет полагаться только на объявление ссылок сервера для поиска общих коммитов.

push.useBitmaps

Если задано значение false, отключить использование bitmap-индексов для git push, даже если pack.useBitmaps имеет значение true, не запрещая другим операциям Git использовать bitmap-индексы. По умолчанию — true.

rebase.backend

Бэкенд по умолчанию для выполнения перебазирования. Возможные варианты: apply или merge. В будущем, если бэкенд merge получит все оставшиеся возможности бэкенда apply, эта настройка может стать ненужной.

rebase.stat

Показывать ли статистику различий изменений в upstream с момента последнего перебазирования. По умолчанию — false.

rebase.autoSquash

Если установлено значение true, по умолчанию включить параметр --autosquash команды git-rebase[1] для интерактивного режима. Это можно переопределить параметром --no-autosquash.

rebase.autoStash

Если установлено значение true, автоматически создать временную запись в stash перед началом операции и применить её после завершения операции. Это позволяет запускать перебазирование в рабочем дереве с незакоммиченными изменениями. Однако используйте эту возможность осторожно: применение stash после успешного перебазирования может привести к нетривиальным конфликтам. Этот параметр можно переопределить параметрами --no-autostash и --autostash команды git-rebase[1]. По умолчанию — false.

rebase.updateRefs

Если установлено значение true, по умолчанию включить параметр --update-refs.

rebase.missingCommitsCheck

Если установлено значение "warn", команда git rebase -i выведет предупреждение, если некоторые коммиты удалены (например, удалена строка), однако перебазирование всё равно продолжится. Если установлено значение "error", будет выведено предыдущее предупреждение, а перебазирование остановится; затем можно использовать git rebase --edit-todo, чтобы исправить ошибку. Если установлено значение "ignore", проверка не выполняется. Чтобы удалить коммит без предупреждения или ошибки, используйте команду drop в списке todo. По умолчанию — "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-cousins, no-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 maintenance run --auto" после получения данных от git-push и обновления ссылок. Чтобы отключить это поведение, задайте для этой переменной значение false.

receive.certNonceSeed

Если задать для этой переменной строковое значение, git receive-pack будет принимать git push --signed и проверять его с помощью nonce, защищённого HMAC с этой строкой в качестве секретного ключа.

receive.certNonceSlop

Если git push --signed отправляет сертификат отправки с nonce, выданным receive-pack, обслуживающим тот же репозиторий, в течение указанного числа секунд, экспортировать nonce из сертификата в GIT_PUSH_CERT_NONCE для хуков (вместо значения, которое receive-pack попросил включить отправляющую сторону). Это может несколько упростить написание проверок в pre-receive и post-receive. Вместо проверки переменной среды GIT_PUSH_CERT_NONCE_SLOP, которая указывает, на сколько секунд nonce просрочен, чтобы решить, принимать ли сертификат, им достаточно проверить, что GIT_PUSH_CERT_NONCE_STATUS имеет значение OK.

receive.fsckObjects

Если установлено значение true, git-receive-pack проверяет все полученные объекты. Описание проверок см. в transfer.fsckObjects. По умолчанию — false. Если значение не задано, вместо него используется значение transfer.fsckObjects.

receive.fsck.<msg-id>

Действует так же, как fsck.<msg-id>, но используется командой git-receive-pack[1], а не git-fsck[1]. Подробности см. в документации fsck.<msg-id>.

receive.fsck.skipList

Действует так же, как fsck.skipList, но используется командой git-receive-pack[1], а не git-fsck[1]. Подробности см. в документации fsck.skipList.

receive.keepAlive

После получения pack-файла от клиента receive-pack может не выдавать никаких данных (если указан параметр --quiet) во время обработки pack-файла, из-за чего некоторые сети разрывают TCP-соединение. Если этот параметр задан, и receive-pack не передаёт данные на этом этапе в течение receive.keepAlive секунд, он отправит короткий пакет keepalive. Значение по умолчанию — 5 секунд; задайте 0, чтобы полностью отключить keepalive-пакеты.

receive.unpackLimit

Если число объектов, полученных при отправке, меньше этого предела, объекты будут распакованы в отдельные файлы объектов. Если число полученных объектов равно этому пределу или превышает его, полученный pack-файл будет сохранён как pack-файл после добавления всех недостающих базовых дельт. Сохранение pack-файла при отправке может ускорить завершение операции, особенно в медленных файловых системах. Если значение не задано, вместо него используется значение transfer.unpackLimit.

receive.maxInputSize

Если размер входящего потока pack-файла превышает этот предел, git-receive-pack завершится с ошибкой, а не примет 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".

Другой вариант — "updateInstead": при отправке в текущую ветку он обновит рабочее дерево. Этот вариант предназначен для синхронизации рабочих каталогов, когда к одной из сторон трудно получить доступ через интерактивный ssh (например, к работающему веб-сайту; поэтому рабочий каталог должен быть чистым). Этот режим также удобен при разработке внутри виртуальной машины для тестирования и исправления кода в разных операционных системах.

По умолчанию "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. Команды, соответствующие этим префиксам, выполняются внешним хуком "proc-receive", а не внутренней функцией execute_commands. Если эта переменная не задана, хук "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-update-server-info после получения данных от git-push и обновления ссылок.

receive.shallowUpdate

Если установлено значение true, файл .git/shallow можно обновлять, когда для новых ссылок требуются новые неглубокие корни. В противном случае эти ссылки отклоняются.

reftable.blockSize

Размер в байтах, используемый бэкендом reftable при записи блоков. Размер блока определяется средством записи и не обязательно должен быть степенью двойки. Размер блока должен превышать длину самого длинного имени ссылки или записи журнала в репозитории, поскольку ссылки не могут занимать несколько блоков.

Рекомендуются степени двойки, удобные для системы виртуальной памяти или файловой системы (например, 4kB или 8kB). Больший размер (64kB) может обеспечить лучшее сжатие, но потенциально увеличит затраты на чтение при доступе.

Максимальный размер блока — 16777215 байт (15.99 MiB). Значение по умолчанию — 4096 байт (4kB). Значение 0 означает использование значения по умолчанию.

reftable.restartInterval

Интервал создания точек перезапуска. Бэкенд reftable определяет точки перезапуска при создании файла. Для меньших размеров блоков (4k или 8k) может быть удобнее создавать точку каждые 16 записей, а для больших размеров блоков (64k) — каждые 64.

Более частое создание точек перезапуска уменьшает эффективность сжатия префиксов и увеличивает объём таблицы перезапуска; оба фактора увеличивают размер файла.

Более редкое создание точек перезапуска повышает эффективность сжатия префиксов и уменьшает общий размер файла, но увеличивает затраты на чтение из-за необходимости обходить больше записей после этапа двоичного поиска.

Поддерживается не более 65535 точек перезапуска на блок.

По умолчанию точка перезапуска создаётся каждые 16 записей. Значение 0 означает использование значения по умолчанию.

reftable.indexObjects

Должен ли бэкенд reftable записывать блоки объектов. Блоки объектов представляют собой обратное соответствие идентификаторов объектов ссылкам, указывающим на них.

Значение по умолчанию — true.

reftable.geometricFactor

При добавлении новой таблицы в стек бэкенд reftable выполняет автоматическую компактизацию, чтобы количество таблиц оставалось небольшим. Для этого бэкенд обеспечивает, чтобы размеры таблиц образовывали геометрическую последовательность.

По умолчанию в геометрической последовательности используется коэффициент 2, то есть каждая следующая по размеру таблица должна быть как минимум вдвое больше предыдущей. Поддерживается максимальный коэффициент 256.

reftable.lockTimeout

При добавлении новой таблицы в стек бэкенд reftable должен заблокировать центральный файл "tables.list" перед его обновлением. Эта настройка определяет, как долго процесс будет ждать получения блокировки, если её уже получил другой процесс. Значение 0 означает отсутствие повторных попыток; -1 означает бесконечные попытки. По умолчанию — 100 (то есть повторять попытки в течение 100 мс).

remote.pushDefault

Удалённый репозиторий, в который выполняется отправка по умолчанию. Переопределяет branch.<name>.remote для всех веток и переопределяется параметром branch.<name>.pushRemote для отдельных веток.

remote.<name>.url

URL удалённого репозитория. См. git-fetch[1] или git-push[1]. Для настроенного удалённого репозитория можно указать несколько URL; в этом случае первый используется для получения, а все — для отправки (если не задан параметр 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

Набор "refspec" по умолчанию для git-fetch[1]. См. git-fetch[1].

remote.<name>.push

Набор "refspec" по умолчанию для git-push[1]. См. git-push[1].

remote.<name>.mirror

Если установлено значение true, отправка в этот удалённый репозиторий будет автоматически выполняться так, как если бы в командной строке был указан параметр --mirror.

remote.<name>.skipDefaultUpdate

Устаревший синоним remote.<name>.skipFetchAll (если в файлах конфигурации заданы оба параметра с разными значениями, будет использовано значение последнего вхождения).

remote.<name>.skipFetchAll

Если установлено значение true, этот удалённый репозиторий будет пропускаться при обновлении с помощью git-fetch[1] и подкоманды update команды git-remote[1], а также игнорироваться задачей предварительного получения git maintenance.

remote.<name>.receivepack

Программа по умолчанию, запускаемая на удалённой стороне при отправке. См. параметр --receive-pack команды git-push[1].

remote.<name>.uploadpack

Программа по умолчанию, запускаемая на удалённой стороне при получении. См. параметр --upload-pack команды git-fetch-pack[1].

remote.<name>.tagOpt

Если задать для этого значения --no-tags, автоматическое получение тегов при получении данных с удалённого репозитория <name> будет отключено. Если задать --tags, будут получены все теги удалённого репозитория <name>, даже если они недостижимы из вершин веток удалённого репозитория. Передача этих флагов непосредственно команде git-fetch[1] может переопределить эту настройку. См. параметры --tags и --no-tags команды git-fetch[1].

remote.<name>.vcs

Если задать значение <vcs>, Git будет взаимодействовать с удалённым репозиторием с помощью вспомогательной программы git-remote-<vcs>.

remote.<name>.prune

Если установлено значение true, получение данных с этого удалённого репозитория по умолчанию также удалит все ссылки отслеживания удалённых веток, которых больше нет в удалённом репозитории (как если бы в командной строке был указан параметр --prune). Переопределяет настройки fetch.prune, если они заданы.

remote.<name>.pruneTags

Если установлено значение true, получение данных с этого удалённого репозитория по умолчанию также удалит локальные теги, которых больше нет в удалённом репозитории, если очистка в целом включена через remote.<name>.prune, fetch.prune или --prune. Переопределяет настройки fetch.pruneTags, если они заданы.

См. также remote.<name>.prune и раздел PRUNING в git-fetch[1].

remote.<name>.promisor

Если установлено значение true, этот удалённый репозиторий будет использоваться для получения обещанных объектов.

remote.<name>.partialclonefilter

Фильтр, применяемый при получении данных с этого удалённого репозитория-источника обещанных объектов. Изменение или очистка этого значения повлияет только на получение новых коммитов. Чтобы получить связанные объекты для коммитов, уже присутствующих в локальной базе объектов, используйте параметр --refetch команды git-fetch[1].

remote.<name>.serverOption

Набор параметров сервера по умолчанию, используемых при получении данных с этого удалённого репозитория. Эти параметры сервера можно переопределить аргументами командной строки --server-option=.

Это многозначная переменная; пустое значение можно использовать в файле конфигурации с более высоким приоритетом (например, .git/config в репозитории), чтобы очистить значения, унаследованные из файлов конфигурации с более низким приоритетом (например, $HOME/.gitconfig).

remote.<name>.negotiationRestrict

При согласовании с этим удалённым репозиторием во время git fetch ограничить коммиты, объявляемые в строках "have", только коммитами, достижимыми из ссылок, соответствующих заданным шаблонам. Этот многозначный параметр конфигурации действует так же, как параметр --negotiation-restrict в командной строке.

Каждое значение — это точное имя ссылки (например, refs/heads/release) или шаблон glob (например, refs/heads/release/*). Синтаксис шаблонов такой же, как у --negotiation-restrict.

Эти значения конфигурации используются по умолчанию для параметра командной строки --negotiation-restrict. Если в командной строке указан --negotiation-restrict (или его синоним --negotiation-tip), значения конфигурации не используются.

Эти значения также влияют на согласование во время git push, если включён параметр push.negotiate.

Пустые значения означают, что все предыдущие значения следует игнорировать, позволяя сбросить список в более широких конфигурациях.

remote.<name>.negotiationInclude

При согласовании с этим удалённым репозиторием во время git fetch клиент объявляет список существующих локально коммитов. В репозиториях со множеством ссылок этот список "haves" может быть усечён. В зависимости от структуры данных исключение некоторых ссылок может быть затратным. Этот многозначный параметр конфигурации задаёт ссылки, хеши коммитов или шаблоны glob ссылок, вершины которых всегда следует отправлять в качестве коммитов "have" при согласовании во время получения данных с этого удалённого репозитория.

Каждое значение — это точное имя ссылки (например, refs/heads/release), хеш коммита или шаблон glob (например, refs/heads/release/*). Синтаксис шаблонов такой же, как у --negotiation-include.

Эти значения конфигурации используются по умолчанию для параметра командной строки --negotiation-include. Если в командной строке указан --negotiation-include, значения конфигурации не используются.

Этот параметр дополняет обычный процесс согласования: алгоритм согласования по-прежнему выполняется и объявляет выбранные им коммиты, но ссылки, соответствующие remote.<name>.negotiationInclude, отправляются безусловно в дополнение к коммитам, выбранным эвристически.

Эти значения также влияют на согласование во время git push, если включён параметр push.negotiate.

Пустые значения означают, что все предыдущие значения следует игнорировать, позволяя сбросить список в более широких конфигурациях.

remote.<name>.followRemoteHEAD

Как git-fetch[1] должен обрабатывать обновления remotes/<name>/HEAD при получении данных с использованием настроенных refspec удалённого репозитория. Значение по умолчанию — "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] создаёт пакеты, использующие смещения баз дельт. Если необходимо совместно использовать ваш репозиторий с Git версии старше 1.4.4 — напрямую или через простой протокол, например http, — задайте для этого параметра значение "false" и выполните перепаковку. Доступ к репозиторию из старых версий Git по встроенному протоколу этот параметр не затрагивает.

repack.packKeptObjects

Если задано значение true, команда git repack работает так, как если бы ей передали --pack-kept-objects. Подробности см. в git-repack[1]. Обычно по умолчанию используется значение false, но если создаётся bitmap-индекс (с помощью --write-bitmap-index или repack.writeBitmaps), используется значение true.

repack.useDeltaIslands

Если задано значение true, команда git repack работает так, как если бы ей передали --delta-islands. По умолчанию используется значение false.

repack.writeBitmaps

Если задано значение true, Git создаёт bitmap-индекс при упаковке всех объектов на диск (например, при запуске git repack -a). Этот индекс может ускорить этап «подсчёта объектов» при последующем создании пакетов для клонирования и получения данных, ценой некоторого объёма дискового пространства и дополнительного времени на первоначальную перепаковку. Этот параметр не действует, если создаётся несколько файлов пакетов. По умолчанию для голых репозиториев задано значение true, а для остальных — false.

repack.updateServerInfo

Если задано значение false, git-repack[1] не запускает git-update-server-info[1]. По умолчанию используется значение true. При значении true этот параметр можно переопределить параметром -n команды git-repack[1].

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

Параметры, используемые командой git-pack-objects[1] при создании cruft-пакета, если соответствующие параметры не заданы в командной строке. Значения по умолчанию и описание см. в одноимённых переменных конфигурации pack.*.

repack.midxMustContainCruft

Если задано значение true, git-repack[1] безусловно включит cruft-пакеты, если они есть, в индекс нескольких пакетов при запуске с параметром --write-midx. При значении false cruft-пакеты включаются в MIDX только при необходимости (например, если они могут потребоваться для формирования замыкания достижимости с bitmap-индексами MIDX). По умолчанию используется значение true.

repack.midxSplitFactor

Коэффициент, используемый в условии геометрического объединения при уплотнении инкрементальных слоёв MIDX во время git repack при запуске с параметром --write-midx=incremental.

Соседние слои объединяются, если накопленное число объектов в более новом слое превышает 1/<N> от числа объектов в следующем, более глубоком слое. Значение должно быть не меньше 2. По умолчанию используется значение 2.

repack.midxNewLayerThreshold

Минимальное число пакетов в верхнем слое MIDX, при достижении которого эти пакеты рассматриваются как кандидаты на геометрическую перепаковку во время git repack --write-midx=incremental.

Если в верхнем слое меньше пакетов, чем задано этим пороговым значением, эти пакеты полностью исключаются из геометрической перепаковки и остаются без изменений. Значение должно быть не меньше 1. По умолчанию используется значение 8.

rerere.autoUpdate

Если задано значение true, git-rerere обновляет индекс полученным содержимым после успешного разрешения конфликтов с помощью ранее записанных решений. По умолчанию используется значение false.

rerere.enabled

Включает запись разрешённых конфликтов, чтобы при повторном возникновении идентичные фрагменты конфликтов можно было разрешить автоматически. По умолчанию git-rerere[1] включена, если в $GIT_DIR есть каталог rr-cache, например, если в репозитории ранее использовалась команда "rerere".

revert.reference

Если задать для этой переменной значение true, команда git revert будет работать так, как если бы ей передали параметр --reference.

safe.bareRepository

Указывает, с какими голыми репозиториями будет работать Git. Поддерживаются следующие значения:

  • all: Git работает со всеми голыми репозиториями. Это значение по умолчанию в Git 2.x.

  • explicit: Git работает только с голыми репозиториями, указанными с помощью параметра командной строки верхнего уровня --git-dir или переменной окружения GIT_DIR (см. git[1]). Это будет значением по умолчанию в Git 3.0.

Если в вашем рабочем процессе не используются голые репозитории, может быть полезно задать safe.bareRepository значение explicit в глобальной конфигурации. Это защитит от атак, при которых клонируется репозиторий, содержащий голый репозиторий, а затем в этом каталоге запускается команда Git.

Если вы регулярно используете голые репозитории и хотите сохранить текущее поведение после обновления до Git 3.0, задайте для safe.bareRepository значение all в глобальной или системной конфигурации.

Этот параметр конфигурации учитывается только в защищённой конфигурации (см. SCOPES). Это не позволяет недоверенным репозиториям изменять его значение.

safe.directory

Эти записи конфигурации указывают отслеживаемые Git каталоги, которые считаются безопасными, даже если принадлежат не текущему пользователю. По умолчанию Git отказывается даже разбирать конфигурацию репозитория, принадлежащего другому пользователю, не говоря уже о запуске его хуков. Этот параметр конфигурации позволяет пользователям задавать исключения, например для намеренно общих репозиториев (см. параметр --shared команды git-init[1]).

Этот параметр может иметь несколько значений: например, можно добавить несколько каталогов с помощью git config --add. Чтобы сбросить список безопасных каталогов (например, переопределить каталоги, заданные в системной конфигурации), добавьте запись safe.directory с пустым значением.

Этот параметр конфигурации учитывается только в защищённой конфигурации (см. SCOPES). Это не позволяет недоверенным репозиториям изменять его значение.

Значение этого параметра подставляется: ~/<path> раскрывается в путь относительно домашнего каталога, а %(prefix)/<path> — в путь относительно (временного) префикса Git.

Чтобы полностью отключить эту проверку безопасности, задайте для safe.directory строковое значение *. Тогда все репозитории будут считаться так, как если бы их каталоги были указаны в списке safe.directory. Если safe.directory=* задан в системной конфигурации и вы хотите снова включить эту защиту, сначала инициализируйте список пустым значением, а затем перечислите репозитории, которые считаете безопасными. Указание каталога с добавленным к нему /* разрешит доступ ко всем репозиториям внутри указанного каталога.

Как пояснялось выше, по умолчанию Git разрешает доступ только к репозиториям, принадлежащим самому пользователю, то есть пользователю, запустившему Git. Однако если Git запущен от имени root на платформе, отличной от Windows, где доступна команда sudo, Git проверяет переменную окружения SUDO_UID, которую создаёт sudo, и разрешает доступ к UID, записанному в её значении, в дополнение к ID из root. Это упрощает распространённую последовательность действий при установке: "make && sudo make install". Процесс Git, запущенный от имени sudo, работает от имени root, но команда sudo экспортирует переменную окружения, в которой записан ID исходного пользователя. Если такое поведение вам не подходит и вы хотите, чтобы Git доверял только репозиториям, принадлежащим root, удалите переменную SUDO_UID из окружения root перед запуском Git.

sendemail.identity

Идентификатор конфигурации. Если он задан, значения из подраздела sendemail.<identity> имеют приоритет над значениями раздела sendemail. Идентификатор по умолчанию — это значение sendemail.identity.

sendemail.smtpEncryption

Описание см. в git-send-email[1]. Обратите внимание: на этот параметр не распространяется механизм identity.

sendemail.smtpSSLCertPath

Путь к сертификатам центра сертификации (каталог или отдельный файл). Чтобы отключить проверку сертификатов, задайте пустую строку.

sendemail.smtpSSLClientCert

Путь к файлу сертификата клиента, который следует предоставить по запросу сервера. Это необходимо, если сервер настроен на проверку сертификатов клиентов. Если соответствующий закрытый ключ не включён в файл, его необходимо указать с помощью sendemail.smtpSSLClientKey или параметра --smtp-ssl-client-key.

sendemail.smtpSSLClientKey

Путь к файлу закрытого ключа клиента, соответствующего сертификату клиента. Во избежание ошибок конфигурации этот параметр необходимо использовать вместе с sendemail.smtpSSLClientCert или параметром --smtp-ssl-client-cert. Если ключ клиента включён в сертификат клиента, выбор закрытого ключа зависит от формата сертификата. Подробности см. на странице https://metacpan.org/pod/IO::Socket::SSL.

sendemail.<identity>.*

Версии параметров sendemail.*, перечисленных ниже, для конкретного идентификатора. При выборе этого идентификатора они имеют приоритет над остальными значениями — независимо от того, выбран он через командную строку или с помощью sendemail.identity.

sendemail.multiEdit

Если задано значение true (по умолчанию), для редактирования файлов запускается один экземпляр редактора (патчей при использовании --annotate и сводки при использовании --compose). Если задано значение false, файлы редактируются по очереди, с запуском нового редактора для каждого файла.

sendemail.confirm

Задаёт значение по умолчанию для подтверждения перед отправкой. Возможные значения: always, never, cc, compose или auto. Описание этих значений см. в разделе --confirm документации git-send-email[1].

sendemail.mailmap

Если задано значение true, команда git-send-email[1] предполагает --mailmap; в противном случае предполагается --no-mailmap. По умолчанию используется False.

sendemail.mailmap.file

Путь к дополнительному файлу mailmap, специфичному для git-send-email[1]. Сначала загружаются mailmap по умолчанию и mailmap.file. Поэтому записи в этом файле имеют приоритет над записями в расположениях mailmap по умолчанию. См. gitmailmap[5].

sendemail.mailmap.blob

Аналогично sendemail.mailmap.file, но значение рассматривается как ссылка на blob в репозитории. Записи в sendemail.mailmap.file имеют приоритет над записями здесь. См. gitmailmap[5].

sendemail.aliasesFile

Чтобы не вводить длинные адреса электронной почты, укажите здесь один или несколько файлов псевдонимов электронной почты. Также необходимо указать 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.imapSentFolder
sendemail.useImapOnly
sendemail.thread
sendemail.transferEncoding
sendemail.validate
sendemail.xmailer

Все эти переменные конфигурации задают значения по умолчанию для параметров командной строки git-send-email[1]. Подробности см. в документации команды.

sendemail.outlookidfix

Если задано значение true, команда git-send-email[1] предполагает --outlook-id-fix; если задано значение false, предполагается --no-outlook-id-fix. Если параметр не задан, поведение такое же, как если бы --outlook-id-fix не был указан.

sendemail.signedOffCc (устарел)

Устаревший псевдоним для sendemail.signedOffByCc.

sendemail.smtpBatchSize

Число сообщений, отправляемых через одно соединение; после этого выполняется повторный вход. Если значение равно 0 или не задано, все сообщения отправляются через одно соединение. См. также параметр --batch-size команды git-send-email[1].

sendemail.smtpReloginDelay

Время в секундах ожидания перед повторным подключением к SMTP-серверу. См. также параметр --relogin-delay команды git-send-email[1].

sendemail.forbidSendmailVariables

Чтобы избежать распространённых ошибок конфигурации, git-send-email[1] прерывает работу с предупреждением, если заданы какие-либо параметры конфигурации для sendmail. Задайте этой переменной значение, чтобы отключить проверку.

sequence.editor

Текстовый редактор, используемый командой git rebase -i для редактирования файла инструкций rebase. При использовании это значение интерпретируется оболочкой. Его можно переопределить переменной окружения GIT_SEQUENCE_EDITOR. Если параметр не задан, вместо него используется редактор сообщений коммитов по умолчанию.

showBranch.default

Набор веток по умолчанию для git-show-branch[1]. См. git-show-branch[1].

sideband.allowControlCharacters

По умолчанию управляющие символы, передаваемые через дополнительный канал, маскируются, за исключением цветовых последовательностей ANSI. Это предотвращает передачу в терминал потенциально нежелательных управляющих последовательностей ANSI. Используйте этот параметр конфигурации, чтобы изменить такое поведение (значение может представлять собой список следующих ключевых слов, разделённых запятыми):

color

Разрешает цветовые последовательности ANSI, символы перевода строки и горизонтальные табуляции, но маскирует все остальные управляющие символы. Это значение используется по умолчанию.

cursor

Разрешает управляющие последовательности, перемещающие курсор. По умолчанию отключено.

erase

Разрешает управляющие последовательности, стирающие символы. По умолчанию отключено.

false

Маскирует все управляющие символы, кроме символов перевода строки и горизонтальной табуляции.

true

Разрешает передавать в терминал все управляющие символы.

sideband.<url>.*

Применяет параметр sideband.* выборочно к конкретным URL. Используется та же логика сопоставления URL, что и для параметров http.<url>.*.

sparse.expectFilesOutsideOfPatterns

При разреженном извлечении файлы, не соответствующие ни одному шаблону разреженности, обычно помечаются в индексе битом SKIP_WORKTREE и отсутствуют в рабочем дереве. Поэтому Git обычно проверяет, действительно ли файлы с битом SKIP_WORKTREE отсутствуют в рабочем дереве, как и предполагается. Если Git обнаруживает такие файлы, он помечает соответствующие пути как присутствующие, сбрасывая соответствующие биты SKIP_WORKTREE. Этот параметр сообщает Git, что наличие таких пропущенных файлов ожидаемо, и отключает их проверку.

По умолчанию используется значение false, позволяющее Git автоматически исправлять ситуацию, когда списки файлов в индексе и рабочем дереве расходятся.

Задайте значение true, если во внешней среде Git освобождён от ответственности за согласованность между наличием файлов в рабочем дереве и шаблонами разреженности. Например, если у вас есть совместимая с Git виртуальная файловая система с надёжным механизмом синхронизации рабочего дерева и шаблонов разреженности на основе обращений к файлам.

Независимо от значения этого параметра Git не проверяет наличие пропущенных файлов, если разреженное извлечение не включено. Поэтому этот параметр конфигурации действует только тогда, когда core.sparseCheckout имеет значение true.

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 попытается определить поддержку параметров OpenSSH: сначала вызовет настроенную команду SSH с параметром -G (вывод конфигурации), а затем будет использовать параметры OpenSSH (если проверка завершится успешно) либо не будет использовать никаких параметров, кроме имени хоста и удаленной команды (если проверка не удастся).

Переменной конфигурации ssh.variant можно задать значение, переопределяющее это определение. Допустимые значения: ssh (использовать параметры OpenSSH), plink, putty, tortoiseplink, simple (не использовать параметры, кроме имени хоста и удаленной команды). Автоматическое определение по умолчанию можно явно запросить, указав значение auto. Любое другое значение обрабатывается как ssh. Этот параметр также можно переопределить с помощью переменной среды GIT_SSH_VARIANT.

Текущие параметры командной строки, используемые для каждого варианта:

  • ssh - [-p port] [-4] [-6] [-o option] [username@]host command

  • simple - [username@]host command

  • plink или putty - [-P port] [-4] [-6] [username@]host command

  • tortoiseplink - [-P port] [-4] [-6] -batch [username@]host command

За исключением варианта simple, параметры командной строки могут меняться по мере появления в Git новых возможностей.

stash.index

Если установлено значение true, команды git stash apply и git stash pop будут вести себя так, как если бы был указан параметр --index. По умолчанию — false. См. описания в git-stash[1].

Это также влияет на вызовы git-stash[1] с помощью --autostash из таких команд, как git-merge[1], git-rebase[1] и git-pull[1].

stash.showIncludeUntracked

Если установлено значение true, команда git stash show будет показывать неотслеживаемые файлы записи stash. По умолчанию — false. См. описание команды 'show' в git-stash[1].

stash.showPatch

Если установлено значение true, команда git stash show без параметров будет показывать запись stash в виде патча. По умолчанию — false. См. описание команды 'show' в git-stash[1].

stash.showStat

Если установлено значение true, команда git stash show без параметров будет показывать diffstat записи stash. По умолчанию — true. См. описание команды 'show' в git-stash[1].

status.relativePaths

По умолчанию git-status[1] показывает пути относительно текущего каталога. Если задать этой переменной значение false, пути будут показаны относительно корня репозитория (до v1.5.4 это было поведением Git по умолчанию).

status.short

Установите значение true, чтобы по умолчанию включить --short в git-status[1]. Параметр --no-short имеет приоритет над этой переменной.

status.branch

Установите значение true, чтобы по умолчанию включить --branch в git-status[1]. Параметр --no-branch имеет приоритет над этой переменной.

status.aheadBehind

Установите значение true, чтобы включить --ahead-behind, и false, чтобы включить --no-ahead-behind по умолчанию в git-status[1] для форматов статуса, отличных от porcelain. По умолчанию — true.

status.compareBranches

Разделенный пробелами список спецификаторов сравнения веток для использования в git-status[1]. В настоящее время поддерживаются только @{upstream} и @{push}. Они интерпретируются как branch@{upstream} и branch@{push} для текущей ветки.

Если параметр не задан, используется поведение по умолчанию, эквивалентное @{upstream}, которое сравнивает ветку с настроенной отслеживаемой веткой upstream.

Записи отображаются в порядке, в котором они указаны в конфигурации. Повторяющиеся записи, указывающие на одну и ту же ссылку, отбрасываются после первого вхождения, поэтому @{push} @{upstream} @{push} показывает не более двух сравнений. Если @{upstream} и @{push} указывают на одну и ту же отслеживаемую удаленную ветку, отображается только одно сравнение.

Пример:

[status]
        compareBranches = @{upstream} @{push}

В этом случае будут показаны сравнения текущей ветки как с настроенной веткой upstream, так и с отслеживаемой веткой для отправки.

status.displayCommentPrefix

Если установлено значение true, git-status[1] будет добавлять префикс комментария перед каждой строкой вывода (начиная с core.commentChar, то есть по умолчанию с #). Так вел себя git-status[1] в Git 1.8.4 и более ранних версиях. По умолчанию — false.

status.renameLimit

Количество файлов, рассматриваемых при обнаружении переименований в git-status[1] и git-commit[1]. По умолчанию используется значение diff.renameLimit.

status.renames

Определяет, выполняет ли Git обнаружение переименований в git-status[1] и git-commit[1], и каким образом. Если задано значение "false", обнаружение переименований отключается. Если задано значение "true", включается базовое обнаружение переименований. При значении "copies" или "copy" Git также будет обнаруживать копирования. По умолчанию используется значение diff.renames.

status.showStash

Если установлено значение true, git-status[1] будет показывать количество записей, находящихся в stash. По умолчанию — false.

status.showUntrackedFiles

По умолчанию git-status[1] и git-commit[1] показывают файлы, которые Git в данный момент не отслеживает. Каталоги, содержащие только неотслеживаемые файлы, отображаются только по имени каталога. Для показа неотслеживаемых файлов Git должен выполнить lstat() для всех файлов во всем репозитории, что может замедлить работу в некоторых системах. Поэтому эта переменная управляет тем, как команды отображают неотслеживаемые файлы. Возможные значения:

  • no — не показывать неотслеживаемые файлы.

  • normal — показывать неотслеживаемые файлы и каталоги.

  • all — показывать также отдельные файлы в неотслеживаемых каталогах.

Если эта переменная не задана, по умолчанию используется normal. Все стандартные варианты записи логического значения true трактуются как normal, а false — как no. Эту переменную можно переопределить с помощью параметра -u|--untracked-files команд git-status[1] и git-commit[1].

status.submoduleSummary

По умолчанию — false. Если задать ненулевое числовое значение или true (эквивалентно -1 или неограниченному количеству), будет включена сводка по подмодулям и показана сводка коммитов для измененных подмодулей (см. параметр --summary-limit команды git-submodule[1]). Обратите внимание: вывод сводки команды подавляется для всех подмодулей, если diff.ignoreSubmodules задано как all, либо только для тех подмодулей, для которых задано submodule.<name>.ignore=all. Единственное исключение из этого правила: status и commit покажут подготовленные изменения подмодулей. Чтобы также просматривать сводку по игнорируемым подмодулям, можно использовать параметр командной строки --ignore-submodules=dirty или команду git submodule summary, которая выводит похожую информацию, но не учитывает эти настройки.

submodule.<name>.url

URL подмодуля. Эта переменная копируется из файла .gitmodules в конфигурацию git с помощью git submodule init. Пользователь может изменить настроенный URL перед получением подмодуля с помощью git submodule update. Если не заданы ни submodule.<name>.active, ни submodule.active, наличие этой переменной используется как запасной способ определить, представляет ли подмодуль интерес для команд git. Подробности см. в git-submodule[1] и gitmodules[5].

submodule.<name>.update

Метод обновления подмодуля командой git submodule update, единственной командой, на которую влияет этот параметр; другие команды, например git checkout --recurse-submodules, не затрагиваются. Параметр сохранен по историческим причинам: когда-то git submodule была единственной командой для работы с подмодулями; такие параметры, как submodule.active и pull.rebase, имеют более узкую область действия. Значение задается командой git submodule init на основе файла gitmodules[5]. См. описание команды update в git-submodule[1].

submodule.<name>.branch

Имя удаленной ветки для подмодуля, используемое командой git submodule update --remote. Задайте этот параметр, чтобы переопределить значение из файла .gitmodules. Подробности см. в git-submodule[1] и gitmodules[5].

submodule.<name>.fetchRecurseSubmodules

Этот параметр управляет рекурсивным получением данных для данного подмодуля. Его можно переопределить параметром командной строки --[no-]recurse-submodules команд "git fetch" и "git pull". Этот параметр имеет приоритет над значением из файла gitmodules[5].

submodule.<name>.ignore

Определяет, при каких условиях "git status" и семейство команд diff показывают подмодуль как измененный. При значении "all" подмодуль никогда не считается измененным. Тем не менее его можно подготовить к коммиту с помощью параметра --force, после чего он появится в выводе status. При значении "dirty" игнорируются все изменения рабочего дерева подмодуля и учитываются только различия между HEAD подмодуля и коммитом, записанным в суперпроекте. Значение "untracked" дополнительно приводит к отображению подмодулей с измененными отслеживаемыми файлами в рабочем дереве. При значении "none" (по умолчанию) подмодуль также отображается как измененный, если в его рабочем дереве есть неотслеживаемые файлы. Этот параметр переопределяет любые настройки для данного подмодуля в .gitmodules; оба параметра можно переопределить в командной строке с помощью параметра "--ignore-submodules". На команды git submodule эта настройка не влияет.

submodule.<name>.active

Логическое значение, указывающее, представляет ли подмодуль интерес для команд git. Этот параметр конфигурации имеет приоритет над параметром конфигурации submodule.active. Подробности см. в gitsubmodules[7].

submodule.<name>.gitdir

Задает путь gitdir для подмодуля <name>. Эта настройка учитывается, если включен extensions.submodulePathConfig; в противном случае она не действует. Если настройка включена, этот параметр становится единственным источником данных о путях gitdir подмодулей, и Git выдаст ошибку, если путь не задан. Подробности см. в git-config[1].

submodule.active

Повторяющееся поле, содержащее спецификацию пути для сопоставления с путем подмодуля и определения, представляет ли он интерес для команд git. Подробности см. в gitsubmodules[7].

submodule.recurse

Логическое значение, указывающее, должны ли команды по умолчанию включать параметр --recurse-submodules. По умолчанию — false.

Если установлено значение true, этот параметр можно отключить с помощью параметра --no-recurse-submodules. Обратите внимание: некоторые команды Git, у которых нет этого параметра, могут вызывать некоторые из перечисленных выше команд, на которые влияет submodule.recurse; например, git remote update вызовет git fetch, но не имеет параметра --no-recurse-submodules. Для таких команд можно временно изменить значение конфигурации с помощью git -c submodule.recurse=0.

В следующем списке перечислены команды, принимающие --recurse-submodules, и указано, поддерживаются ли они этой настройкой.

  • checkout, fetch, grep, pull, push, read-tree, reset, restore и switch поддерживаются всегда.

  • clone и ls-files не поддерживаются.

  • branch поддерживается, только если включен submodule.propagateBranches.

submodule.propagateBranches

[ЭКСПЕРИМЕНТАЛЬНО] Логическое значение, включающее поддержку веток при использовании --recurse-submodules или submodule.recurse=true. Включение этого параметра позволит некоторым командам принимать --recurse-submodules, а некоторые команды, уже принимающие --recurse-submodules, начнут учитывать ветки. По умолчанию — false.

submodule.fetchJobs

Задает количество подмодулей, получаемых или клонируемых одновременно. Положительное целое число задает максимальное количество подмодулей, обрабатываемых параллельно. Значение 0 означает использование разумного значения по умолчанию. Если параметр не задан, по умолчанию используется 1.

submodule.alternateLocation

Задает способ получения альтернативных ссылок подмодулями при клонировании. Возможные значения: no, superproject. По умолчанию предполагается no, при котором ссылки не добавляются. Если задано значение superproject, клонируемый подмодуль вычисляет расположение своих альтернативных ссылок относительно альтернатив суперпроекта.

submodule.alternateErrorStrategy

Задает способ обработки ошибок альтернативных ссылок подмодуля, вычисляемых с помощью submodule.alternateLocation. Возможные значения: ignore, info, die. По умолчанию используется die. Обратите внимание: если задано значение ignore или info и при работе с вычисленной альтернативной ссылкой возникает ошибка, клонирование продолжается так, как если бы альтернативная ссылка не была указана.

tag.forceSignAnnotated

Логическое значение, определяющее, должны ли создаваемые аннотированные теги подписываться с помощью GPG. Если в командной строке указан --annotate, он имеет приоритет над этим параметром.

tag.sort

Эта переменная управляет порядком сортировки тегов при их отображении командой git-tag[1]. Если параметр --sort=<value> не задан, значение этой переменной используется по умолчанию.

tag.gpgSign

Логическое значение, определяющее, должны ли все теги подписываться с помощью GPG. Использование этого параметра при запуске автоматизированного сценария может привести к подписанию большого количества тегов. Поэтому удобно использовать агент, чтобы не вводить парольную фразу GPG несколько раз. Обратите внимание: этот параметр не влияет на поведение при подписании тегов, включаемое параметрами -u <keyid> или --local-user=<keyid>.

tar.umask

Эту переменную можно использовать для ограничения битов прав доступа записей архива tar. По умолчанию используется 0002, отключающее право записи для всех пользователей. Специальное значение "user" означает, что вместо этого будет использоваться umask архивирующего пользователя. См. umask(2) и git-archive[1].

Параметры конфигурации Trace2 считываются только из системных и глобальных файлов конфигурации; аргументы командной строки -c, а также локальные файлы конфигурации репозитория и рабочего дерева не учитываются.

trace2.normalTarget

Эта переменная управляет назначением для обычного вывода. Её можно переопределить с помощью переменной окружения GIT_TRACE2. В следующей таблице приведены возможные значения.

trace2.perfTarget

Эта переменная управляет назначением для вывода производительности. Её можно переопределить с помощью переменной окружения GIT_TRACE2_PERF. В следующей таблице приведены возможные значения.

trace2.eventTarget

Эта переменная управляет назначением для вывода событий. Её можно переопределить с помощью переменной окружения GIT_TRACE2_EVENT. В следующей таблице приведены возможные значения.

  • 0 или false — отключает назначение.

  • 1 или true — записывает в STDERR.

  • [2-9] — записывает в уже открытый файловый дескриптор.

  • <absolute-pathname> — записывает в файл в режиме добавления. Если назначение уже существует и является каталогом, трассировки будут записываться в файлы (по одному для каждого процесса) внутри указанного каталога.

  • af_unix:[<socket-type>:]<absolute-pathname> — записывает в доменный сокет Unix (на платформах, которые их поддерживают). Тип сокета может быть stream или dgram; если он не указан, Git попробует оба варианта.

trace2.normalBrief

Логическое значение. Если значение равно true, поля time, filename и line не включаются в обычный вывод. Значение можно переопределить с помощью переменной окружения GIT_TRACE2_BRIEF. По умолчанию — false.

trace2.perfBrief

Логическое значение. Если значение равно true, поля time, filename и line не включаются в вывод PERF. Значение можно переопределить с помощью переменной окружения GIT_TRACE2_PERF_BRIEF. По умолчанию — false.

trace2.eventBrief

Логическое значение. Если значение равно true, поля time, filename и 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 приведёт к тому, что вывод trace2 будет содержать события со значениями переопределений для пользовательского агента HTTP и расположения файла конфигурации Git (если они заданы). Значение можно переопределить с помощью переменной окружения GIT_TRACE2_ENV_VARS. По умолчанию не задано.

trace2.destinationDebug

Логическое значение. Если значение равно true, Git выводит сообщения об ошибках, когда не удаётся открыть назначение трассировки для записи. По умолчанию эти ошибки подавляются, а трассировка молча отключается. Значение можно переопределить с помощью переменной окружения GIT_TRACE2_DST_DEBUG.

trace2.maxFiles

Целое число. При записи файлов трассировки в целевой каталог не записывать дополнительные трассировки, если это приведёт к превышению указанного количества файлов. Вместо этого создаётся файл-маркер, блокирующий дальнейшую трассировку в этот каталог. По умолчанию — 0, что отключает эту проверку.

trailer.separators

Этот параметр задаёт символы, которые распознаются как разделители завершающих строк. По умолчанию в качестве разделителя завершающих строк распознаётся только :, однако = всегда принимается в командной строке для совместимости с другими командами git.

Первый символ, указанный этим параметром, будет символом по умолчанию, если в конфигурации для этой завершающей строки не задан другой разделитель.

Например, если значение этого параметра — %=$, то завершающими строками будут считаться только строки формата <key><sep><value>, у которых <sep> содержит %, = или $, за которыми следуют пробелы. При этом % будет разделителем по умолчанию, поэтому завершающие строки по умолчанию будут выглядеть так: <key>% <value> (между ключом и значением будет один знак процента и один пробел).

trailer.where

Этот параметр задаёт место добавления новой завершающей строки.

Значением может быть end (по умолчанию), start, after или before.

Если задано значение end, каждая новая завершающая строка будет добавляться в конец существующих завершающих строк.

Если задано значение start, каждая новая завершающая строка будет добавляться в начало, а не в конец существующих завершающих строк.

Если задано значение after, каждая новая завершающая строка будет добавляться сразу после последней завершающей строки с таким же <key>.

Если задано значение before, каждая новая завершающая строка будет добавляться сразу перед первой завершающей строкой с таким же <key>.

trailer.ifexists

Этот параметр позволяет выбрать действие, которое будет выполнено, если во входных данных уже есть хотя бы одна завершающая строка с таким же <key>.

Допустимые значения этого параметра: addIfDifferentNeighbor (по умолчанию), addIfDifferent, add, replace или doNothing.

При значении addIfDifferentNeighbor новая завершающая строка добавляется, только если выше или ниже строки, куда будет добавлена новая завершающая строка, нет завершающей строки с такой же парой (<key>, <value>).

При значении addIfDifferent новая завершающая строка добавляется, только если во входных данных ещё нет завершающей строки с такой же парой (<key>, <value>).

При значении add новая завершающая строка добавляется, даже если во входных данных уже есть завершающие строки с такой же парой (<key>, <value>).

При значении replace существующая завершающая строка с таким же <key> удаляется, а новая завершающая строка добавляется. Удаляется ближайшая завершающая строка (с таким же <key>) к месту добавления новой.

При значении doNothing ничего не происходит; то есть новая завершающая строка не добавляется, если во входных данных уже есть строка с таким же <key>.

trailer.ifmissing

Этот параметр позволяет выбрать действие, которое будет выполнено, если во входных данных ещё нет завершающей строки с таким же <key>.

Допустимые значения этого параметра: add (по умолчанию) и doNothing.

При значении add добавляется новая завершающая строка.

При значении doNothing ничего не происходит.

trailer.<key-alias>.key

Определяет <key-alias> для <key>. <key-alias> должен быть префиксом (регистр не учитывается) <key>. Например, в git config trailer.ack.key "Acked-by" Acked-by — это <key>, а ack — это <key-alias>. Эта настройка позволяет использовать в командной строке более короткий вызов --trailer "ack:..." с «ack» <key-alias> вместо более длинного --trailer "Acked-by:...".

В конце <key> может стоять разделитель, за которым следуют пробелы. По умолчанию единственным допустимым разделителем является :, но его можно изменить с помощью переменной конфигурации trailer.separators.

Если в ключе есть разделитель, он переопределяет разделитель по умолчанию при добавлении завершающей строки.

trailer.<key-alias>.where

Этот параметр принимает те же значения, что и переменная конфигурации trailer.where, и переопределяет её значение для завершающих строк с указанным <key-alias>.

trailer.<key-alias>.ifexists

Этот параметр принимает те же значения, что и переменная конфигурации trailer.ifexists, и переопределяет её значение для завершающих строк с указанным <key-alias>.

trailer.<key-alias>.ifmissing

Этот параметр принимает те же значения, что и переменная конфигурации trailer.ifmissing, и переопределяет её значение для завершающих строк с указанным <key-alias>.

trailer.<key-alias>.command

Устарел; вместо него следует использовать trailer.<key-alias>.cmd. Этот параметр работает так же, как trailer.<key-alias>.cmd, за исключением того, что указанной команде не передаются аргументы. Вместо этого первое вхождение подстроки $ARG заменяется на <value>, которое было бы передано в качестве аргумента.

Обратите внимание, что $ARG в команде пользователя заменяется только один раз, а исходный способ замены $ARG небезопасен.

Если для одного и того же <key-alias> заданы и trailer.<key-alias>.cmd, и trailer.<key-alias>.command, используется trailer.<key-alias>.cmd, а trailer.<key-alias>.command игнорируется.

trailer.<key-alias>.cmd

Этот параметр позволяет указать команду оболочки, которая будет вызвана один раз для автоматического добавления завершающей строки с указанным <key-alias>, а затем будет вызываться каждый раз, когда для изменения <value> завершающей строки, создаваемой этим параметром, указывается аргумент --trailer <key-alias>=<value>.

При первом вызове указанной команды для добавления завершающей строки с заданным <key-alias> поведение будет таким, как если бы в начало git-interpret-trailers[1] был добавлен специальный аргумент --trailer <key-alias>=<value>, где <value> — это стандартный вывод команды без начальных и конечных пробелов.

Если в командной строке также переданы аргументы --trailer <key-alias>=<value>, команда вызывается повторно для каждого из этих аргументов с тем же <key-alias>. При этом часть <value> этих аргументов, если она есть, передаётся команде в качестве первого аргумента. Таким образом, команда может сформировать <value>, вычисленный на основе <value>, переданного в аргументе --trailer <key-alias>=<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, может не предоставлять возможности настраивать права доступа к файлу конфигурации, где хранятся имя пользователя и/или пароль, либо не разрешать это делать.

  • Даже если такая возможность есть, хранение этих данных «в покое» может создать другие риски: например, процесс резервного копирования может скопировать данные в другую систему.

  • Программы git передают полный URL друг другу в качестве аргументов командной строки. Это означает, что учётные данные будут доступны другим непривилегированным пользователям в системах, где можно просматривать полный список процессов других пользователей. В Linux это поведение можно настроить с помощью параметра «hidepid», описанного в procfs(5).

    Если эти опасения вас не касаются, вероятно, вам не нужно беспокоиться об утечке учётных данных из-за хранения конфиденциальных данных в файлах конфигурации git. Если вы хотите использовать эту настройку, установите для transfer.credentialsInUrl одно из следующих значений:

  • allow (по умолчанию): Git продолжит работу без предупреждений.

  • warn: Git выведет предупреждение в stderr при разборе URL с учётными данными в открытом виде.

  • die: Git выведет сообщение об ошибке в stderr при разборе URL с учётными данными в открытом виде.

transfer.fsckObjects

Если значения fetch.fsckObjects или receive.fsckObjects не заданы, вместо них используется значение этой переменной. По умолчанию — false.

Если параметр включён, операции fetch или receive прерываются при обнаружении некорректного объекта или ссылки на несуществующий объект. Кроме того, выполняются проверки на различные другие проблемы, включая устаревшие ошибки (см. fsck.<msg-id>) и потенциальные проблемы безопасности, например наличие каталога .GIT или вредоносного файла .gitmodules (подробности см. в примечаниях к выпускам v2.2.1 и v2.17.1). В будущих выпусках могут добавляться другие проверки корректности и безопасности.

На стороне приёма сбой fsckObjects сделает эти объекты недостижимыми; см. раздел «QUARANTINE ENVIRONMENT» в git-receive-pack[1]. На стороне fetch некорректные объекты вместо этого останутся в репозитории без ссылок.

Из-за отсутствия карантинной среды в реализации fetch.fsckObjects нельзя рассчитывать на то, что хранилище объектов останется чистым, как это может обеспечить receive.fsckObjects.

Распакованные объекты записываются в хранилище объектов, поэтому вредоносные объекты могут попасть в него, даже если операция «fetch» завершилась с ошибкой. Последующая операция «fetch» может завершиться успешно, поскольку проверяются только новые входящие объекты, а не те, которые уже записаны в хранилище объектов. Не следует полагаться на это различие в поведении. В будущем для операции «fetch» также может использоваться карантин таких объектов.

Пока что пользователям, предпочитающим проявлять повышенную осторожность, придётся найти способ имитировать карантинную среду, если они хотят получить такую же защиту, как при «push». Например, для внутреннего зеркала можно выполнять зеркалирование в два этапа: сначала получать недоверенные объекты, а затем выполнять вторую операцию «push» (которая использует карантин) в другой внутренний репозиторий, после чего внутренние клиенты смогут получать данные из этого репозитория. Другой вариант — приостановить внутренние операции fetch и разрешить их только после полной проверки «fsck» (при условии, что за это время не выполнялись новые операции fetch).

transfer.hideRefs

Строки receive-pack и upload-pack используются, чтобы определить ссылки, которые нужно исключить из первоначальных объявлений. Чтобы указать несколько строк-префиксов, используйте несколько определений. Ссылка, входящая в перечисленные в значении этой переменной иерархии, исключается и скрывается при ответе на git push или git fetch. Версии этой настройки для отдельных программ см. в разделах receive.hideRefs и uploadpack.hideRefs.

Перед именем ссылки также можно указать !, чтобы отменить правило и явно показать ссылку, даже если в предыдущей записи она была скрыта. Если задано несколько значений hideRefs, более поздние записи переопределяют более ранние (а записи в файлах конфигурации с более высоким приоритетом переопределяют записи в файлах с более низким приоритетом).

Если используется пространство имён, его префикс удаляется из каждой ссылки перед сопоставлением с шаблонами transfer.hiderefs. Чтобы сопоставлять ссылки до удаления префикса, добавьте ^ перед именем ссылки. Если вы комбинируете ! и ^, сначала необходимо указать !.

Например, если refs/heads/master задано в transfer.hideRefs, а текущее пространство имён — foo, то refs/namespaces/foo/refs/heads/master исключается из объявлений. Если задано uploadpack.allowRefInWant, upload-pack будет обрабатывать want-ref refs/heads/master в команде fetch протокола v2 так, как если бы refs/namespaces/foo/refs/heads/master не существовало. С другой стороны, receive-pack всё равно объявит идентификатор объекта, на который указывает ссылка, но не укажет её имя (так называемая строка «.have»).

Даже если скрыть ссылки, клиент всё ещё может получить целевые объекты с помощью методов, описанных в разделе «SECURITY» справочной страницы gitnamespaces[7]; лучше хранить закрытые данные в отдельном репозитории.

transfer.unpackLimit

Если значения fetch.unpackLimit или receive.unpackLimit не заданы, вместо них используется значение этой переменной. Значение по умолчанию — 100.

transfer.advertiseSID

Логическое значение. Если значение равно true, клиентские и серверные процессы сообщают удалённой стороне свои уникальные идентификаторы сеанса. По умолчанию — false.

transfer.bundleURI

Если задано значение true, локальные команды git clone запрашивают у удалённого сервера сведения о бандлах (если они объявлены) и загружают бандлы, прежде чем продолжить клонирование по протоколу Git. По умолчанию — false.

transfer.advertiseObjectInfo

Если задано значение true, серверы объявляют возможность object-info. По умолчанию — false.

uploadarchive.allowUnreachable

Если значение равно true, разрешить клиентам использовать git archive --remote для запроса любого дерева, независимо от того, достижимо ли оно от вершин ссылок. Подробнее см. обсуждение в разделе «SECURITY» страницы git-upload-archive[1]. По умолчанию — false.

uploadpack.hideRefs

Эта переменная совпадает с transfer.hideRefs, но применяется только к upload-pack (и поэтому влияет только на операции fetch, но не push). Попытка получить скрытую ссылку с помощью git fetch завершится ошибкой. См. также uploadpack.allowTipSHA1InWant.

uploadpack.allowTipSHA1InWant

Если действует uploadpack.hideRefs, разрешить upload-pack принимать запрос fetch объекта, находящегося на вершине скрытой ссылки (по умолчанию такой запрос отклоняется). См. также uploadpack.hideRefs. Даже если значение равно false, клиент всё ещё может получить объекты с помощью методов, описанных в разделе «SECURITY» справочной страницы gitnamespaces[7]; лучше хранить закрытые данные в отдельном репозитории.

uploadpack.allowReachableSHA1InWant

Разрешить upload-pack принимать запрос fetch объекта, достижимого от вершины любой ссылки. Однако вычисление достижимости объектов требует значительных вычислительных ресурсов. По умолчанию — false. Даже если значение равно false, клиент всё ещё может получить объекты с помощью методов, описанных в разделе «SECURITY» справочной страницы gitnamespaces[7]; лучше хранить закрытые данные в отдельном репозитории.

uploadpack.allowAnySHA1InWant

Разрешить upload-pack принимать запрос fetch любого объекта. Этот параметр подразумевает uploadpack.allowTipSHA1InWant и uploadpack.allowReachableSHA1InWant. Если задано значение true, будут включены оба параметра; если задано значение false, оба параметра будут отключены. По умолчанию не задан.

uploadpack.keepAlive

После того как upload-pack начал pack-objects, может наступить пауза, пока pack-objects готовит пакет. Обычно он выводит информацию о ходе выполнения, но если для fetch использовался параметр --quiet, pack-objects не будет ничего выводить до начала передачи данных пакета. Некоторые клиенты и сети могут решить, что сервер завис, и прекратить ожидание. Если установить этот параметр, upload-pack будет отправлять пустой пакет keepalive каждые uploadpack.keepAlive секунд. Если установить значение 0, пакеты keepalive будут полностью отключены. Значение по умолчанию — 5 секунд.

uploadpack.packObjectsHook

Если этот параметр задан, команда upload-pack вместо запуска git pack-objects для создания packfile для клиента выполнит эту команду оболочки. Команда pack-objects и аргументы, которые она would передать (включая git pack-objects в начале), добавляются к команде оболочки. Потоки stdin и stdout обработчика рассматриваются так, как если бы сама команда pack-objects была запущена. То есть upload-pack передаст обработчику входные данные, предназначенные для pack-objects, и ожидает получить готовый packfile в stdout.

Обратите внимание, что эта переменная конфигурации учитывается только в том случае, если она указана в защищённой конфигурации (см. ОБЛАСТИ ДЕЙСТВИЯ). Это мера безопасности, предотвращающая получение данных из ненадёжных репозиториев.

uploadpack.allowFilter

Если этот параметр задан, upload-pack будет поддерживать частичное клонирование и фильтрацию объектов при частичном получении данных.

uploadpackfilter.allow

Задаёт значение по умолчанию для неуказанных фильтров объектов (см. следующую переменную конфигурации). Если задано значение true, это также включит все фильтры, добавленные в будущем. По умолчанию — true.

uploadpackfilter.<filter>.allow

Явно разрешает или запрещает фильтр объектов, соответствующий <filter>, где <filter> может принимать одно из значений: blob:none, blob:limit, object:type, tree, sparse:oid или combine. При использовании составных фильтров должны быть разрешены как combine, так и все вложенные типы фильтров. По умолчанию — uploadpackfilter.allow.

uploadpackfilter.tree.maxDepth

Разрешает --filter=tree:<n>, только если значение <n> не превышает значение uploadpackfilter.tree.maxDepth. Если этот параметр задан, он также подразумевает uploadpackfilter.tree.allow=true, если эта переменная конфигурации ещё не была задана. Не действует, если параметр не задан.

uploadpack.allowRefInWant

Если этот параметр задан, upload-pack будет поддерживать функцию ref-in-want команды fetch протокола версии 2. Эта функция предназначена для балансируемых серверов, которые из-за задержки репликации могут по-разному представлять себе, на какие OID указывают их ссылки.

url.<base>.insteadOf

Любой URL, начинающийся с этого значения, будет переписан так, чтобы вместо него начинаться с <base>. Если на каком-либо сайте размещено много репозиториев, доступных несколькими способами, а некоторым пользователям требуются другие способы доступа, эта функция позволяет указывать любой из эквивалентных URL, а Git автоматически переписывает URL на наиболее подходящий для конкретного пользователя вариант, даже если репозиторий на этом сайте ещё ни разу не встречался. Если URL соответствует нескольким строкам insteadOf, используется самое длинное совпадение.

Обратите внимание, что все ограничения протоколов применяются к переписанному URL. Если при переписывании URL меняется на адрес с пользовательским протоколом или удалённым помощником, может потребоваться изменить параметр конфигурации protocol.*.allow, чтобы разрешить этот запрос. В частности, для протоколов, которые предполагается использовать для подмодулей, следует задать значение always, а не значение по умолчанию user. См. приведённое выше описание protocol.allow.

url.<base>.pushInsteadOf

В любой URL, начинающийся с этого значения, отправка данных выполняться не будет: вместо этого 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.name, author.email, committer.name или committer.email. Все эти значения можно переопределить переменными окружения GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL и EMAIL.

Обратите внимание, что формы этих переменных с name традиционно обозначают какую-либо форму личного имени. Дополнительные сведения об этих параметрах см. в git-commit[1] и разделе о переменных окружения в git[1]. Если же вам нужны учётные данные для аутентификации, см. параметр credential.username.

user.useConfigOnly

Указывает Git не пытаться подбирать значения по умолчанию для user.email и user.name, а получать их только из конфигурации. Например, если у вас несколько адресов электронной почты и для каждого репозитория нужно использовать свой адрес, при установке этого параметра в значение true в глобальной конфигурации вместе с именем Git предложит указать адрес электронной почты перед созданием первых коммитов в новом клонированном репозитории. По умолчанию — false.

user.signingKey

Если при создании подписанного тега или коммита команды git-tag[1] или git-commit[1] автоматически выбирают не тот ключ, который вам нужен, с помощью этой переменной можно переопределить выбор по умолчанию. Этот параметр без изменений передаётся аргументу --local-user команды gpg, поэтому ключ можно указать любым способом, поддерживаемым gpg. Если для gpg.format задано значение ssh, здесь можно указать путь к закрытому ключу SSH или к открытому ключу, если используется ssh-agent. Также можно указать открытый ключ с префиксом key:: непосредственно (например: "key::ssh-rsa XXXXXX identifier"). Закрытый ключ должен быть доступен через ssh-agent. Если параметр не задан, Git вызовет gpg.ssh.defaultKeyCommand (например, "ssh-add -L") и попытается использовать первый доступный ключ. Для обратной совместимости необработанный ключ, начинающийся с "ssh-", например "ssh-rsa XXXXXX identifier", рассматривается как "key::ssh-rsa XXXXXX identifier", однако эта форма устарела; вместо неё используйте форму key::.

versionsort.prereleaseSuffix (устарел)

Устаревший псевдоним для versionsort.suffix. Игнорируется, если задан versionsort.suffix.

versionsort.suffix

Даже при использовании сортировки версий в git-tag[1] имена тегов с одинаковой базовой версией, но разными суффиксами, по-прежнему сортируются лексикографически. В результате, например, теги предварительного выпуска располагаются после основного выпуска (например, "1.0-rc1" после "1.0"). С помощью этой переменной можно задать порядок сортировки тегов с разными суффиксами.

Если указать в этой переменной один суффикс, любой тег, содержащий этот суффикс, будет отображаться перед соответствующим основным выпуском. Например, если переменной задано значение "-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" подразумевает включение параметра конфигурации extensions.relativeWorktrees (см. git-config[1]), что делает эту настройку несовместимой со старыми версиями Git.

Ошибки

При использовании устаревшего синтаксиса [section.subsection] изменение значения приводит к добавлению многострочного ключа вместо изменения существующего, если в имени подраздела есть хотя бы одна заглавная буква. Например, если конфигурация выглядит так:

  [section.subsection]
    key = value1

то выполнение git config section.Subsection.key value2 приведёт к следующему результату:

  [section.subsection]
    key = value1
    key = value2

config

© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-config

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API