Откуда берутся настройки в моей конфигурации 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, вы, вероятно, найдете своего пользователя
~/.gitconfig
file where ever%homepath%
при использованииecho %homepath%
из командной строки Windows.если не установлено явно с
--file
, есть четыре файла, гдеgit config
будет искать варианты конфигурации:
$(prefix)/etc/gitconfig
общесистемный конфигурационный файл.
$XDG_CONFIG_HOME/git/config
второй пользовательский файл конфигурации. Если
$XDG_CONFIG_HOME
is не установлено и не пусто,$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
.