Куда записывается git config --global?

1025

При использовании git config --globalдля настройки, в какой файл он будет записывать?

Пример:

git config --global core.editor "blah"

Я не могу найти это в этих местах:

C:\Program Files\Git\etc\gitconfig

C:\myapp\.git\config

Я не установил ENV?

Версия My Git: 1.6.5.1.1367.gcd48 - для Windows 7

Ян Воган
источник
1
Вы используете msysgit или что-то еще?
Codeguru
359
git config --global --editдолжен сказать вам точное местоположение, независимо от того, какие у вас настройки - просто посмотрите, какой файл появляется в вашем редакторе.
MatrixFrog
55
git config --global --listбыл также полезен для случаев, когда его не существует, так как он дал место, где его ожидает git.
AJP
4
@AJP: Это именно моя проблема, но как изменить, где он хочет сохранить / прочитать его ??
Стейн де Витт
1
git config --list --show-origin расскажет вам местоположение
eddyP23

Ответы:

1241

Обновление 2016: с git 2.8 (март 2016) вы можете просто использовать:

git config --list --show-origin

А с Git 2.26 (Q1 2020) вы можете добавить --show-scopeопцию

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

Вы увидите, какой конфиг установлен, где.
Смотрите " Откуда берутся настройки в моей конфигурации Git? "

Как Стивен Vascellaro указывает в комментариях ,

он будет работать с нестандартными местами установки. (т.е. Git Portable )

(как последний PortableGit-2.14.2-64-bit.7z.exe, который может быть распакован где угодно)


Оригинальный ответ (2010)

Из документов :

--Глобальный

Для записи параметров: запись в глобальный ~/.gitconfigфайл, а не в хранилище .git/config.

Поскольку вы используете Git для Windows , может быть неясно, какому местоположению это соответствует. Но если вы посмотрите на etc / profile (in C:\Program Files\Git), вы увидите:

HOME="$HOMEDRIVE$HOMEPATH"

Смысл:

C:\Users\MyLogin

(в Windows 7)

Это означает, что файл предназначен C:\Users\MyLogin\.gitconfigдля Git в Windows 7.

VonC
источник
8
Я был очень тупым, я не добавил флаг "--global" в команду редактирования! "git config --global --edit" показал файл со всеми изменениями в моей конфигурации, "git config --edit" был файлом, который я продолжал открывать и размышлять, где находится тот элемент конфигурации editor / Compare / etc, который я только что установил! Большое спасибо.
Ян Воан
6
Спасибо. Я видел другие места, где было сказано, что это% USERPROFILE%. На моем компьютере HOMEDRIVE и HOMEPATH переназначены на сетевой диск. Поиски на моем локальном диске ничего не дали. Так что это очень помогло.
Майк М. Лин
2
Действительно полезно, у меня возникла та же проблема - если вы находитесь в домене с подключенным домашним диском, он попытается создать там git config. Это сделало бы хороший запрос о функции - используйте% HOMEDRIVE% или% USERPROFILE%
plasmid87
2
Почему это называется глобальным, когда оно только для одного пользователя? Не будет (для Unix) /etc/gitconfigбыть "глобальным" и ~/.gitconfigбудет только "локальным" ..... и я предполагаю, что .git/config"гипер-локальный" ----- По сути, я нахожу "глобальный" термин для этого сбивает с толку, и я Интересно, была ли веская причина для номенклатуры?
Питер Айтай
7
@PeterAjtai "глобальный", потому что это для всего вашего хранилища. В отличие от «локального» (только для одного репо) или «системного» (который предназначен для всего репо, для всех пользователей)
VonC
123

Я также искал глобальный .gitconfigна моей машине Windows и нашел этот хитрый трюк с помощью git.

Сделайте: git config --global -eи затем, если вам повезет, вы получите текстовый редактор, загруженный с вашим глобальным .gitconfigфайлом. Просто найдите папку оттуда (или попробуйте сохранить как ...) и так далее! :-)

