git config
Читать и записывать параметры конфигурации репозитория, пользователя или системы
Описание
git config управляет настройками Git на трёх уровнях: системном (--system, файл /etc/gitconfig), глобальном (--global, файл ~/.gitconfig или ~/.config/git/config) и локальном (--local, файл .git/config в текущем репозитории). Более узкий уровень перекрывает более широкий: локальный > глобальный > системный.
Первое, что делают после установки Git — задают имя и email автора коммитов. Без этих настроек Git откажется создавать коммиты. Кроме идентификации, через git config настраивают редактор, инструменты слияния, псевдонимы команд, поведение переносов строк, настройки push и pull, GPG-подписи и многое другое.
Команда работает как с отдельными ключами (git config user.name "Ivan"), так и может вывести весь конфиг (git config --list) или открыть файл конфигурации в редакторе (git config --edit).
Синтаксис
- УРОВЕНЬ — один из:
--system,--global,--local,--worktree. - <ключ> — имя параметра в формате
секция.ключ, напримерuser.name,core.editor. - <значение> — новое значение параметра. Если опущено, команда читает текущее значение.
Флаги и опции
| Флаг | Описание |
|---|---|
--global | Применить к глобальному конфигу пользователя (~/.gitconfig). Действует для всех репозиториев текущего пользователя. |
--local | Применить к локальному конфигу репозитория (.git/config). Значение по умолчанию при нахождении внутри репозитория. |
--system | Применить к системному конфигу (/etc/gitconfig). Требует прав администратора. Действует для всех пользователей системы. |
--worktree | Применить к конфигу рабочего дерева (.git/config.worktree). Используется с git worktree. |
--list / -l | Вывести все активные настройки из всех уровней конфигурации. |
--get | Получить значение последнего совпадающего ключа (поведение по умолчанию при чтении). |
--get-all | Получить все значения для ключа (когда один ключ задан несколько раз, например в remote.origin.fetch). |
--unset | Удалить параметр из конфига. |
--unset-all | Удалить все значения для заданного ключа. |
--edit / -e | Открыть файл конфигурации в редакторе (определяется переменной GIT_EDITOR или core.editor). |
--add | Добавить новую строку для ключа, не заменяя существующие значения. |
--show-origin | При выводе настроек показывать файл, из которого взято значение. |
--show-scope | При выводе показывать уровень (system/global/local/worktree). |
--type=<тип> | Указать тип значения для корректной сериализации: bool, int, bool-or-int, path, expiry-date, color. |
Паттерны использования
Первоначальная настройка Git
git config --global user.name "Ivan Petrov" git config --global user.email "ivan@example.com" git config --global init.defaultBranch main git config --global core.editor "code --wait" git config --global pull.rebase false
Псевдонимы для удобства
git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.lg "log --oneline --graph --all" # Использование git lg
Настройка переносов строк
# Windows — автоматически конвертировать git config --global core.autocrlf true # Linux/macOS — оставлять LF git config --global core.autocrlf input # Просмотр текущего значения git config core.autocrlf
Просмотр и диагностика конфига
# Все настройки с источниками git config --list --show-origin --show-scope # Только локальный конфиг git config --local --list # Проверить конкретный параметр git config --global user.email
Настройка учётных данных
# Сохранять пароли (не рекомендуется для GPG-ключей) git config --global credential.helper store # Кэш на 1 час (3600 секунд) git config --global credential.helper "cache --timeout=3600" # На macOS — Keychain git config --global credential.helper osxkeychain
Настройки для конкретного репозитория
# Переопределить email для рабочего проекта cd /work/company-project git config user.email "ivan@company.com" # Убедиться, что применяется локальный конфиг git config --show-scope user.email # local ivan@company.com
Советы и подводные камни
git config --global rerere.enabled trueКоманда
rerere (Reuse Recorded Resolution) запоминает, как вы разрешили конфликт слияния, и при повторном возникновении применяет то же решение автоматически.
В
~/.gitconfig можно подключать разные конфиги в зависимости от пути к репозиторию:[includeIf "gitdir:~/work/"] path = ~/.gitconfig-workУдобно для разделения рабочих и личных учётных данных без ручного
--local.
Флаг
--global изменяет файл ~/.gitconfig, который применяется ко всем репозиториям на машине. Настройки, специфичные для проекта (например, другой email), задавайте без --global внутри нужного репозитория.