Иконка подарка

Весенняя распродажа! Скидка 15% по промокоду

до 01.04.2026

Просмотр настроек Git через git config --list - практическое руководство

27 марта 2026
Автор

Олег Марков

Введение

Команда git config лежит в основе того, как Git хранит и применяет свои настройки. Но на практике разработчикам чаще всего нужно не просто изменить параметр, а понять, какие настройки сейчас реально действуют, откуда они взялись и почему ведут себя именно так.

Здесь вам как раз и нужна команда git config --list. Она показывает текущие значения всех известных Git настроек, с учетом приоритета разных уровней конфигурации. Смотрите, я покажу вам, как с помощью этой команды:

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

Давайте постепенно разберем, как устроен просмотр настроек, какие есть режимы у git config --list и как использовать их в повседневной работе.

Как устроены конфигурации Git

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

Уровни конфигурации в Git

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

  1. Системный уровень (system)
  2. Глобальный / пользовательский (global)
  3. Уровень рабочего окружения XDG (xdg)
  4. Локальный уровень репозитория (local)
  5. Дополнительные файлы (переданные через параметр -f / --file)
  6. Временные настройки через переменные окружения

Чем ниже в списке, тем выше приоритет настройки. Локальные настройки перекрывают глобальные, а глобальные — системные.

Смотрите, как это выглядит в теории:

  • system — настройки для всех пользователей на машине
    Файл обычно:

    • /etc/gitconfig (Linux, macOS)
    • C:\ProgramData\Git\config (Windows, Git for Windows)
  • global — настройки конкретного пользователя
    Файл обычно:

    • ~/.gitconfig (Linux, macOS)
    • C:\Users<User>.gitconfig (Windows)
  • xdg — альтернативный пользовательский путь по стандарту XDG
    Файл:

    • ~/.config/git/config
  • local — настройки конкретного репозитория
    Файл:

    • .git/config внутри репозитория

Git объединяет все эти уровни, и вы видите итоговую картину.

Как Git выбирает итоговое значение

Если одна и та же настройка объявлена на разных уровнях, выигрывает та, что определена на уровне с высшим приоритетом. Например:

  • В /etc/gitconfig указано core.autocrlf = false
  • В ~/.gitconfig указано core.autocrlf = input
  • В .git/config указано core.autocrlf = true

Итоговым значением, которое увидите при обычном git config --list, будет:

  • core.autocrlf = true
    потому что локальный уровень (репозитория) имеет максимальный приоритет.

Теперь давайте посмотрим, как git config --list позволяет увидеть, что именно происходит.

Базовое использование git config --list

Самая простая форма команды

Самый распространенный вариант:

git config --list
# или сокращенный вариант
git config -l

Эта команда:

  • считывает все конфигурационные файлы, о которых Git знает на данный момент;
  • объединяет их с учетом приоритета;
  • выводит итоговый список настроек в формате: # ключ=значение ```

Например:

$ git config --list
user.name=Ivan Petrov
user.email=ivan.petrov@example.com
core.repositoryformatversion=0
core.filemode=true
core.logallrefupdates=true
color.ui=auto
...

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

Особенности вывода

Обратите внимание на несколько моментов:

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

Если вам нужно сделать быстрый обзор текущей конфигурации, git config --list — самый удобный вариант.

Просмотр конфигурации на разных уровнях

Теперь давайте разберем, как с помощью git config --list посмотреть настройки каждого уровня по отдельности. Это важно, если вы хотите понять, откуда конкретное значение берется.

Локальная конфигурация репозитория

Чаще всего вас интересует именно локальная конфигурация текущего репозитория. Для этого используйте:

git config --list --local
# или
git config -l --local

Эта команда:

  • читает только .git/config в текущем репозитории;
  • не показывает глобальные и системные настройки;
  • выводит только те параметры, которые заданы локально.

Пример:

$ git config --list --local
user.name=Project Specific User
user.email=project@example.com
remote.origin.url=git@github.com:example/repo.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.main.remote=origin
branch.main.merge=refs/heads/main

Комментарии к примеру:

  • Здесь user.name и user.email специфичны для проекта, они перекроют глобальные настройки.
  • Настройки удаленного репозитория (remote.origin.*) почти всегда находятся именно на локальном уровне.

Глобальная конфигурация пользователя

Чтобы увидеть, какие настройки заданы для текущего пользователя, используйте:

git config --list --global

Команда читает только ~/.gitconfig (или его аналог на вашей системе).

Например:

