I work on a single device and use it for both my office work and side/pet/personal projects. Default git credentials for the device is obviously the one provided by my office. Now, this scenario has happened to me a lot of times -
- My office work is done
- I am super excited about a personal project idea
- So I set up a remote git repository
- Set up the project boilerplate locally
- Fire
git init
,git remote add
,git add
,git commit
& PUSH!!!
And it is then when I realize I have pushed code to my personal git with wrong (office) credentials. And I start all over again.
Do let me know if you have ever faced a similar situation like mine in comments!
So, now what is the solution? How do I have separate git config on a single machine? The answer is pretty simple. You need to have two separate Git config files. But, how ? Read on...
*** Before starting make sure you have git version 2.13 or higher installed in your system. ***
$ git --version
git version 2.14.2
Now with the prerequisites set, let's begin -
- Your
.gitconfig
resides in your home directory. For Windows users, it will be in the pathC:\Users\[YOUR_NAME]
. Go to that directory. - Create two separate folders like My_Office_Workspace & My_Personal_Workspace.
- Create two separate
.gitconfig
files, one for office and another for personal usage in the pathC:\Users\[YOUR_NAME]
. Let's name them.gitconfig-office
&.gitconfig-personal
.
The contents of .gitconfig-office
-
# This is Git's per-user configuration file.
[user]
name = YOUR_OFFICE_GIT_USERNAME
email = your.name@company.com
The contents of .gitconfig-personal
-
# This is Git's per-user configuration file.
[user]
name = YOUR_PERSONAL_GIT_USERNAME
email = your.name@gmail.com
- After that's done, open up the
.gitconfig
file, and make the necessary changes. It should look like -
[includeIf "gitdir:~/My_Office_Workspace/"]
path = .gitconfig-office
[includeIf "gitdir:~/My_Personal_Workspace/"]
path = .gitconfig-personal
Configuration done! Now let's verify.
- Goto My_Office_Workspace and clone a project from your office GitHub, BitBucket or GitLab. Let's call the project My_Office_Project and do the following -
$ cd My_Office_Workspace/
$ git clone https://github.my_office.com/VeryImportant/My_Office_Project.git
$ cd My_Office_Project/
$ git config user.name
YOUR_OFFICE_GIT_USERNAME
- You can also do the same for your personal projects under My_Perosonal_Workspace, but you will see you the output for the last command
git config user.name
is YOUR_PERSONAL_GIT_USERNAME.
Woohoo, it's done! No more messing up. 😃
Update
If your projects are in a different drive on Windows, for eg. D or F, then you can configure the .gitconfig
like this
[includeIf "gitdir:D:/My_Office_Workspace/"]
path = .gitconfig-office
[includeIf "gitdir:F:/My_Personal_Workspace/"]
path = .gitconfig-personal
Liked this post? Share it ↩️ or maybe give a heart 🧡.
I am Soham Mondal, a developer from India. You can follow me on LinkedIn, Instagram, or GitHub. You can learn more about me on my website. I am currently open to new projects & job offers.
Oldest comments (8)
This is such a relatable problem Soham. Nice article and congrats on your first post.
Thank you! :)
Very helpful. Thanks for it.
Thanks Asif!
I tried this it's not working for me it's always showing one user details only.
can you help me?
Hey, sorry for the delayed response. I will try to help you.
What OS are you on and also please share your git version and .gitconfig file contents.
This is perfect!
Just incase anyone who want to
git clone
a private repo on your secondary account and it showsfatal: repo not found
Clone with the following:
git clone username@github.com/repoName
Now it will prompt you for password
Thank you for pointing that out! :)