Сложность заключается в следующем:
Переопределенные значения будут повторяться.
Это правда, что некоторые элементы, например, user.name
и user.email
, будутиметь более локальное значение переопределять более глобальное значение.Для других элементов, однако, все применяются настройки.Это верно, например, для значений remote.*.fetch
.
Фактическая обработка любого элемента зависит от программы, которая проверяет настройку .Команда git config
не знает, как команда git xyzzy
- которая еще не написана (это то, что вы напишите в будущем) - использует все настройки xyzzy.*
.Так что это просто показывает все из них.Используйте --show-origin
, чтобы показать, какой конкретный файл конфигурации был источником какого-либо определенного параметра.
Если вас интересует одно конкретное значение, используйте git config --get
:
git config --get core.editor
или:
git config --get-all remote.origin.fetch
Вариант --get
показывает настройку last , т.е. наиболее локальную, в то время как вариант --get-all
показывает все настройки.Какой из них использовать, конечно, зависит от того, как программа, которую вы будете запускать - может быть, та, которая уже написана или может быть той, которую вы пишете сейчас или напишете в следующем году, - на самом деле использует эту переменную.
Можно утверждать, что git config
должен понимать все "хорошо известные" имена переменных (например, core.editor
против remote.*.fetch
) и по умолчанию отображать их соответствующим образом в --list
.Однако авторы Git склонны рассматривать Git как набор инструментов, а не как решение, поэтому они не очень восприимчивы к этой аргументации.
Вы можете написать эту более разумную версиюgit config --list
себя.Возможно, вы можете назвать это git xyzzy
.:-) Ладно, может быть git smart-config-list
.Ваша команда умного листинга запустит git config --show-origins --list
, а затем применит правило фильтрации «все или последнее», основываясь на ее знаниях обо всех этих именах переменных.Когда вы пишете эту команду, подумайте о философии Git «инструменты против решений», и что git config
не очень хорошо спроектирован, поскольку он действует как сантехника (инструмент внутреннего использования) и фарфор (конечныйпользовательская команда).