$ git config --list --global
user.name=Ivan Petrov
user.email=ivan.petrov@example.com
color.ui=auto
alias.co=checkout
alias.st=status
core.editor=vim

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

Конфигурация по стандарту XDG

Иногда настройки хранятся в файле ~/.config/git/config. Чтобы посмотреть только их:

git config --list --xdg

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

Системная конфигурация

Системные настройки (для всех пользователей на машине):

git config --list --system

Смотрите, что здесь важно:

  • Часто для этой команды нужны права администратора, иначе вы получите ошибку доступа.
  • На CI-серверах, в докер-образах и корпоративных машинах здесь могут быть заданы параметры прокси, пути к сертификатам и другие политики.

Пример:

$ sudo git config --list --system
core.autocrlf=false
pack.packsizelimit=2g
http.sslcainfo=/etc/ssl/certs/ca-certificates.crt
credential.helper=store

Использование конкретного файла конфигурации

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

git config --list --file /path/to/some/gitconfig
# или короткий вариант
git config -l -f /path/to/some/gitconfig

Это полезно, когда:

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

Как увидеть все значения и дубликаты

По умолчанию git config --list показывает каждую настройку в ее итоговом виде, хотя и может вывести несколько значений для одного ключа, если они трактуются Git как список.

Но иногда вам нужно увидеть все декларации одного и того же ключа на разных уровнях. Для этого есть опция --show-origin и некоторые другие приемы.

Просмотр источника каждой настройки (--show-origin)

Флаг --show-origin добавляет к каждой строке информацию о том, из какого файла была взята настройка:

git config --list --show-origin

Пример вывода:

$ git config --list --show-origin
file:/etc/gitconfig    core.autocrlf=false
file:/home/ivan/.gitconfig  user.name=Ivan Petrov
file:/home/ivan/.gitconfig  user.email=ivan.petrov@example.com
file:/home/ivan/projects/myrepo/.git/config  user.email=project@example.com
file:/home/ivan/projects/myrepo/.git/config  remote.origin.url=git@github.com:example/repo.git

Здесь вы сразу видите:

  • откуда взялись значения;
  • что user.email переопределен локально для репозитория.

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

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

Если вам нужно посмотреть происхождение конкретной настройки, удобнее использовать:

git config --show-origin user.email

Например:

$ git config --show-origin user.email
file:/home/ivan/projects/myrepo/.git/config  user.email=project@example.com

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

Как увидеть все значения одного ключа из всех уровней

По умолчанию, если вы вызываете:

git config user.email

Git покажет только итоговое значение с учетом приоритета. Но иногда вы хотите увидеть все определения этого ключа. Для этого используйте флаг --show-scope вместе с --show-origin и фильтрацию по ключу в оболочке.

Давайте разберемся на задаче: посмотреть все объявления user.email:

git config --list --show-origin | grep user.email
# здесь мы ищем только строки с user.email

Пример результата:

file:/etc/gitconfig    user.email=system@example.com
file:/home/ivan/.gitconfig  user.email=ivan.petrov@example.com
file:/home/ivan/projects/myrepo/.git/config  user.email=project@example.com

Теперь вы ясно видите, как значение меняется от уровня к уровню.

Фильтрация и поиск по настройкам

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

Поиск по имени настройки

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

git config --list | grep user
# ищем все строки, содержащие 'user'

Комментарии:

  • Подход универсальный и простой.
  • Вы можете комбинировать его с --show-origin, если нужно видеть источники.

Пример использования:

$ git config --list --show-origin | grep user.
file:/home/ivan/.gitconfig  user.name=Ivan Petrov
file:/home/ivan/.gitconfig  user.email=ivan.petrov@example.com
file:/home/ivan/projects/myrepo/.git/config  user.email=project@example.com

Фильтрация по префиксу (группе настроек)

У всех настроек Git есть формат секция.подсекция.параметр, например:

  • user.name
  • core.editor
  • remote.origin.url

Если вы хотите увидеть только настройки конкретной секции, можно опять же воспользоваться grep:

git config --list | grep ^core.
# ^ означает начало строки, ищем только параметры, начинающиеся на core.

Примеры полезных фильтров:

  • git config --list | grep ^remote. — все настройки удаленных репозиториев;
  • git config --list | grep ^alias. — все алиасы Git;
  • git config --list | grep ^color. — настройки цветов в выводе Git.

Вывод ключей и значений в разном формате

Сам git config --list выводит пары ключ=значение. Но иногда вам удобнее работать с другими форматами, особенно при скриптинге. Для этого используют git config с дополнительными флагами, хотя это уже не строго --list, но тесно связано.

