How can I specify custom global gitconfig path?
I'm in a bit of a bind with 开发者_开发问答Git
. I'm trying to execute git commit
but I need to be able to swtich between ~/.gitconfig1
and ~/.gitconfig2
Is there a command line switch - or anyway to have Git
use a different gitconfig file then the ones found at /etc/gitconfig
, ~/.gitconfig
and .git/config
?
I found a way to execute this - it wasn't elegant but it did work - and so far seems to be the only way to get this to work.
Git uses the HOME
path to determine where .gitconfig
is. I was able to perform something like this:
/home/marco/.silly/.gitconfig
/home/marco/.stupid/.gitconfig
/home/marco/.gitconfig
And when executing Git Commit (which is the only command that requires the .gitconfig
) I override the home path.
HOME=/home/marco/.silly/ git commit -m "silly configuration"
You can then use alias to do this easily
alias sillygit="HOME=/home/marco/.silly/ git"
sillygit commit -m "silly stuff"
Mario Ceppi's alias approach can be used in a slightly more elegant way using the -c config=value
argument to git
:
$ alias sillygit="git -c user.name=Silly -c user.email=silly@silly.org"
$ sillygit commit
This of course assumes you don't mind keeping the differing config keys in your .bashrc
or the like instead of in your .gitconfig
, and it has the caveat of breaking shell completion.
@amirouche's comment and Emil Lundberg's answer can be combined to actually load another Git config file:
alias git="git -c 'include.path=/some/path/to/my/custom/.gitconfig'"
However, the user's ~/.gitconfig
file is still loaded. This approach only overwrites settings from the other git config files.
You can use --git-dir
git --git-dir /home/marco/silly/.git commit ...
精彩评论