gguser – A Simple CLI to Manage Multiple Git Profiles
As devs, we juggle work, personal, & open-source projects—all on one laptop. Accidentally committing with the wrong identity is a nightmare.
That’s why I built gguser – a simple CLI to manage Git profiles effortlessly!
- Quick profile switching
- Auto-switch per project
- Check active Git user
- SSH key support
Try it now: npm install -g gguser
GitHub: https://github.com/withshubh/gguser
What’s the advantage of this over https://utf9k.net/blog/conditional-gitconfig/ ?
I use this technique to use my personal identity by default, and my work identity with repos that are checked out under ~/$WORK
I even have git aliases that behave differently depending on which identity I'm using.
Good point! Using Git’s conditional includes is a solid approach if your repos follow a strict directory structure. But gguser is designed to be more flexible and user-friendly, especially for developers who:
- Work on multiple Git accounts across scattered directories
- Want a simple CLI-based profile switcher
- Prefer explicit control over which profile is used
- Don’t want to manually edit .gitconfig
- Need SSH key support per profile
With gguser, you can quickly switch profiles interactively, auto-switch based on any directory, and override profiles on the fly—without relying on folder-based rules.
If the .gitconfig method works for you, that’s great! :) But for devs who don’t want to tweak configs or need a more dynamic approach, gguser makes managing multiple Git identities effortless.
I have per profile ssh keys, by setting core.sshCommand differently per profile, and passing a different ssh config file in each profile.
Honestly, overriding profiles per repo sounds like a disaster waiting to happen for me. I'm pretty sure I'd check out a repo and forget to set the right identity for it at some point. But if it works better for you, it works better for you.
I'm curious: if you're not grouping repos in your filesystem according to which context they're from — which for me dictates which identity I want to use — how are you choosing which directories to store repos in? Or does the context not dictate which identity you want to use?