Можно ли включить файл в ваш .gitconfig

Я хотел бы включить в мой файл .gitconfig файл с настройками github - возможно ли это?

Могу ли я сделать что-то вроде этого:

[core]
    include = /path/to/file
12.10.2009 22:01:51
«Я не хочу включать в него детали github, поэтому я хотел бы как-то включить их из внешнего файла»: именно для этого и нужен глобальный конфигурационный файл. Есть ли причина не использовать его в вашем случае?
VonC 13.10.2009 10:35:28
Да, потому что я хочу опубликовать .gitconfig в репозитории git и не хочу, чтобы кто-то украл мои учетные данные на github.
David Reynolds 13.10.2009 11:14:48
Я не следую за вами: ваш обычный файл gitconfig будет опубликован на github, но без каких-либо настроек github. Почему? Потому что они будут в вашем глобальном конфигурационном файле ( ~/.gitconfig), то есть не будут отправлены в репозиторий github. Когда вы набираете ' git config', вы видите соединение трех конфигурационных файлов (repo, global и system). Только файл конфигурации репо толкают. 2 других остаются местными.
VonC 13.10.2009 11:23:53
похоже, все упустили смысл этого вопроса. Очевидно, Дэвид хочет создать репо всех своих точечных файлов (bashrc, gemrc и т. Д.), ВКЛЮЧАЯ свой .gitconfig, чтобы он мог иметь все свои настройки на всех своих машинах. Способ добавить части файла .gitconfig путем включения и игнорирования личных записей - это то, что он (и я, если на то пошло) следует за
Bo Jeanes 25.11.2009 09:14:43
@bjeanes: точно! Я все еще не нашел способ сделать это все же.
David Reynolds 25.11.2009 20:15:55
4 ОТВЕТА
РЕШЕНИЕ

Git (1.7.10+) теперь поддерживает этот синтаксис в .gitconfig:

[include]
    path = /path/to/file

Смотрите здесь для подробного описания изменения git и его крайних случаев.

Кстати, пара тонкостей стоит отметить:

  1. Расширение переменной среды, например $HOME, не поддерживается. (Расширение ~появилось в Git 1.7.10.2.)

  2. Если указан относительный путь, то он относится к файлу .gitconfig, в котором есть [include]инструкция. Это работает правильно даже для цепочек включений - например, ~/.gitconfigможет иметь:

    [include]
        path = subdir/gitconfig
    

    и subdir/gitconfigможет иметь:

    [include]
        path = nested_subdir/gitconfig
    

    ... что приведет subdir/nested_subdir/gitconfigк загрузке.

  3. Если git не может найти целевой файл, он молча игнорирует ошибку. Похоже, что это по замыслу.

297
22.08.2012 22:49:51
на самом деле вам не нужно ~. это потому, что ваш .gitconfig-файл все еще должен находиться в ~/.gitconfigотносительном пути в конфигурации, что подразумевает ~...
robustus 18.07.2012 15:58:34
Расширение ~/ на $HOMEсамом деле относится к git describe --contains 4c0a89fc-> v1.7.10.2~12^2(т.е. v1.7.10.2или позже), примечательно, так как кажется, что Debian 7 и Ubuntu Quantal выпустят с v1.7.10.4.
FauxFaux 22.08.2012 11:06:34
Это поддерживает globs? например, путь = ~ / gitconfig.d / *?
Bret 20.12.2015 20:56:16
@ Нет, это не поддерживает глобусы.
Mike Morearty 21.12.2015 03:13:30
Обратите внимание , что конфигурации включен этот путь не будет отображаться , когда конкретный файл дан (то есть, с --global, --localили --file), если не сказано явно с --includes(например git config --global --includes --list).
Franklin Yu 12.05.2017 03:18:41

Обновление 2012:

См Mike Morearty «сек ответ :

Включает в себя

Вы можете включить один файл конфигурации из другого, установив в специальной include.pathпеременной имя файла, который нужно включить.
Включаемый файл раскрывается немедленно, как если бы его содержимое было найдено в месте расположения директивы include.
Если значение include.pathпеременной является относительным путем, путь считается относительным к файлу конфигурации, в котором была найдена директива include.
Значение include.pathподлежит расширению тильды: ~/расширяется до значения $HOMEи ~user/до домашнего каталога указанного пользователя.


