Можно ли включить файл в ваш .gitconfig - PullRequest
221 голосов
/ 13 октября 2009

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

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

[core]
    include = /path/to/file

Ответы [ 4 ]

273 голосов
/ 16 марта 2012

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 не может найти целевой файл, он молча игнорирует ошибку. Похоже, что это было задумано.

14 голосов
/ 13 октября 2009

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

См. Майк Морарти ответ :

Включает

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


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

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

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

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


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

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

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

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

alt text

В .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, как обсуждено здесь )

7 голосов
/ 10 октября 2015

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

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

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

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

[include]
        path = /path/to/.gitconfig
2 голосов
/ 07 сентября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...