Я хотел бы включить файл в мой .gitconfig, который имеет мои настройки github - возможно ли это?
Могу ли я сделать что-то вроде этого:
[core]
include = /path/to/file
Я хотел бы включить файл в мой .gitconfig, который имеет мои настройки github - возможно ли это?
Могу ли я сделать что-то вроде этого:
[core]
include = /path/to/file
Git (1.7.10+) теперь поддерживает этот синтаксис в .gitconfig
:
[include]
path = /path/to/file
См. здесь для подробного описания изменений git и его крайних случаев.
Кстати, несколько тонкостей, которые стоит указать:
Расширение переменных среды, например. $HOME
, не поддерживается. (Расширение ~
появилось в git 1.7.10.2.)
Если указан относительный путь, то он относится к файлу .gitconfig, который имеет оператор [include]
. Это работает корректно, даже через цепочку включает в себя - например, ~/.gitconfig
может иметь:
[include]
path = subdir/gitconfig
и subdir/gitconfig
могут иметь:
[include]
path = nested_subdir/gitconfig
..., который приведет к загрузке subdir/nested_subdir/gitconfig
.
Если git не может найти целевой файл, он молча игнорирует ошибку. Это, по-видимому, по дизайну.
Обновление 2012:
Смотрите Mike Morearty answer:
Вы можете включить один файл конфигурации из другого, установив специальную переменную
include.path
в имя файла, который будет включен.
Включенный файл разворачивается немедленно, как если бы его содержимое было найдено по адресу директивы include.
Если значение переменнойinclude.path
является относительным путем, путь считается относительным к файлу конфигурации, в котором была указана директива include.
Значениеinclude.path
подлежит расширению тильды:~/
расширяется до значения$HOME
и~user/
в указанный домашний каталог пользователя.
Я так не думаю.
Я предпочел бы разместить эту настройку в ~/.gitconfig
файле
Пользовательский файл конфигурации. Также называется "глобальным" конфигурационным файлом.
Таким образом, он завершает файл проекта .gitconfig, не публикуемый при нажатии на GitHub. См. Также этот SO ответ для получения дополнительной информации о глобальном файле конфигурации.
Git имеет 3 файла конфигурации.
bjeanes добавляет в комментарии:
похоже, что все пропустили суть этого вопроса.
Дэвид явно хочет оттолкнуть репо всех своих файлов точек (bashrc
,gemrc
и т.д.), ВКЛЮЧАЯ его.gitconfig
, чтобы он мог иметь все свои настройки на всех своих машинах. Способ нажатия частей файла.gitconfig
путем включения и игнорирования частных записей - это то, что он (и я, если на то пошло) после.
Возможным способом было бы использовать smudge/clean filter driver для дешифрования/шифрования одного файла с конфиденциальной информацией (см. этот поток), чтобы завершить локальный файл, например ~/.gitconfig, с дешифрованными частями, имеющими отношение к этому файлу.
Таким образом, вы можете иметь репозиторий Git со всеми вашими точечными файлами, а также один файл с зашифрованной информацией, предназначенный для дешифрования и добавления в указанные файлы точек.
В .gitattributes
(или .git/info/a..
) используйте:
myPrivateInfosFile filter=gpg diff=gpg
В вашем файле repo.config:
[filter "gpg"]
smudge = gpg -d -q --batch --no-tty
clean = gpg -ea -q --batch --no-tty -r C920A124
[diff "gpg"]
textconv = decrypt
(a решение на основе GPG означает, что, конечно, вы передали свои частные/открытые ключи другим средним значением на конечный компьютер, где вы хотите восстановить все ваши файлы точек, клонировав это специальное репо)
На самом деле, в вашем случае, smudge script должен быть завершен, как он должен, после дешифрования этого файла, продолжить и добавить соответствующие части в ваш глобальный файл ~/.gitconfig
(если вы переписываете глобальный файл конфигурации в другое место) или другие файлы точек, если это важно.
https://kerneltrap.org/mailarchive/git/2008/3/13/1153274/thread (неудобства gpg обсуждаются далее в этот поток) (это отличается от полного завершенного репо Git, поскольку обсуждается здесь)
Вы можете загрузить его из командной строки:
$ git config --local include.path "/path/to/.gitconfig"
Используйте "$PWD"/.gitconfig
вместо этого, если вы хотите загрузить файл из текущего каталога.
После запуска над командой в ваш .git/config
файл добавляются следующие строки:
[include]
path = /path/to/.gitconfig
Я считаю, что вы можете это сделать, используя defunkt hub tool. Это оболочка для команды git, которая, среди прочего, позволяет иметь переменные среды GITHUB_USER
и GITHUB_TOKEN
. Это переопределит настройки в локальном .gitconfig
файле.
Затем, чтобы сделать его простым пользователем, вы указали на aliased alias git=hub
в его ZSH config. Затем вы сможете получить локальный файл, в котором вы устанавливаете переменные среды, и выталкиваете свой репозиторий в общедоступный мир со всей вашей личной информацией в такт.
** ПРИМЕЧАНИЕ для пользователей доморощенного OSX, вы можете установить инструмент через brew install hub
.