Я так не думаю.

Я бы предпочел поместить эту настройку в ~/.gitconfigфайл

Пользовательский файл конфигурации. Также называется «глобальным» файлом конфигурации.

Таким образом, он завершает файл, специфичный для проекта .gitconfig, без публикации при отправке в GitHub. Смотрите также этот ответ SO для получения дополнительной информации о глобальном конфигурационном файле.
Git имеет 3 конфигурационных файла .


Bjeanes добавляет в комментариях:

похоже, все упустили смысл этого вопроса.
Дэвид , очевидно , хочет , чтобы подтолкнуть вверх репо всех его точечных файлов ( bashrc, gemrcи т.д.) , включая его .gitconfigтак , что он может иметь все его настройки на всех своих машинах.
Способ выдвинуть части .gitconfigфайла путем включения и игнорирования личных записей - это то, за чем он (и я, если на то пошло) следует.

Возможный способ - использовать драйвер фильтра smudge / clean для дешифрования / шифрования одного файла с конфиденциальной конфиденциальной информацией (см. Эту ветку ), чтобы дополнить локальный файл, такой как ~ / .gitconfig, расшифрованными частями, которые имеют отношение к этому. файл.

Таким образом, у вас может быть Git-репо со всеми вашими точечными файлами, плюс один файл с зашифрованной информацией, предназначенный для дешифрования и добавления к указанным точечным файлам.

альтернативный текст

В .gitattributes(или .git/info/a..) использовании:

myPrivateInfosFile filter=gpg diff=gpg

В вашем репо-файле .config:

[filter "gpg"]
smudge = gpg -d -q --batch --no-tty
clean = gpg -ea -q --batch --no-tty -r C920A124
[diff "gpg"]
textconv = decrypt

( Решение на основе GPG означает, что вы, конечно, передали свои закрытые / открытые ключи другим способом на конечный компьютер, где вы хотите восстановить все свои точечные файлы путем клонирования этого специального репозитория)

На самом деле, в вашем случае сценарий smudge необходимо завершить так, как он должен, после расшифровки этого файла, продолжить и добавить соответствующие части в ваш глобальный ~/.gitconfigфайл (если вы не перезаписываете файл глобальной конфигурации другим местоположением ) или другие точечные файлы для этого дело.

https://kerneltrap.org/mailarchive/git/2008/3/13/1153274/thread (неудобства gpg обсуждаются далее в этой теме ) (это отличается от использования полного зашифрованного репозитория Git, как описано здесь )

16
23.05.2017 12:26:32
Я хочу опубликовать свой основной файл .gitconfig в репозитории git, но я не хочу включать в него детали github, поэтому я хотел бы как-то включить их из внешнего файла.
David Reynolds 13.10.2009 08:17:32

Я полагаю, что вы можете сделать это с помощью инструмента концентратора defunkt . Это оболочка для команды git, которая, помимо прочего, позволяет иметь GITHUB_USERи GITHUB_TOKENпеременные окружения. Который переопределит настройки в локальном .gitconfigфайле.

Затем, чтобы сделать его понятным, пользователь, на которого вы указали псевдоним alias git=hubв его конфигурации ZSH . После этого вы сможете найти локальный файл, в котором вы устанавливаете переменные среды, и перенести свой репозиторий в публичный мир со всей вашей личной информацией в такте.

** ПРИМЕЧАНИЕ для доморощенных пользователей на OSX, вы можете установить инструмент через brew install hub.

2
6.09.2011 20:56:08

Вы можете загрузить его из командной строки:

$ git config --local include.path "/path/to/.gitconfig"

Используйте "$PWD"/.gitconfigвместо этого, если вы хотите загрузить файл из текущего каталога.

После выполнения вышеуказанной команды в ваш .git/configфайл добавляются следующие строки :

[include]
        path = /path/to/.gitconfig
9
18.08.2017 00:19:43