git config
Узнайте о команде git config: уровни конфигурации, настройка редактора, цвета, псевдонимы и управление пробелами в Git.
Что такое git config
Команда git config — это утилита командной строки для чтения и записи переменных конфигурации Git — настроек, определяющих внешний вид и поведение Git. Эти переменные задают вашу идентификацию (имя и email), предпочтительный текстовый редактор, цвета вывода, сокращения команд (псевдонимы) и десятки других параметров.
На этой странице рассматриваются уровни конфигурации и их файлы, чтение и запись значений, настройка редактора и цветов, создание псевдонимов и управление пробелами. Установка user.name и user.email с помощью git config — это обычно самое первое, что вы делаете после установки Git.

Уровни и файлы git config
Команда git config принимает аргументы для указания уровня конфигурации. При поиске значения конфигурации Git применяет следующий порядок приоритетов (от низшего к высшему):
--system— системный уровень конфигурации распространяется на всех пользователей операционной системы и все репозитории. Файл конфигурации системного уровня расположен в каталоге установки Git.
Системный уровень git config
(prefix)/etc/gitconfig - on Unix systems
C:\Documents and Settings\All Users\Application Data\Git\config - Windows XP (deprecated)
C:\ProgramData\Git\config - Windows Vista and newer versions--global— глобальный уровень конфигурации применяется к текущему пользователю операционной системы. Значения глобальной конфигурации хранятся в файле в домашнем каталоге пользователя.
Глобальный уровень git config
~/.gitconfig - on Unix systems
C:\Users\<username>\.gitconfig - on Windows--local— если параметр конфигурации не указан,git configпо умолчанию записывает на локальный уровень. Каталог.gitрепозитория содержит файл, хранящий значения локальной конфигурации.
Локальный уровень git config
.git/configПримечание: Локальные настройки переопределяют глобальные, которые в свою очередь переопределяют системные. Таким образом, значение user.email, заданное внутри конкретного репозитория (локально), имеет приоритет над глобальным — это позволяет использовать рабочий адрес в одном проекте и личный в другом.
Как записать значение
Чтобы записать значение, передайте имя конфигурации, а за ним — значение. В примере ниже [email protected] записывается в user.email. Флаг --global задаёт значение для текущего пользователя операционной системы, поэтому оно применяется ко всем репозиториям, с которыми вы работаете:
git config set user
git config --global user.email "[email protected]"Типичная первоначальная настройка включает запись как имени, так и email:
git config --global user.name "Jane Doe"
git config --global user.email "[email protected]"Эти два значения записываются в каждый создаваемый вами коммит, поэтому задайте их до первого коммита.
Как прочитать значение
Основное использование git config — получение значения конфигурации по его имени. Имена конфигурации состоят из раздела и ключа, разделённых точкой:
git config user email
git config user.emailЗдесь email — дочернее свойство раздела user. Выполнение этой команды выводит активное значение — то, которое выигрывает после применения цепочки переопределений: локальный → глобальный → системный.
Полезные команды для проверки настроек
Помимо чтения отдельного ключа, следующие команды помогают просматривать и управлять всем, что настроено в Git:
| Команда | Что делает |
|---|---|
git config --list | Выводит список всех активных настроек, объединённых по всем уровням. |
git config --list --show-origin | Выводит каждую настройку вместе с файлом, из которого она взята. |
git config --get-all <key> | Получает все значения для ключа, который может быть задан несколько раз. |
git config --unset <key> | Удаляет отдельную настройку. |
git config --edit | Открывает соответствующий файл конфигурации в редакторе по умолчанию. |
Когда два уровня определяют один и тот же ключ, --show-origin — самый быстрый способ узнать, какой файл отвечает за значение, которое Git фактически использует.
Редактор git config — core.editor
После настройки идентификации Git использует системный редактор по умолчанию — Vi или Vim. С помощью git config можно указать, какой редактор будет использовать Git. Ниже приведён список наиболее распространённых редакторов с командами git config:
| Редактор | Команда конфигурации |
|---|---|
| Atom | git config --global core.editor "atom --wait" |
| emacs | git config --global core.editor "emacs" |
| nano | git config --global core.editor "nano -w" |
| vim | git config --global core.editor "vim" |
| Sublime Text (Mac) | git config --global core.editor "subl -w" |
| Sublime Text (Win, 32-bit install) | git config --global core.editor "'c:/program files (x86)/sublime text 3/sublimetext.exe' -w" |
| Sublime Text (Win, 64-bit install) | git config --global core.editor "'c:/program files/sublime text 3/sublimetext.exe' -w" |
| Textmate | git config --global core.editor "mate -w" |
Цветной вывод
Git поддерживает цвета, что упрощает чтение его вывода. Вы можете настраивать цвета для изменения внешнего вида. Для задания цветовых значений используется команда git config.
color.ui
Git автоматически окрашивает большую часть своего вывода, но существует также главная переменная, если вы хотите задать другой цвет. Чтобы отключить цветной вывод терминала для всего Git, выполните следующее:
git config set color.ui
git config --global color.ui falseПо умолчанию color.ui имеет значение auto, которое применяет цвета непосредственно к выводу терминала. Цветовые коды опускаются, когда вывод перенаправляется в канал или файл.
Можно также установить color.ui в значение always. В этом случае цветовые коды применяются, даже если вывод перенаправляется в файлы или каналы. Это может вызвать проблемы, поскольку принимающий канал может не ожидать цветовых кодов на входе.
Цветовые значения Git
Помимо color.ui, существуют и другие параметры цвета, которые можно задать как false, auto или always. Им можно присвоить конкретное значение цвета: normal, black, red, green, yellow, blue, magenta, cyan, white. Цвета можно указывать в виде шестнадцатеричных кодов, например #1c87c9, или значений из палитры ANSI 256, если терминал это поддерживает.
Параметры цветовой конфигурации Git
| Параметр | Описание |
|---|---|
| color.branch | Задаёт цвет вывода команды git branch. |
color.branch.<slot> | Применяется к выводу git branch. <slot> — одно из следующих значений: 1. текущая ветка 2. локальная ветка 3. удалённая ветка 4. вышестоящая ветка 5. plain (любая другая ссылка) |
| color.diff | Задаёт цвета для вывода git diff, git log и git show. |
color.diff.<slot> | Указывает Git, к какой части патча (context, plain, meta, frag, old, new, commit, whitespace) применять определённый цвет. |
color.decorate.<slot> | Настраивает цвет для вывода git log --decorate. Поддерживаемые значения <slot>: branch, remoteBranch, tag, stash, HEAD. Применяются к локальным веткам, удалённым отслеживаемым веткам, тегам, отложенным изменениям и HEAD соответственно. |
| color.grep | Задаёт цвет для вывода git grep. |
color.grep.<slot> | Применяется к git grep. Переменная <slot> указывает, к какой части вывода grep (context, filename, function, lineNumber, match, matchContext, matchSelected, selected, separator) применять цвет. |
| color.interactive | Задаёт цвет для интерактивных подсказок и дисплеев (например, git add --interactive, git clean --interactive). |
color.interactive.<slot> | Нацелен на «интерактивный вывод». Доступные значения <slot>: prompt, header, help, error. |
| color.pager | Включает или отключает цветной вывод при использовании постраничного просмотра. |
| color.showBranch | Включает или отключает цветной вывод для команды git show-branch. |
| color.status | Включает или отключает цветной вывод для git status. |
color.status.<slot> | Задаёт пользовательский цвет для определённых элементов git status. <slot> поддерживает следующие значения: header, added или updated, changed, untracked, branch, nobranch, unmerged. |
Псевдонимы git config
Псевдонимы — это пользовательские сокращения, раскрывающиеся в более длинные или составные команды, чтобы не вводить часто используемые команды целиком. Система псевдонимов Git чаще всего применяется для сокращения общих команд. Псевдонимы создаются с помощью git config:
git config set alias
git config --global alias.ci commitПосле этого git ci выполняет git commit. Поскольку значение содержит пробел, псевдоним, соответствующий команде с флагами, должен быть заключён в кавычки как единый аргумент:
git config aliases
git config --global alias.amend "commit --amend"Здесь git amend раскрывается в git commit --amend. Псевдоним также может вызывать команду оболочки, если добавить в начало значения символ !, например git config --global alias.unstage '!git restore --staged'. Подробнее см. в отдельной главе git alias.
Форматирование и пробелы
| Функция | Описание | Команда git config |
|---|---|---|
indent-with-non-tab | Выделяет строку, начинающуюся с пробелов вместо табуляций. | git config --global core.whitespace "indent-with-non-tab,tab-in-indent,blank-at-eof,-trailing-space,-cr-at-eol" |
tab-in-indent | Выделяет начальную табуляцию в отступе как ошибку. | (Используется совместно с другими правилами) |
blank-at-eof | Выделяет пустые строки, вставленные в конце файла. | (Используется совместно с другими правилами) |
trailing-space | Выделяет завершающие пробелы. | (Используется совместно с другими правилами) |
cr-at-eol | Выделяет символ возврата каретки в конце строки. | (Используется совместно с другими правилами) |
tabwidth=<n> | Задаёт количество позиций символа, занимаемых табуляцией. По умолчанию 8. Допустимые значения: 1–63. | git config --global core.whitespace "tabwidth=<n>" |
Другие распространённые настройки
Несколько значений конфигурации стоит задать на новом компьютере:
# Name the default branch "main" for every repository you create
git config --global init.defaultBranch main
# Reuse cached credentials so you are not prompted on every push
git config --global credential.helper cache
# Choose how git pull reconciles divergent branches (merge, not rebase)
git config --global pull.rebase falseЗначение init.defaultBranch применяется командой git init при создании репозитория. Чтобы управлять тем, какие файлы Git отслеживает, дополните конфигурацию файлом .gitignore.