Откуда берутся настройки в моей конфигурации Git?
Я заметил, что у меня есть 2 списка для core.autocrlf когда я запускаю git config -l
$ git config -l
core.symlinks=false
core.autocrlf=false
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=name
user.email=email@example.com
core.autocrlf=true
те последние 3 (от user.name вниз) являются единственными в моем . Откуда берутся все остальные? Почему это ядро.перечисленные autocrlf в два раза?
это с msysgit 1.8.3, и у меня также установлен SourceTree (Windows 7). В SourceTree я снял флажок "Разрешить SourceTree изменять ваши глобальные файлы конфигурации Git"
5 ответов:
Git проверяет 4 места для файла конфигурации:
- система вашей машины .
- ваш файл находится по адресу
~/.gitconfig.- второй пользовательский файл конфигурации, расположенный в
$XDG_CONFIG_HOME/git/configили$HOME/.config/git/config.- конфигурационный файл локального РЕПО
.git/config.параметры каскадируются в следующем порядке, при этом каждый файл добавляет или переопределяет параметры, определенные в файле выше оно.
- система настроек.
- Конфигурация пользователя.
- конфигурация для конкретного РЕПО.
вы можете увидеть, что каждый файл был определен с помощью следующих команд:
# System, applies to entire machine and all users $ git config --system --list $ git config --system --edit # User defined $ git config --global --list $ git config --global --editвы можете увидеть, что только РЕПО-конкретный файл определил, открыв файл
.git/configдля этого РЕПО.если вы используете msysgit на Windows, вы, вероятно, найдете своего пользователя
~/.gitconfigfile where ever%homepath%при использованииecho %homepath%из командной строки Windows.если не установлено явно с
--file, есть четыре файла, гдеgit configбудет искать варианты конфигурации:
$(prefix)/etc/gitconfigобщесистемный конфигурационный файл.
$XDG_CONFIG_HOME/git/configвторой пользовательский файл конфигурации. Если
$XDG_CONFIG_HOMEis не установлено и не пусто,$HOME/.config/git/configбудет использоваться. Любой однозначная переменная, установленная в этом файле, будет перезаписана что бы ни было в~/.gitconfig. Это хорошая идея, чтобы не создавать это файл, если вы иногда используете более старые версии Git, в качестве поддержки для этого файл был добавлен совсем недавно.
~/.gitconfigпользовательский конфигурационный файл. Также называется "глобальная" конфигурация файл.
$GIT_DIR/configфайл конфигурации конкретного репозитория.
если никакие более дополнительные варианты не даются, то все варианты чтения прочитают все эти файлы, которые доступны. Если глобальный или общесистемный файл конфигурации недоступен они будут проигнорированы. Если файл конфигурации репозитория недоступен или недоступен для чтения,
git configзавершается с ненулевым кодом ошибки. Однако, ни в одном случае будет ли выдано сообщение об ошибке.файлы считываются в порядке, указанном выше, с последним найденным значением приоритет над значениями, прочитанными ранее. Когда несколько значений взятые тогда все значения ключа из всех файлов будут использованы.
все параметры записи будут по умолчанию записываться в конкретный репозиторий конфигурационный файл. Обратите внимание, что это также влияет на такие параметры, как
--replace-allи--unset.git configбудет только когда-нибудь изменить по одному файлу за раз.вы можете переопределить эти правила либо по параметрам командной строки, либо по переменная окружения. Элемент
--globalи--systemопции ограничьте используемый файл глобальным или общесистемным файлом соответственно. ЭлементGIT_CONFIGпеременная окружения имеет аналогичный эффект, но вы можете указать любое имя вы хотите.
вам больше не нужно угадывать, какая конфигурация была установлена на где, с git 2.8! (Март 2016 года)
посмотреть совершить 70bd879, commit 473166b,совершить 7454ee3,совершить 7454ee3 (19 февраля 2016), commit 473166b,совершить 7454ee3 (19 февраля 2016), совершить 7454ee3 (19 февраля 2016), и commit a0578e0 (17 февраля 2016) by Ларс Шнайдер (
larsxschneider).
(слитый Junio C Hamano--gitster-- in commit dd0f567, 26 февраля 2016)config: добавить'
--show-origin' возможность печати источника значения конфигурацииесли значения конфигурации запрашиваются с помощью '
git config' (например, через--get,--get-all,--get-regexpили--listфлаг), то это иногда трудно найдите файл конфигурации, в котором были определены значения.учить
git config'the'--show-origin' возможность печати источника файл конфигурации для каждого напечатанного значения.The
git configна странице will теперь указывает:--show-origin:увеличьте выходные данные всех запрошенных параметров конфигурации с типом источника (файл, стандартный ввод, большой двоичный объект, командная строка) и фактическим источником (путь к файлу конфигурации, ref или идентификатор большого двоичного объекта, если применимо).
для пример:
git config --list --show-originчто вернется:
file:$HOME/.gitconfig user.global=true file:$HOME/.gitconfig user.override=global file:$HOME/.gitconfig include.path=$INCLUDE_DIR/absolute.include file:$INCLUDE_DIR/absolute.include user.absolute=include file:.git/config user.local=true file:.git/config user.override=local file:.git/config include.path=../include/relative.include file:.git/../include/relative.include user.relative=include command line: user.cmdline=trueдля одной установки, как прокомментировал by wisbucky:
git config --show-origin --get-all core.autocrlf file:"D:\prgs\git\latest\mingw64/etc/gitconfig" true file:C:/Users/vonc/.gitconfig false
после предварительной установки Git для Windows и впоследствии удалить его, я обнаружил, что есть файл конфигурации установлен на C:\Users\All Users\Git\config, который является конфигурационным файлом системного уровня, который сохраняется и будет влиять на любые будущие пакеты mingw32 git (в моем случае я запускал портативный пакет mingw32 git, предоставленный моей компанией). Когда я бежал
git config --system --editон покажет мне файл конфигурации системы, расположенный в mingw32 / etc / gitconfig, но по-прежнему будет загружать значения из первого местоположения. Это появилось как предупреждение о том, что значения конфигурации столкнулись при попытке использовать Git lfs
WARNING: These git config values clash: git config "http.sslcainfo" = "C:/Users/foo/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt" git config "http.sslcainfo" = "/ssl/certs/ca-bundle.crt"(Примечание: это также может быть ситуация, когда предупреждения lfs слишком настойчивы #861)
git config-l показывает все унаследованные значения от: system, global и local.
таким образом, у вас есть еще один конфигурационный файл, который загружается вместе с вашим пользователем .gitconfig
Если вы хотите найти, чтобы найти фактическое местоположение файла, он будет в вашем домашнем каталоге.
Он скрыт и предшествует".".
Так что если вы находитесь на Mac, в вашем терминале вы можете
cd ~ && open .gitconfigили откройте его с помощью вашего любимого текстового редактора, напримерcd ~ && atom .gitconfig.