Я заметил, что у меня есть два объявления, 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
Последние три (начиная с user.name и ниже) - единственные в моем C:\users\username\.gitconfig
файле. Откуда все остальные? Почему core.autocrlf указан дважды?
Это с MSysGit 1.8.3, и у меня также установлен Sourcetree (Windows 7). В Sourcetree я снял флажок «Разрешить Sourcetree изменять ваши глобальные файлы конфигурации Git»
git
msysgit
git-config
RyanW
источник
источник
git config --list --show-origin
вам не придется угадывать, какая конфигурация git находится где. См. Мой ответ нижеОтветы:
Git проверяет наличие файла конфигурации в четырех местах:
.gitconfig
файл вашего компьютера ..gitconfig
файл расположен по адресу~/.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
файл там, где он когда-либо%homepath%
указывает, если вы используете егоecho %homepath%
из командной строки Windows.Из документации для
git config
:источник
.gitconfig
файл машины " в Windows с msysgit?C:\Program Files (x86)\Git\etc\gitconfig
. Хотя не уверен, что это правильный вариант.C:\Program Files\Git\mingw64\etc\gitconfig
C:\Program Files\Git\etc\gitconfig
Вам больше не нужно гадать, какая конфигурация была установлена где, с git 2.8! (Март 2016 г.)
См. Фиксацию 70bd879 , фиксацию 473166b , фиксацию 7454ee3 , фиксацию 7454ee3 (19 февраля 2016 г.), фиксацию 473166b , фиксацию 7454ee3 (19 февраля 2016 г.), фиксацию 7454ee3 (19 февраля 2016 г.) и фиксацию a0578e0 (17 февраля 2016 г.) Ларса Шнайдера (
larsxschneider
) .(Объединено Junio C Hamano -
gitster
- в коммите dd0f567 , 26 февраля 2016 г.)git config
Страница людей руководства теперь будет указано:Например:
Это вернется:
Для одной установки, так прокомментировал по wisbucky :
В Git 2.26 (Q1 2020) вы можете добавить
--show-scope
опцию :источник
user.cmdline=true
это нужно для--show-origin
работы? Кроме того, я заметил, что это--show-origin
должно быть сразу послеconfig
, чтобы работать с--get
и--get-all
. Так и должно быть... config --show-origin --get-all core.autocrlf
-c 'user.cmdline=true'
бит, который, кажется, относится к области тестирования: github.com/git/git/blob/…user.cmdline=true
было необходимо в Git 2.13, но больше не нужно в Git 2.15.После предварительной установки Git для Windows и последующего его удаления я обнаружил, что установлен файл конфигурации, в
C:\Users\All Users\Git\config
котором находится файл конфигурации системного уровня, который сохраняется и повлияет на любые будущие пакеты Git MinGW32 (в моем случае я запускал переносной MinGW32 Пакет Git, предоставленный моей компанией). Когда я бежалон покажет мне файл конфигурации системы, расположенный в
mingw32/etc/gitconfig
, но он все равно загрузит значения из первого места. Это проявилось как предупреждение о конфликте значений конфигурации при попытке использовать Git LFS .(Примечание: это также может быть ситуация, когда предупреждения LFS слишком напористые, # 861 )
источник
Ты можешь использовать
--show-origin
для того, чтобы узнать, откуда берутся конфигурации.Приоритет конфигурационных файлов в Git для Windows:
Источник: https://github.com/git-for-windows/git/blob/master@%7B2018-01-07%7D/Documentation/git-config.txt#L231
$PROGRAMDATA
это переменная среды. Вы можете получить значения этих переменных следующим образом:В Git Bash вам нужно использовать
echo "$ProgramData"
. В CMD нужно использоватьecho %PROGRAMDATA%
. Обратите внимание, что Git Bash явно делает вид, что переменные среды чувствительны к регистру.Что есть
$(prefix)
?Префикс - это каталог верхнего уровня, в который все устанавливается. В Git для Windows это либо
<some-path>/mingw64
или<some-path>/mingw32
.источник
git config -l
показывает все значения, унаследованные от системных, глобальных и локальных.Итак, у вас есть где-то еще один файл конфигурации, который загружается вместе с вашим пользовательским
.gitconfig
файлом.источник
Полный ответ для Windows (т.е. версия принятого ответа для Windows):
Как и в Linux, в Windows есть четыре уровня файлов конфигурации / настроек, три из которых являются прямыми эквивалентами. Важно отметить еще один - «Все приложения / пользователи» - особенно потому, что именно здесь установщик устанавливает значения, например, «core.autocrlf = true», но к нему нельзя получить доступ из командной строки. так что это вызывает путаницу.
Все приложения и пользователи
Это похоже на общую версию «системных» настроек, если у вас установлено несколько приложений Git. Для доступа к ним нет команды git config, но они все равно влияют на чистый результат настройки.
Расположение файла конфигурации:
C: \ ProgramData \ Git \ config
(Обратите внимание, что «ProgramData» было «Все пользователи» в более старых версиях Windows.)
Система
Расположение файла конфигурации: C: / Program Files / Git / mingw64 / etc / gitconfig
Пользователь
Расположение файла конфигурации:% USERPROFILE% .gitconfig (преобразуется в 'C: / Users / <имя пользователя>')
Репозиторий
Расположение файла конфигурации: [текущий каталог репозитория] /. Git / config
источник
В дополнение к тому
git config -l --show-origin
, что я представил здесь , с git 2.8 (март 2016 г.), теперь у вас есть с Git 2.26 (1 квартал 2020 г.)git config
научился показывать в каком "scope
", помимо того, из какого файла берется каждый параметр конфигурации.См. Commit 145d59f , commit 9a83d08 , commit e37efa4 , commit 5c105a8 , commit 6766e41 , commit 6dc905d , commit a5cb420 (10 февраля 2020 г.) и commit 417be08 , commit 3de7ee3 , commit 329e6ec (24 января 2020 г.) Мэтью Роджерс (
ROGERSM94
) .(Объединено Junio C Hamano -
gitster
- в коммите 5d55554 , 17 февраля 2020 г.)Пример:
источник
В Windows 7 (может быть, такой же или аналогичный для Windows 10), для Visual Studio и командной строки Git ваша глобальная конфигурация находится в:
(точка стоит перед именем файла)
Но это не соблюдается Sourcetree, по крайней мере, в режиме Git Embedded, и конфигурация находится в:
(без точки перед именем файла)
(Мне нужно было обновить оба файла, чтобы изменить мои глобальные настройки Git для команды Git и Sourcetree.)
Еще одна забавная часть. Конфигурация хуков Git работала на
AppData\Local\...
месте, но после дополнительных исследований с помощью Process Monitor я заметил, что почему-то Sourcetree также загружает глобально с диска, назначенного компанией, для моего пользователя.Это имеет очень мало смысла, поскольку очень немногие приложения ищут это местоположение, но каким-то образом Sourcetree делает, поэтому, если вы не можете заставить его работать с настройками местоположения в Sourcetree, запустите Process Monitor и создайте правило для регистрации только пути, содержащего gitconfig, и вы может найти, где на самом деле находится ваша глобальная конфигурация, в случае сетевого каталога пользователя.
И это может быть даже не ошибка Sourcetree, поскольку я вижу сейчас, когда пишу это, что git.exe загружает это, но это происходит только для git.exe, выполняемого Sourcetree, в то время как прямая командная строка Git использует
%USERPROFILE%\.gitconfig
Наконец, я взял все результаты из Process Monitor, отправил их в SQL Server и выполнил запрос, чтобы получить четкие результаты (нет определенного порядка выполнения, просто отсортированного по пути):
Я не знаю, как эти конфигурации связаны друг с другом, но я знаю, что некоторые переопределяют другие, некоторые настройки работают из одного места, некоторые из другого.
И приведенный выше список вызывается Sourcetree , снова прямая командная строка с Git, похоже, отлично работает
%USERPROFILE%\.gitconfig
, и этого нет в этом списке, но это будет выглядеть так (в Windows 7)C:\Users\pawel.cioch\.gitconfig
источник
Если вы хотите найти фактическое местоположение файла, он будет в вашем домашнем каталоге.
Он скрыт, и перед ним стоит «.».
Так что, если вы работаете на Mac, в своем терминале вы можете
cd ~ && open .gitconfig
открыть его в своем любимом текстовом редакторе, напримерcd ~ && atom .gitconfig
.источник