Git Profile helps you manage multiple Git identities and switch between them per repository.

brew install dotzero/tap/git-profile
Download a binary from the releases page and place it in a directory listed in $PATH.
go install github.com/dotzero/git-profile@latest
The binary will be installed to $GOBIN or $GOPATH/bin.
Create a profile in interactive mode:
git-profile add
Apply a profile in the current Git repository:
git-profile use
addAdd a key to a profile or update an existing one:
git-profile add work user.name "John Doe"
git-profile add work user.email work@example.com
git-profile add work user.signingkey AAAAAAAA
Run without arguments to start interactive mode:
git-profile add
Interactive mode asks for:
- profile name
- user.name
- user.email
- user.signingkey
For an existing profile, current values are prefilled. For a new profile, empty fields are skipped.
listShow all available profiles:
git-profile list
delDelete a profile or a specific key from a profile:
git-profile del
git-profile del work
git-profile del work user.email
When called without arguments, del opens an interactive profile selector and deletes the selected profile.
Press Esc or Ctrl+C to cancel.
useApply a profile to the current Git repository:
git-profile use work
Under the hood, this writes local Git config values, for example:
git config --local user.name "John Doe"
git config --local user.email work@example.com
git config --local user.signingkey AAAAAAAA
Run without arguments to select a profile interactively:
git-profile use
use must be executed inside a Git repository.
unuseRemove the applied profile entries from the current Git repository:
git-profile unuse work
Under the hood, this unsets the local Git config values, for example:
git config --local --unset user.name
git config --local --unset user.email
git config --local --unset user.signingkey
Run without arguments to remove the currently applied profile:
git-profile unuse
unuse must be executed inside a Git repository.
currentShow the currently selected profile for the current repository:
git-profile current
exportExport a profile as JSON:
git-profile export work
git-profile export work > work.json
Example output:
[
{ "key": "user.name", "value": "John Doe" },
{ "key": "user.email", "value": "work@example.com" },
{ "key": "user.signingkey", "value": "AAAAAAAA" }
]
importImport a profile from JSON:
git-profile import work '[{"key":"user.name","value":"John Doe"},{"key":"user.email","value":"work@example.com"}]'
If you already have JSON in a file:
git-profile import work "$(cat work.json)"
By default, Git Profile stores profiles in:
~/.gitprofile
You can override it with:
git-profile --config /path/to/file add work user.email work@example.com
Shell completion is available for git-profile.
Note: use git-profile ..., not git profile ..., when generating or using completion.
Requires bash-completion.
source <(git-profile completion bash)
To install permanently:
git-profile completion bash | sudo tee /etc/bash_completion.d/git-profile
On macOS:
git-profile completion bash > $(brew --prefix)/etc/bash_completion.d/git-profile
mkdir -p ~/.zsh/completions
git-profile completion zsh > ~/.zsh/completions/_git-profile
echo 'fpath=(~/.zsh/completions $fpath)' >> ~/.zshrc
echo 'autoload -U compinit && compinit' >> ~/.zshrc
source ~/.zshrc
git-profile completion fish | source
git-profile completion fish > ~/.config/fish/completions/git-profile.fish
—
$ claude mcp add git-profile \
-- python -m otcore.mcp_server <graph>