Как я могу указать собственный глобальный путь к gitconfig?

Я немного связан с Git, Я пытаюсь казнить git commit но я должен быть в состоянии между ~/.gitconfig1 а также ~/.gitconfig2 Есть ли переключатель командной строки - или в любом случае иметь Git используйте другой файл gitconfig, отличный от найденных в /etc/gitconfig, ~/.gitconfig а также .git/config?

6 ответов

Решение

Я нашел способ выполнить это - это не было элегантно, но это работало - и до сих пор, кажется, единственный способ заставить это работать.

Git использует HOME путь, чтобы определить, где .gitconfig является. Я смог выполнить что-то вроде этого:

/home/marco/.silly/.gitconfig
/home/marco/.stupid/.gitconfig
/home/marco/.gitconfig

И при выполнении Git Commit (это единственная команда, которая требует .gitconfigЯ преодолел домашний путь.

HOME=/home/marco/.silly/ git commit -m "silly configuration"

Затем вы можете использовать псевдоним, чтобы сделать это легко

alias sillygit="HOME=/home/marco/.silly/ git"
sillygit commit -m "silly stuff"

Подход псевдонима Марио Чеппи можно использовать несколько более элегантно, используя -c config=value аргумент git:

$ alias sillygit="git -c user.name=Silly -c user.email=silly@silly.org"
$ sillygit commit

Это, конечно, предполагает, что вы не против сохранить различные конфигурационные ключи в вашем .bashrc или тому подобное, а не в вашем .gitconfigи у него есть предостережение о разрушении оболочки.

Комментарий @amirouche и ответ Эмиля Лундберга можно объединить, чтобы фактически загрузить другой файл конфигурации Git:

      alias git="git -c 'include.path=/some/path/to/my/custom/.gitconfig'"

Тем не менее, пользователь~/.gitconfigфайл все еще загружается. Этот подход перезаписывает только настройки из других файлов конфигурации git.

man git-config говорит мне, чтобы использовать -f флаг для передачи файла конфигурации. Однако, похоже, он не работает с другими командами, кроме git config, так что я думаю, что вы должны вызывать его перед фиксацией, легко с псевдонимом.

Если вам нужно использовать только один.gitconfigфайл в каждом рабочем пространстве, вместо переключения между конфигурациями во время работы в одном рабочем пространстве, а затемincludeIfможет быть достаточно, так как его можно использовать для загрузки пользовательских конфигураций в зависимости от элементов пути рабочей области или удаленных URL-адресов: https://git-scm.com/docs/git-config#_conditional_includes

Вы можете использовать --git-dir

git --git-dir /home/marco/silly/.git commit ...
Другие вопросы по тегам