GitAcc
VS Code extension for managing multiple Git identities. Register accounts, pick one before each commit, and review or edit commit history from Source Control.
Why GitAcc?
If you work with personal and professional Git accounts in the same editor, GitAcc keeps identities organized and asks which account to use before the native Git commit flow continues (stage-all prompt, commit message, etc.).
Features
| Area |
What it does |
| Accounts |
Add, remove, and switch identities (user.name + user.email) |
| Commit guard |
Quick pick Account for this commit before Git dialogs |
| Footer |
Active account in the status bar with configurable icon and color |
| SCM toolbar |
Account icon in Source Control — click to switch account |
| Commit input |
Active account shown while typing the commit message |
| GitAcc view |
Commit history with changed files, diffs, and edit actions |
| Workspace JSON |
Optional .gitacc.json at project root (user / workspace / merge) |
| Reset data |
Restore defaults, clear global file, remove workspace JSON |
| Scope |
Apply identity locally (repo) or globally |
| Migration |
Imports legacy .vscode-git-profiles.json on first run |
Installation
- Open Extensions (
Ctrl+Shift+X / Cmd+Shift+X)
- Install GitAcc (or load this folder with Run Extension / F5)
- Open GitAcc in the activity bar to add accounts
Quick start
1. Add accounts
- Open GitAcc → Accounts
- Click Add account
- Set a short label (e.g.
Work, Personal), full name, and email
Manage options under GitAcc → Settings in the sidebar.
2. Switch account
- Click an account in the sidebar
- Click the footer (status bar) item
- Click the account icon in the SCM toolbar
- Use GitAcc: Switch Account from the Command Palette
The active account is applied to git config (user.name / user.email) according to Apply scope.
3. Commit with account selection
With gitacc.promptOnCommit enabled (default):
- Click Commit in Source Control (or
Cmd/Ctrl+Enter in the commit input)
- If you have more than one account, choose Account for this commit
- Continue with the normal Git flow
With a single account, GitAcc uses it automatically. With promptOnCommit off, the active account is applied without showing the picker.
{
"gitacc.promptOnCommit": false
}
4. GitAcc commit view
In Source Control, expand the GitAcc section:
- Commit list refreshes after commits, push, pull, and other repo changes
- Expand a commit → changed files
- Click a file → side-by-side diff
- Right-click a commit:
- Change Author · Edit Message · Edit Date
- Undo Commit · Remove from Git
- Copy Hash · Copy Message
- Multi-select commits (
Cmd/Ctrl + click) → Bulk Change Author
When enabled, shows: [icon] GitAcc Label (e.g. GitAcc TSE).
Click to switch account. Active state uses a configurable theme color and prominent background.
Expand GitAcc → Settings:
| Item |
Description |
| Accounts source |
user · workspace · merge |
| Create workspace JSON |
Create or open .gitacc.json (shows ✓ when the file exists) |
| Remove workspace JSON |
Delete .gitacc.json and remove its entry from .gitignore |
| Prompt on commit |
On / Off |
| Footer |
Show active account in status bar |
| Account icon |
Codicon for indicators (footer, SCM, sidebar, picker) |
| Active color |
Theme color for the active account |
| SCM toolbar |
Show account icon in Source Control toolbar |
| Commit input |
Show active account above commit message |
| Apply scope |
Local (repo) or Global |
| Reset data |
Restore settings, clear global accounts, or reset everything |
Settings (VS Code)
All options are also in Settings → GitAcc.
| Setting |
Default |
Description |
gitacc.accountsSource |
user |
user · workspace · merge |
gitacc.promptOnCommit |
true |
Ask for account before each commit |
gitacc.applyScope |
local |
local = current repo; global = system-wide |
gitacc.showInStatusBar |
true |
Show active account in the footer |
gitacc.statusBarIcon |
git-commit |
Account icon (footer, SCM, commit input, sidebar, picker) |
gitacc.statusBarActiveColor |
statusBarItem.prominentForeground |
Active account color |
gitacc.showInScmToolbar |
true |
Account icon in SCM toolbar |
gitacc.showInCommitInput |
true |
Active account in commit input |
gitacc.graph.maxCommits |
100 |
Max commits in GitAcc view |
gitacc.debug |
true |
Log to Output → GitAcc Debug |
Example configuration
{
"gitacc.accountsSource": "workspace",
"gitacc.promptOnCommit": true,
"gitacc.showInStatusBar": true,
"gitacc.statusBarIcon": "person",
"gitacc.statusBarActiveColor": "charts.green",
"gitacc.applyScope": "local"
}
Data storage
User file (default)
~/.gitacc/accounts.json
Workspace file (project root)
.gitacc.json
Create or open from GitAcc → Settings → Create workspace JSON.
When created, GitAcc adds .gitacc.json to .gitignore automatically. Remove workspace JSON deletes the file and removes that line from .gitignore (and deletes .gitignore if it becomes empty).
Both files use the same format:
{
"activeAccountId": "uuid",
"accounts": [
{
"id": "uuid",
"label": "Work",
"name": "Your Name",
"email": "you@company.com"
}
]
}
Accounts source (gitacc.accountsSource)
| Value |
Load from |
Save to |
user |
User file only |
User file |
workspace |
Workspace JSON only (falls back to user file if missing) |
Workspace JSON |
merge |
Both combined |
User file |
Merge rule: if the user file has more accounts than the workspace file, the workspace file is ignored and only user accounts are used. Otherwise accounts are merged by email (user entries win on duplicates).
Use workspace when the project defines its own accounts in .gitacc.json. Use merge to combine team templates with personal accounts in ~/.gitacc/accounts.json.
Reset data
GitAcc → Settings → Reset data (or GitAcc: Reset GitAcc Data):
| Option |
Action |
| Reset settings to defaults |
Restore all gitacc.* settings |
| Clear global accounts |
Delete ~/.gitacc/accounts.json |
| Clear workspace JSON |
Delete .gitacc.json and remove .gitignore entry |
| Reset everything |
All of the above |
Each destructive action asks for confirmation.
Commands
| Command |
Description |
GitAcc: Switch Account |
Pick and apply active account |
GitAcc: Add Account |
Register a new identity |
GitAcc: Create Workspace JSON |
Create or open .gitacc.json |
GitAcc: Remove Workspace JSON |
Delete .gitacc.json and clean .gitignore |
GitAcc: Reset GitAcc Data |
Reset settings and/or account files |
GitAcc: Commit with Account |
Commit with account prompt (internal / keybinding) |
GitAcc: Debug Status |
Inspect commit interception state |
GitAcc: Open Debug Log |
Open GitAcc Debug output |
Requirements
- VS Code 1.100+
- Built-in Git extension (
vscode.git)
- Git on PATH
Limitations
GitAcc only sets user.name and user.email. It does not manage GitHub/GitLab login, tokens, SSH keys, or GPG signing.
Author
Heber Almeida — github.com/heberalmeida
License
MIT