git basic

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).

Синтаксис

git config [УРОВЕНЬ] <ключ> [<значение>] git config [УРОВЕНЬ] --get <ключ> git config [УРОВЕНЬ] --unset <ключ> git config [УРОВЕНЬ] --list git config [УРОВЕНЬ] --edit
# Прочитать значение git config user.name # Установить значение глобально git config --global user.email "ivan@example.com" # Удалить параметр git config --global --unset core.editor # Показать весь конфиг с указанием источника git config --list --show-origin

Флаги и опции

ФлагОписание
--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

Советы и подводные камни

Совет: включите rerere для автоматического повтора разрешений конфликтов
git config --global rerere.enabled true
Команда rerere (Reuse Recorded Resolution) запоминает, как вы разрешили конфликт слияния, и при повторном возникновении применяет то же решение автоматически.
Совет: используйте conditional includes для разных контекстов
В ~/.gitconfig можно подключать разные конфиги в зависимости от пути к репозиторию:
[includeIf "gitdir:~/work/"]
  path = ~/.gitconfig-work
Удобно для разделения рабочих и личных учётных данных без ручного --local.
Внимание: --global изменяет конфиг для ВСЕХ репозиториев
Флаг --global изменяет файл ~/.gitconfig, который применяется ко всем репозиториям на машине. Настройки, специфичные для проекта (например, другой email), задавайте без --global внутри нужного репозитория.