БЕЗ УМА
источник
Как раз то, что я искал! команда -e! Потому что редактирование свойства за раз просто не моя суть.
Patareco
1
Выполнение этой команды также создаст, C:\Users\<user_name>\.gitconfigесли она отсутствует.
Пмбанка
Я бегу в неоконном режиме и не могу найти местоположение нигде
Triynko
73

На * nixes, это в ~/.gitconfig. Есть ли соответствующий файл в вашем доме?

В Windows вы можете ввести git bash

notepad ~/.gitconfig
Бен
источник
6
Это должно быть то же самое на окнах.
Феликс Клинг
2
Если вы хотите получить к ней легко, писать псевдоним :) Вот мой: alias gitconfig='open -a Sublime\ Text.app ~/.gitconfig'. Используйте любой текстовый редактор, который вы хотите.
августа
43

Пути для msysgit:

Windows XP -C:\Documents and Settings\<user_name>\.gitconfig

Windows Vista + C:\Users\<user_name>\.gitconfig

гашиш
источник
17
Вероятно, лучше описать это как% USERPROFILE%, тогда ответ будет работать для всех версий Windows, прошлых, настоящих и будущих.
Джармод
3
За исключением того, что я думаю, что на самом деле это% HOMEDRIVE %% HOMEPATH%, как и в других ответах, что во многих случаях равно% USERPROFILE%, но у некоторых из нас есть ИТ-конфигурации, указывающие вместо этого на подключенный диск.
ojchase
34

Глобальное местоположение определяется в Windows MsysGit с использованием переменных среды HOMEDRIVE и HOMEPATH, если только вы не определили переменную среды HOME. Это подробно описано в скрипте профиля.

В моей корпоративной среде HOMEDRIVE - это H :, который затем сопоставляется с сетевым URL \\ share \ $. Затем вся партия отображается как «Мои документы», чего не ожидают другие. Возможно, возникли некоторые дальнейшие проблемы с переназначением диска на URL. Я даже не могу настроить переменные HOMEDRIVE или HOMEPATH.

В моем случае я определил личную переменную среды HOME и указал ее на D: \ git \ GitHOME и скопировал все эти файлы GIT (которые не имеют расширения) в каталог GitHOME для безопасного хранения.

Переменные среды Windows можно установить на вкладке «Дополнительно» в диалоговом окне свойств «Мой компьютер».

