Как я могу указать собственный глобальный путь к 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 ...