Separating git config for several git servers
How to configure you .gitconfig to use different accounts for several git servers.
Some time ago I did edit some docs on some GitHub project. I realized afterward that I had pushed my work email to a GitHub repo which I actually do not want.
So I have looked up how I can separate my work on GitHub and the work on the internal Gitlab server which is only for work.
Before the new setup, I was keeping all my git
repositories in one git folder ~/git
. But now I found a pretty flexible and neat solution for myself.
Folder structure per git server
First, you have to separate the folders for your different git servers like GitHub, internal Gitlab, public Gitlab, whatever you use.
I am using a folder each, one for GitHub and one for our internal Gitlab server, and put the respective projects in there:
├── github
└── gitlab-work
main gitconfig
Your regular .gitconfig
will just reference the gitconfig
for each older you have set up and will use the respective config when working in that directory. That is what the includeif
statement is for:
You can also specify some sane defaults in the general .gitconfig
. I just added the default branch name to be main
for both directories.
Secondary gitconfig
Now you need to create a separate .gitconfig
for GitHub and Gitlab. Here is my .gitconfig-gitlab-work
:
And here we have the .gitconfig-github
:
As you can see I could have moved the [core]
and [push]
part from both of those gitconfigs
to my global one.
That just happened because git
asked me while I was working in the terminal. git was smart enough to add the config only to the respective project I was working on. So I did this twice, once for GitHub and once for internal GitLab.
Obviously you can do this for as many git servers as you like. I bet there is also another hidden gem but that works just fine for now. Hope this helps.
Have a great day!⌨