Филип Окли
источник
1
Я прокрутка ответов о размещать на HOMEDRIVEи HOMEPATHпеременных, так как они просто поймали меня при использовании Бауэр. Похоже, что некоторые утилиты в Windows читают из <system>:\User\<username>\.gitconfig, while the Git tool itself saves to % HOMEPATH% \. Gitconfig . I had to go one step further and copy the updated config file from my H: `(наша сеть использует ту же букву диска для этого) в мою локальную папку пользователя, только тогда Git правильно использовал правила при вызове Bower.
1
@ZaLiTHkA, В моей корпоративной сети диск Home (H :) пользователя тоже перенаправлен обратно в папку C: \ User \, поэтому я этого не заметил. Если вы можете определить, какие утилиты FOSS допускают ошибку, это будет полезной информацией, помогающей разобраться с отчетами / исправлениями этих инструментов. Если они являются внутренними корпоративными инструментами, вы сами по себе ;-)
Philip Oakley
Если это не сложнее, чем простая строка установки, я не вижу HOME, определенный в скрипте etc \ profile. Кажется, все еще действует, как описано, но мне неясно, где сейчас находится HOME.
ojchase
@ojchase Моя часть ответа о том, где написано --glob config, относится конкретно к Windows. Ядро Linux git пишет в такие места, как куда направляет XDG (т.е. я знаю, что linux пишет в другие места и имеет другие соглашения, и, что важно, у него есть корневой каталог, в то время как у Windows есть «Диски» ;-)
Филипп Окли
@PhilipOakley Я тоже имел в виду Windows; извини мне было неясно. Объединяя ваш ответ и другие, я ожидал какой-то HOME = $HOMEDRIVE$HOMEPATH(или подобной) строки, C:\Program Files\Git\etc\profileи эта строка, кажется, не существует, но, вероятно, раньше? Я не смог точно определить, что задает $ HOME, если он не установлен переменной среды, что я предпочел бы не делать.
ojchase
12

Если вы используете TortoiseGit на ПК с Windows, вы можете использовать:

Settings / Git / Config / Edit global .gitconfig

открыть глобальный файл .gitignore.

Но если вы используете свой компьютер с Windows (7) в домене, каталог вашего профиля может быть сетевым ресурсом (смонтированным как диск). В этом случае TortoiseGit (по крайней мере: 1.6.5.0) указывает вам на неправильный каталог (на c: ...). См. Закрытый выпуск TortoiseGit 922 для получения дополнительной информации. Или используя% HOMEDRIVE %% HOMEPATH%, чтобы открыть каталог, содержащий файл .gitignore.

DanielaWaranie
источник
10

Я использую SmartGit с msysgit в Windows 8.1 и заметил, что для gitconfigфайла может быть три разных места :

%USERPROFILE%\.gitconfig
C:\Program Files (x86)\Git\etc\gitconfig
C:\Program Files (x86)\SmartGitHg\git\etc\gitconfig

Но тот, который используется, тот от %USERPROFILE%\.gitconfig.

Бенни Нойгебауэр
источник
6

Может быть полезно отметить (для * nix-платформ): некоторые типы глобальной конфигурации / информации о git хранятся /usr/share/git-core/, например, скрипты автозавершения git и следующие (по умолчанию) хуки:

  • applypatch-сообщ
  • после обновления
  • зафиксироваться
  • подготовить фиксации-сообщ
  • совершить-сообщ
  • предварительно applypatch
  • предварительно перебазироваться
  • Обновить

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

samstav
источник
2
Не полезно для вопроса ОП.
orbfish
5

У меня тоже была проблема с моим глобальным .gitconfig Это на тот случай, если у кого-то тоже есть такая

мерзавец сказал:

Неустранимо: при чтении файлов конфигурации произошла неизвестная ошибка

Теперь я это исправил. Проблема была второй .gitconfigв этой папке:

C: \ Users \ myUser.config \ мерзавец \ Config

Я не знаю, откуда она взялась ... Но теперь все снова работает как шарм.

грива
источник
5

Когда создается глобальный файл .gitconfig?

Во-первых, git не создает файл глобальной конфигурации (.gitconfig) автоматически во время установки. Файл не создается, пока не будет записан в первый раз. Если вы никогда не устанавливали системную переменную, она не будет в вашей файловой системе.Я предполагаю, что это может быть источником проблемы.

Один из способов попросить Git создать его - запросить редактирование. Это приведет к созданию файла.

git config --global --edit

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

Где хранится конфигурация git?

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

  • Конфигурация System Git: файл с именем gitconfig находится в -git-install-location- / ming <32> / etc
  • Global Git configuraiton: файл с именем .gitconfig, расположенный в домашней папке пользователя (C: \ Users \ git user)
  • Локальная конфигурация Git: файл с именем config в папке .git локального репозитория.

Конечно, видеть - значит верить, вот изображение, показывающее каждый файл и каждое место. Я вытащил изображение из статьи, которую я написал на эту тему.

Расположение файла конфигурации Windows Git (TheServerSide.com)

Расположение файлов конфигурации Git

Кэмерон МакКензи
источник
1
есть четвертое место, называемое переносной конфигурацией: здесь упоминаются 4 места; Git для Windows поддерживает четыре уровня конфигурации. На самом низком уровне находятся параметры конфигурации конкретной машины, известные как «переносимые», и они живут как «% ProgramData% \ Git \ config»
Бадр Элмерс,
1
Разум взорван! Я собираюсь обновить статью с новой информацией. Ура!
Кэмерон Маккензи,
4

Я использую Windows 7 и использую git для настройки, следуя инструкциям на GitHub (год или два назад). Я бы подумал, что это довольно распространенный вариант использования. Ни один из приведенных выше ответов не помог мне, и после большого разочарования я в конце концов нашел свой «настоящий» файл gitconfig в следующем каталоге;

C: \ Users \ Bill \ AppData \ Local \ GitHub \ PortableGit_054f2e797ebafd44a30203088cd 3d58663c627ef \ etc

Очевидно, замените ваше имя пользователя и предположительно суффикс после того, как PortableGit_ является уникальным GUID или подобным.

Билл Форстер
источник
1
Это только в случае использования GitHub для Windows.
Змея
3

Я думаю, что важно опубликовать эту цитату:

Git для Windows поддерживает четыре уровня конфигурации. На самом низком уровне находятся параметры конфигурации, относящиеся к конкретной машине, которые называются «портативными» и имеют значение «% ProgramData% \ Git \ config». Один приоритетный уровень - это настройки конфигурации, известные как «system», которые находятся по адресу «\ mingw64 \ etc \ gitconfig». Оба эти файла конфигурации, как правило, требуют повышенных привилегий для изменения.

Начиная с использования определенных значений, известных как «глобальная» конфигурация, которую можно найти в «% UserProfile% .gitconfig», мы находим «конфигурационные файлы, редактируемые пользователем». Настройки конфигурации с наивысшим приоритетом находятся в «локальной» конфигурации, которую обычно можно найти в «.git \ config».

Он видит рекомендацию в связанном блоге - изменить параметры конфигурации, специфичные для «системы» или «установки», и это хорошо, но пользователи должны ожидать, что другие установки Git не будут поглощать указанные параметры. Если вы хотите настройки для всей машины, используйте «портативный» файл конфигурации, в противном случае выберите «глобальные» или «локальные» файлы конфигурации.

Надеюсь, люди найдут эту информацию полезной.

источник

Бадр Элмерс
источник
3

Как отметил @MatrixFrog в своем комментарии , если целью является редактирование конфигурации, вы можете запустить:

git config --global --edit

Эта команда откроет файл конфигурации (в данном случае --globalтот) в выбранном редакторе и будет ждать закрытия файла (как во время git rebase -i).

Дмитрий Паржицкий
источник
Вы можете использовать это, чтобы выяснить, где находится глобал .gitconfig- пока ваш редактор скажет вам, в каком каталоге находится файл. Вы также можете использовать другие ключи ( --system, --localи т. Д.) Для поиска и редактирования других .gitconfigместоположений. PS так -eже, как--edit
LightCC
1

Удалите Msysgit и установите Cygwin + Git. Тогда глобальный .gitconfig будет здесь: C: \ cygwin (64) \ home \ [userName] \. Gitconfig.

Теперь вам не нужно беспокоиться о переменной окружения, которая может использоваться другими программами. Например, моя переменная среды указала мне на подключенный диск в моей рабочей среде домена Windows. Я не хочу, чтобы мой глобальный .gitconfig сидел на моем «домашнем» подключенном диске. Я также не знаю, что может случиться с другими приложениями, которые могут полагаться на эту переменную среды Windows. Операционному подразделению может потребоваться установить эту переменную среды для сопоставленного диска по причине.

Также вам не нужно беспокоиться о том, что Mysysgit перезапишет настройки конфигурации вашего «профиля», если вы укажете конкретный путь к глобальному «.gitconfig», используя этот метод.

В общем, спасайтесь и используйте оболочку cygwin bash в windows и будьте счастливее

meffect
источник
1

У меня была похожая проблема; проблема заключалась в том, что .gitconfigфайл был расположен в

C:\Users\MyLogin\.gitconfig\

(в Windows 7)

Другими словами, файл находился в C:\Users\MyLogin\.gitconfig\.gitconfig, а не в C:\Users\MyLogin\.gitconfig(где Git искал файлы).

rolandog
источник
1

.gitconfig расположение файла

тестирование macOS в порядке

Глобальный

# global config
$ cd ~/.gitconfig

# view global config
$ git config --global -l

местный

# local config
$ cd .git/config

# view local config
$ git config -l

может быть, бонус для вас: Vimили VSCodeза редактирование git config


# open config with Vim

# global config
$ vim ~/.gitconfig

# local config
$ vim .git/config


# open config with VSCode

# global config
$ code ~/.gitconfig

# local config
$ code .git/config
xgqfrms
источник
0

Я установил свой Git в: C:\Users\_myuserfolder_\AppData\Local\Programs\Git

KikeSP
источник