Олег Марков
Глобальная конфигурация Git с git config --global
Введение
Глобальная конфигурация Git через команду git config --global — это механизм, который позволяет один раз задать общие настройки для всех ваших репозиториев на конкретной машине.
Вы настраиваете имя, почту, редактор, формат вывода логов, поведение при слияниях, алиасы команд и многие другие параметры — и вам не нужно повторять это в каждом новом проекте. Git будет автоматически применять эти настройки везде, где вы работаете.
Давайте разберем, как именно работает глобальная конфигурация, как с ней аккуратно обращаться, где она хранится, какие параметры имеет смысл настраивать и как быстро проверить, что все работает так, как вы ожидаете.
Что такое git config и уровни конфигурации
Три уровня конфигурации Git
Git хранит настройки на трех уровнях:
Системный (system)
Файл конфигурации действует для всех пользователей и всех репозиториев на машине.
Обычно это:- Linux macOS:
/etc/gitconfig - Windows:
C:\ProgramData\Git\configили путь в каталоге установки Git
- Linux macOS:
Глобальный (global)
Файл конфигурации для конкретного пользователя на машине.
Расположение:- Linux macOS:
~/.gitconfigили~/.config/git/config - Windows:
C:\Users<имя_пользователя>.gitconfig
- Linux macOS:
Локальный (local)
Файл конфигурации для конкретного репозитория.
Расположение:- Внутри репозитория:
.git/config
- Внутри репозитория:
Git объединяет эти уровни по приоритету:
local > global > system.
То есть, если вы настроили один и тот же параметр на нескольких уровнях, будет использоваться значение с наибольшим приоритетом — чаще всего локальный.
Как работает git config --global
Флаг --global говорит Git: "Измени настройки в конфигурации текущего пользователя".
То есть вы работаете именно с файлом ~/.gitconfig (или его аналогом в вашей системе).
Например, команда:
git config --global user.name "Ivan Petrov"
# Здесь мы задаем глобальное имя пользователя для коммитов
запишет параметр user.name в глобальный конфигурационный файл. Теперь это имя будет использоваться по умолчанию во всех репозиториях, где вы не переопределили его локально.
Где хранится глобальная конфигурация и как ее посмотреть
Проверка пути к конфигурации
Смотрите, я покажу вам простой способ узнать, где именно Git хранит глобальный конфиг на вашей машине:
git config --global --list --show-origin
# --show-origin показывает путь к файлу, откуда взяты параметры
Пример вывода:
file:/home/user/.gitconfig user.name=Ivan Petrov
file:/home/user/.gitconfig user.email=ivan@example.com
file:/home/user/.gitconfig core.editor=vim
Здесь вы видите:
- источник (
file:/home/user/.gitconfig) - ключ (
user.name) - значение (
Ivan Petrov)
Просмотр всего глобального конфига
Чтобы просто увидеть все глобальные настройки:
git config --global --list
# Покажет только параметры из глобального файла
Если вы хотите увидеть полную картину (со всех уровней):
git config --list --show-origin
# Выводит параметры из system, global и local уровней с указанием источника
Базовые глобальные настройки: имя и почта
Почему это важно
Git использует user.name и user.email для формирования данных о каждом коммите. Эти значения попадают в историю репозитория и используются:
- при просмотре логов
- при анализе авторства строк (git blame)
- при работе с внешними сервисами (GitHub, GitLab, Bitbucket и др.)
Если вы не зададите глобальные значения, Git может:
- выдавать предупреждение при каждом коммите
- подставить некорректное значение по умолчанию (например, системное имя пользователя)
Настройка имени и почты
Давайте разберемся на примере.
git config --global user.name "Ivan Petrov"
# Здесь мы задаем глобальное имя автора коммитов
git config --global user.email "ivan.petrov@example.com"
# Здесь мы задаем глобальный email автора коммитов
После этого любые коммиты в новых репозиториях будут использовать эти значения.
Вы можете проверить текущие настройки так:
git config --global user.name
# Печатает только значение user.name
git config --global user.email
# Печатает только значение user.email
Если вам нужно переопределить имя или почту только в одном проекте (например, рабочий email в рабочем репозитории), вы используете локальный уровень:
git config --local user.email "ivan.petrov@company.com"
# Записываем email только в .git/config текущего репозитория
В этом случае:
- в этом репозитории будет использоваться
ivan.petrov@company.com - в остальных — глобальное значение
ivan.petrov@example.com
Глобальный конфиг и редактор по умолчанию
Зачем настраивать редактор
Git запускает внешний редактор для:
- ввода сообщения коммита (если вы не указали
-m) - редактирования сообщений при rebase
- написания merge сообщений и т.п.
По умолчанию это может быть vim или даже что-то неожиданное. Чтобы не удивляться, лучше явно задать подходящий редактор глобально.
Настройка редактора
Примеры для разных редакторов.
Vim
git config --global core.editor "vim"
# Задаем Vim как редактор по умолчанию
Nano
git config --global core.editor "nano"
# Задаем более простой консольный редактор
Visual Studio Code
git config --global core.editor "code --wait"
# --wait говорит VS Code не закрывать процесс, пока вы не закроете файл
Комментарий важен: без --wait Git решит, что вы сразу закрыли редактор, и не даст вам нормально отредактировать сообщение.
Другие редакторы
git config --global core.editor "subl -n -w"
# Sublime Text -n открывает новое окно, -w ждет закрытия
Формат вывода и поведение Git: полезные глобальные параметры
Теперь давайте перейдем к другим часто используемым глобальным настройкам, которые упрощают ежедневную работу.
Цветной вывод
Чтобы команды git status, git diff, git log и другие выглядели более наглядно, стоит включить цвет:
git config --global color.ui auto
# Git будет использовать цвета, если вывод идет в терминал
Вы также можете настроить цвета подробнее, но для начала auto более чем достаточно.
Удобный вывод статуса
Многие разработчики предпочитают "короткий" статус:
git config --global status.short true
# Включает короткий формат git status (флаги по двум символам для файлов)
git config --global status.branch true
# Показывает текущую ветку и статус относительно удаленной ветки
Однако стоит учитывать, что git status -sb и так дает короткий формат. Глобальная настройка просто делает это поведением по умолчанию.
Игнорирование прав на файлы (особенно для Windows и WSL)
Если вы работаете, например, между Windows и Linux, Git может видеть изменения прав доступа на файлы, даже если вы ничего не меняли. Чтобы это не мешало, многие настраивают:
git config --global core.filemode false
# Git не будет считать изменения прав файла изменением содержимого
Глобальные алиасы (alias) команд
Одна из самых полезных возможностей глобальной конфигурации — создание коротких псевдонимов для часто используемых команд. Они хранятся в секции alias глобального конфига.
Примеры полезных алиасов
Смотрите, я покажу вам несколько популярных вариантов, которые многие используют.
git config --global alias.st "status -sb"
# git st -> git status -sb (короткий статус с веткой)
git config --global alias.co "checkout"
# git co main -> git checkout main
git config --global alias.br "branch"
# git br -> git branch
git config --global alias.cm "commit -m"
# git cm "message" -> git commit -m "message"
git config --global alias.df "diff"
# git df -> git diff
git config --global alias.lg "log --oneline --graph --decorate --all"
# git lg -> удобный графический лог в одну строку на коммит
Давайте посмотрим, что происходит в примере с lg:
git lg
# Запускается git log --oneline --graph --decorate --all
# --oneline - компактный вывод
# --graph - псевдографика с ветками
# --decorate - показывает имена веток и теги
# --all - отображает все ветки
Такой формат очень удобен для понимания структуры истории.
Как отредактировать алиас вручную
Если вы хотите отредактировать глобальную конфигурацию напрямую, вы можете открыть файл .gitconfig в редакторе.
Например:
nano ~/.gitconfig
# Открываем глобальный конфиг в nano
Пример содержимого:
[user]
name = Ivan Petrov
email = ivan.petrov@example.com
[core]
editor = code --wait
[alias]
st = status -sb
lg = log --oneline --graph --decorate --all
Комментарии:
[user]— секция с данными пользователя[core]— базовые настройки Git[alias]— ваши алиасы команд
Настройки переноса строк и окончаний строк (Windows и Linux)
Одна из частых проблем — различия в символах конца строки между Windows и Unix-системами:
- Linux macOS:
\n(LF) - Windows:
\r\n(CRLF)
Git умеет автоматически конвертировать окончания строк при коммите и checkout. Глобальная настройка здесь играет важную роль.
Рекомендации по core.autocrlf
Если вы работаете на Windows
Обычно рекомендуют:
git config --global core.autocrlf true
# При checkout Git превращает LF в CRLF
# При commit Git превращает CRLF обратно в LF
Так в репозитории хранятся "чистые" LF, а у вас в редакторе — привычные CRLF.
Если вы работаете на Linux или macOS
Лучше отключить автоматическую конвертацию:
git config --global core.autocrlf input
# При commit Git будет превращать CRLF в LF
# При checkout Git не будет трогать окончания строк
Если вы хотите вообще не трогать переносы строк
git config --global core.autocrlf false
# Git не будет автоматически менять окончания строк
Безопасность и глобальные настройки: credential.helper
Глобальная конфигурация также часто используется для настройки хранения учетных данных (логин пароля или токена доступа к удаленным репозиториям).
Настройка помощника учетных данных
Например, на Windows Git часто предлагает:
git config --global credential.helper manager-core
# Использует Git Credential Manager для безопасного хранения паролей
На macOS это может быть:
git config --global credential.helper osxkeychain
# Хранит учетные данные в системном хранилище macOS
На Linux (или в простых конфигурациях):
git config --global credential.helper cache
# Кэширует учетные данные в памяти на ограниченное время
Или даже:
git config --global credential.helper "cache --timeout=3600"
# Хранить данные в памяти 1 час (3600 секунд)
Комментарии:
- глобальная настройка здесь очень удобна: одна команда — и во всех репозиториях не нужно постоянно вводить логин/пароль
- при этом важно понимать, где именно и как хранятся ваши данные (особенно на общих машинах)
Работа с несколькими профилями: глобальный против локального
Частая ситуация: у вас есть личный GitHub аккаунт и рабочий корпоративный GitLab. Вы хотите:
- в личных проектах использовать
ivan.petrov@gmail.com - в рабочих —
ivan.petrov@company.com
Глобальная конфигурация обычно задает "базовый" профиль, а локальные настройки переопределяют его там, где это нужно.
Пример настройки
- Настраиваем личный глобальный профиль:
git config --global user.name "Ivan Petrov"
git config --global user.email "ivan.petrov@gmail.com"
- В рабочем репозитории переопределяем email:
cd /path/to/company/repo
# Переходим в рабочий репозиторий
git config user.email "ivan.petrov@company.com"
# Без --global -> это локальная настройка только для этого репозитория
Теперь:
- в рабочем репозитории коммиты будут идти с рабочим email
- в остальных проектах — с личным
Проверка, какие значения реально используются
Вы можете проверить, какие параметры Git учитывает в текущем репозитории:
git config user.name
git config user.email
# Покажут итоговые значения с учетом всех уровней
Чтобы увидеть, откуда именно взято значение:
git config --show-origin user.email
# Покажет источник (global или local файл)
Как изменять и удалять глобальные настройки
Иногда нужно не просто добавить новую настройку, но и изменить или удалить старую.
Изменение значения
Повторная установка того же параметра просто перезапишет старое значение:
git config --global user.name "Ivan P."
# Старое значение user.name будет заменено новым
Удаление параметра
Если вы хотите удалить параметр из глобальной конфигурации:
git config --global --unset user.email
# Удаляем user.email из глобального файла
Если параметр может быть указан несколько раз (например, для списков), и вы хотите удалить все значения:
git config --global --unset-all alias.lg
# Удаляет все вхождения alias.lg
Редактирование всего глобального файла в редакторе
Если вам удобнее править конфиг целиком:
git config --global --edit
# Откроет глобальный .gitconfig в редакторе, который указан в core.editor
Комментарии:
- это безопасный способ редактировать файл, потому что Git сам выберет нужный редактор и путь
- вы можете руками поправить секции
[user],[core],[alias]и другие
Практический пример: настройка "стартового" окружения Git
Давайте соберем все вместе и сделаем пример базовой глобальной конфигурации, которую многие разработчики используют на новой машине.
# 1. Данные пользователя
git config --global user.name "Ivan Petrov"
git config --global user.email "ivan.petrov@example.com"
# 2. Редактор по умолчанию
git config --global core.editor "code --wait"
# 3. Цветной вывод
git config --global color.ui auto
# 4. Алиасы
git config --global alias.st "status -sb"
git config --global alias.co "checkout"
git config --global alias.br "branch"
git config --global alias.cm "commit -m"
git config --global alias.lg "log --oneline --graph --decorate --all"
# 5. Окончания строк (пример для Windows)
git config --global core.autocrlf true
# 6. Помощник учетных данных (пример для Windows)
git config --global credential.helper manager-core
Теперь вы увидите, что работа с Git во всех новых и существующих репозиториях на этой машине станет более предсказуемой и удобной.
Диагностика проблем с глобальной конфигурацией
Иногда кажется, что глобальные настройки "не работают". Давайте разберем типичные причины и способы проверки.
Настройка переопределена локально
Самая частая причина: в локальном .git/config прописано другое значение.
Проверьте:
git config --show-origin user.email
# Покажет путь к файлу, откуда взято значение
Если там .git/config, значит локальная настройка переопределяет глобальную.
Решение:
- либо удалите или измените параметр локально
- либо оставьте так, если это осознанное решение (например, разные профили)
Вы редактируете не тот файл
Бывает, что вы руками редактируете ~/.gitconfig, а Git на самом деле использует ~/.config/git/config.
Проверьте:
git config --global --list --show-origin
# Смотрите, какой файл реально используется как глобальный
Используйте git config --global --edit, чтобы гарантированно попасть в правильный файл.
Ошибка в синтаксисе конфигурационного файла
Файл .gitconfig имеет формат INI. Если вы вручную редактируете его и допустили ошибку (не закрыли кавычки, неправильно написали секцию), Git может начать игнорировать часть настроек.
Пример корректного файла:
[user]
name = Ivan Petrov
email = ivan.petrov@example.com
[core]
editor = code --wait
autocrlf = true
Если вы сомневаетесь, временно переименуйте файл и создайте настройки заново командами git config --global ..., чтобы Git сам сформировал правильную структуру.
Заключение
Глобальная конфигурация Git через git config --global — это основной инструмент для создания удобного и предсказуемого окружения разработчика.
Вы один раз задаете:
- имя и почту, которые будут видны во всех коммитах
- редактор по умолчанию
- формат вывода и поведение Git
- алиасы для часто используемых команд
- параметры переноса строк
- помощников для хранения учетных данных
и получаете одинаковые настройки во всех репозиториях на конкретной машине.
Важно помнить, что:
- глобальные настройки могут быть переопределены локальными
- разные системы могут хранить глобальный конфиг в разных местах
- редактируя
.gitconfigвручную, стоит внимательно следить за синтаксисом
Если вы будете аккуратно относиться к глобальной конфигурации и осознанно выбирать, какие параметры задавать глобально, а какие — локально, Git станет заметно удобнее и понятнее в ежедневной работе.
Частозадаваемые технические вопросы по теме и ответы
1. Как сделать так, чтобы разные репозитории использовали разные глобальные настройки без постоянного ручного изменения?
Вы можете использовать параметр includeIf в глобальном конфиге. Пример:
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
Комментарии:
- все репозитории внутри
~/work/будут дополнительно читать настройки из~/.gitconfig-work - в
~/.gitconfig-workможно задать, например, рабочий email и алиасы
Создайте отдельный файл:
# ~/.gitconfig-work
[user]
email = ivan.petrov@company.com
2. Как посмотреть значение параметра одновременно на всех уровнях конфигурации?
Используйте:
git config --show-origin --get-all user.email
# Покажет все значения user.email и файлы, откуда они взяты
Так вы увидите, что задано на system, global и local уровнях.
3. Как экспортировать свои глобальные настройки Git на другой компьютер?
Скопируйте файл глобальной конфигурации на новый компьютер:
- На старой машине:
cp ~/.gitconfig /path/to/usb_or_cloud/.gitconfig
# Копируем глобальный конфиг во временное место
- На новой машине:
cp /path/from/usb_or_cloud/.gitconfig ~/.gitconfig
# Возвращаем файл в домашний каталог
После копирования проверьте путь к редактору (core.editor) и другим привязанным к системе настройкам.
4. Как настроить глобальный шаблон .gitignore для всех репозиториев?
Сначала создайте файл, например ~/.gitignore_global, затем добавьте туда общие правила:
# ~/.gitignore_global
*.log
.DS_Store
Thumbs.db
Теперь скажите Git использовать этот файл глобально:
git config --global core.excludesfile "~/.gitignore_global"
# Git будет применять эти правила во всех репозиториях
5. Как временно игнорировать глобальные настройки для одной команды?
Вы можете явно задать нужный параметр в командной строке, чтобы переопределить глобальное значение только для одного запуска. Пример:
git -c user.email="temp@example.com" commit -m "Test"
# Только для этого коммита будет использован указанный email
Флаг -c добавляет или переопределяет параметр конфигурации для одной конкретной команды, не изменяя файлы настроек.
Постройте личный план изучения Git до уровня Middle — бесплатно!
Git — часть карты развития Frontend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Бесплатные лекции
Все гайды по Git
Лучшие курсы по теме

Основы Git
Антон Ларичев
TypeScript с нуля
Антон Ларичев