Например:

git config --name-only --list
# выводит только имена ключей, без значений

Или:

git config --null --list
# выводит настройки, разделяя их нулевым символом
# удобно для машинной обработки

Комментарий:

  • Режим --null полезен в скриптах, чтобы корректно обрабатывать значения с пробелами или переносами строк.

Работа с многозначными параметрами

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

  • несколько remote.origin.fetch;
  • несколько url.<base>.insteadOf;
  • несколько записей для safe.directory.

Здесь важно понимать, как git config --list это показывает.

Пример с несколькими значениями

Давайте посмотрим на настройку remote.origin.fetch. Она может выглядеть так в конфиге:

[remote "origin"]
    url = git@github.com:example/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    fetch = +refs/tags/*:refs/tags/*

Если вы посмотрите на это через git config --list, увидите:

$ git config --list | grep ^remote.origin.fetch
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.fetch=+refs/tags/*:refs/tags/*

Комментарии:

  • Каждый fetch выводится отдельной строкой.
  • Git воспринимает их как список, и оба значения активны.

Проверка многозначных параметров напрямую

Иногда удобнее использовать git config без флага --list:

git config --get-all remote.origin.fetch
# --get-all выводит все значения, а не только одно

Но для общего обзора git config --list все равно остается удобным, потому что вы видите и другие параметры.

Диагностика типичных проблем с конфигурацией

Теперь давайте посмотрим, как использовать git config --list в реальных ситуациях, когда что-то идет не так.

Проблемы с user.name и user.email

Частая ситуация — Git ругается, что не знает кто вы, когда вы пытаетесь сделать commit:

Please tell me who you are.
Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

Здесь git config --list помогает понять, есть ли вообще эти настройки и откуда они берутся.

Пошаговый разбор:

  1. Сначала смотрим текущие итоговые значения:

    git config --list | grep ^user.
    
  2. Если ничего не найдено — смотрим по уровням:

    git config --list --global | grep ^user.
    git config --list --local | grep ^user.
    
  3. Если нужно задать глобально:

    git config --global user.name "Ivan Petrov"
    git config --global user.email "ivan.petrov@example.com"
    
  4. Проверяем снова:

    git config --list --global | grep ^user.
    

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

Конфликты между глобальными и локальными настройками

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

Давайте разберемся на примере:

  1. Смотрим все значения:

    git config --list --show-origin | grep user.email
    
  2. Видим такой вывод:

    file:/home/ivan/.gitconfig  user.email=ivan.petrov@example.com
    file:/home/ivan/projects/myrepo/.git/config  user.email=wrong@example.com
    
  3. Понимаем, что именно локальная настройка виновата.

  4. Лечим:

    # Удаляем локальную настройку
    git config --unset --local user.email
    
    # или сразу задаем правильную
    git config --local user.email "ivan.petrov@example.com"
    
  5. Проверяем еще раз:

    git config --list --show-origin | grep user.email
    

Так вы контролируете источник значения и не гадаете, где оно "спрятано".

Проблемы с прокси или SSL

В корпоративных сетях часто случается, что Git не может достучаться до удаленных репозиториев. Одна из причин — неверные настройки http.proxy или http.ssl*.

Здесь git config --list полезен, чтобы проверить, что именно настроено:

git config --list | grep ^http.
git config --list | grep ^https.

Если вы видите:

http.proxy=http://old-proxy.example.com:8080
http.sslverify=false

Вы можете:

  • понять, что Git ходит через устаревший прокси;
  • увидеть, что проверка SSL отключена, что небезопасно.

Дальше вы:

# Убираете старый прокси глобально
git config --global --unset http.proxy

# Или задаете новый
git config --global http.proxy http://new-proxy.example.com:8080

И снова проверяете через git config --list, что настройка действительно исчезла или изменилась.

Отладка алиасов Git

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

git config --list | grep ^alias.

Пример:

alias.co=checkout
alias.st=status -sb
alias.br=branch

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

git config --global alias.st "status"

Проверяете снова:

git config --list --global | grep ^alias.st

Использование git config --list в скриптах

Команда git config --list часто используется не только вручную, но и в скриптах для анализа окружения и конфигурации.

Машинно-читаемый вывод с --null

Если вы пишете скрипт на bash, Python или другом языке, то безопаснее использовать нулевой разделитель:

git config --list --null

Пример использования в bash:

#!/usr/bin/env bash

# Здесь мы получаем все параметры Git, разделенные нулевым байтом
git config --list --null | while IFS= read -r -d '' entry; do
  # entry содержит строку вида 'ключ=значение'
  echo "Пара: $entry"
done

Комментарии:

  • -d '' говорит read, что разделитель — нулевой байт.
  • Такой подход корректно обрабатывает значения с пробелами, табами и переводами строк.

Проверка наличия параметра в скриптах

Иногда нужно просто узнать, задан ли параметр. Вместо парсинга вывода git config --list, удобнее использовать git config напрямую, но давайте покажу краткий прием с --list:

if git config --list | grep -q '^user.email='; then
  echo "Email настроен"
else
  echo "Email не настроен"
fi

Здесь:

  • grep -q ищет строку тихо, без вывода;
  • регулярное выражение ^user.email= гарантирует, что мы ищем именно настройку, а не просто часть строки.

Расширенные опции git config, связанные с просмотром

Хотя основа статьи — git config --list, рядом с ней есть несколько опций git config, которые тесно связаны с просмотром значений и часто используются вместе. Давайте коротко их затронем, чтобы у вас была цельная картина.

--show-origin и --show-scope

Мы уже использовали --show-origin. Есть еще полезный флаг --show-scope, который показывает "область" (scope) настройки:

git config --list --show-scope

Пример вывода:

local  user.email=project@example.com
global user.name=Ivan Petrov
system core.autocrlf=false

Если объединить:

git config --list --show-scope --show-origin

То вы получите максимально подробную картину:

local  file:/home/ivan/projects/myrepo/.git/config  user.email=project@example.com
global file:/home/ivan/.gitconfig  user.name=Ivan Petrov
system file:/etc/gitconfig  core.autocrlf=false

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

--name-only и --list

Комбинация:

git config --name-only --list

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

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

Заключение

Команда git config --list — это основной инструмент для просмотра и диагностики настроек Git. Она позволяет:

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

Ключевые приемы, которые стоит запомнить и использовать на практике:

  • git config --list — общий обзор всех настроек.
  • git config --list --local|--global|--system — просмотр конкретного уровня конфигурации.
  • git config --list --show-origin — диагностика, когда нужно понять, откуда взялось значение.
  • git config --list | grep ^user. и подобные фильтры — удобный поиск по конкретным группам параметров.
  • git config --list --null — безопасная основа для машинной обработки в скриптах.

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

Частозадаваемые технические вопросы по теме и ответы

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

Вам нужно указать путь к репозиторию через флаг -C:

git -C /path/to/repo config --list --local
# -C меняет рабочий каталог, не меняя текущую директорию оболочки

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

Как посмотреть настройки Git для другого пользователя на этой же машине

Если у вас есть доступ к его домашнему каталогу, укажите файл конфигурации явно:

git config --list --file /home/otheruser/.gitconfig

Аналогично можно смотреть локальный конфиг его репозитория:

git config --list --file /home/otheruser/project/.git/config

Как узнать, какое именно значение параметра будет использовано без полного списка --list

Используйте git config с именем параметра:

git config user.email
# выводит одно итоговое значение

Если нужно увидеть и источник, добавьте:

git config --show-origin user.email

Как понять, переопределяется ли параметр в переменных окружения

Git позволяет задавать некоторые конфиги через переменные окружения (например GITAUTHORNAME). Они не отображаются в git config --list. Чтобы убедиться, что окружение не вмешивается, временно очистите переменные:

env -i git config --list
# env -i запускает команду с пустым окружением

Сравните вывод с обычным git config --list и посмотрите, меняется ли поведение.

Можно ли увидеть незаданные параметры и их значения по умолчанию через git config --list

Нет, git config --list показывает только явно заданные значения. Значения "по умолчанию", зашитые в сам Git, так не видны. Чтобы узнать дефолт для конкретного параметра, ищите его в официальной документации:

git help config
# затем в тексте находите нужный ключ, например core.autocrlf
Стрелочка влевоЛокальная конфигурация Git - git config --localГлобальная конфигурация Git с git config --globalСтрелочка вправо

Постройте личный план изучения Git до уровня Middle — бесплатно!

Git — часть карты развития Frontend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Git

Открыть базу знаний

Лучшие курсы по теме

изображение курса

Основы Git

Антон Ларичев
AI-тренажеры
Гарантия
Бонусы
иконка звёздочки рейтинга4.9
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

TypeScript с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Next.js - с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.7
3 999 ₽ 6 990 ₽
Подробнее

Отправить комментарий