DEV Community

Soham Mondal
Soham Mondal

Posted on • Edited on

How to setup 2 separate Git profiles on a single device?

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!!!

facepalm

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
Enter fullscreen mode Exit fullscreen mode

Now with the prerequisites set, let's begin -

  • Your .gitconfig resides in your home directory. For Windows users, it will be in the path C:\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 path C:\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
Enter fullscreen mode Exit fullscreen mode

The contents of .gitconfig-personal -

# This is Git's per-user configuration file.
[user]
name = YOUR_PERSONAL_GIT_USERNAME
email = your.name@gmail.com
Enter fullscreen mode Exit fullscreen mode
  • 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
  • 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.

success

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
Enter fullscreen mode Exit fullscreen mode

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.

Top comments (8)

Collapse
 
yutaoyan profile image
yutaoyan

This is perfect!
Just incase anyone who want to git clone a private repo on your secondary account and it shows fatal: repo not found
Clone with the following:
git clone username@github.com/repoName
Now it will prompt you for password

Collapse
 
sohammondal profile image
Soham Mondal

Thank you for pointing that out! :)

Collapse
 
siwalikm profile image
Siwalik Mukherjee

This is such a relatable problem Soham. Nice article and congrats on your first post.

Collapse
 
sohammondal profile image
Soham Mondal

Thank you! :)

Collapse
 
techdevasif profile image
Asif Kamran Malick

Very helpful. Thanks for it.

Collapse
 
sohammondal profile image
Soham Mondal

Thanks Asif!

Collapse
 
abhayaagrawal1 profile image
Abhaya Agrawal • Edited

I tried this it's not working for me it's always showing one user details only.
can you help me?

Collapse
 
sohammondal profile image
Soham Mondal • Edited

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.