I see git
allows me to choose any file I want as a global exclude file but it can't see that you can change the default global configuration file ?
Did I miss it or is it impossible? Are there workarounds ?
Git has 2 kinds of global configuration files. One is ~/.gitconfig
and the other is $XDG_CONFIG_HOME/git/config
.
When ~/.gitconfig
does not exist, $XDG_CONFIG_HOME/git/config
works as the global configuration file.
We can create multiple git/config
under different paths, for example /e/git/config
and /f/git/config
.
mkdir -p /e/git
touch /e/git/config
mkdir -p /f/git
touch /f/git/config
When we want to use one of them as the global configuration file, first we rename ~/.gitconfig
.
mv ~/.gitconfig ~/.gitconfig.bak
And then assign a path to XDG_CONFIG_HOME
with either export XDG_CONFIG_HOME=
or XDG_CONFIG_HOME=
,
# use /e/git/config
export XDG_CONFIG_HOME=/e
git config --global user.name foo
git config --global user.email foo@xyz.com
# use /f/git/config
XDG_CONFIG_HOME=/f git config --global user.name bar
XDG_CONFIG_HOME=/f git config --global user.email bar@xyz.com
To use different names and emails,
git init test
cd test
touch a.txt
git add a.txt
# use foo and foo@xyz.com
export XDG_CONFIG_HOME=/e
git commit -m'hello foo'
# disable XDG_CONFIG_HOME
unset XDG_CONFIG_HOME
touch b.txt
git add b.txt
# use bar and bar@xyz.com
XDG_CONFIG_HOME=/f git commit -m"hello bar"
When we want to use ~/.gitconfig
again,
mv ~/.gitconfig.bak ~/.gitconfig