Work with multiple GitHub accounts using the gh cli.
gh extension install gabe565/gh-profile
See the generated usage docs, or see a summary of each subcommand below.
Note As of v2.26.0, the gh cli now uses secure auth tokens by default. Secure auth tokens are not yet supported by gh-profile, so when logging into GitHub, make sure to run:
gh auth login --insecure-storage
-
gh profile create [NAME]
: Creates a new profile.Details
Aliases:
c
,new
,add
Params:
NAME
is optional. If not set, command will run interactively.
Example:
$ gh profile create example โจ Creating profile: example ๐ง Activating global profile: example
-
gh profile switch [NAME] [--local-dir]
: Activates a profile.Details
Aliases:
activate
,active
,sw
,s
Params:
NAME
is optional. If not set, command will run interactively.- If set to
-
, gh-profile will switch back to the previous profile.
- If set to
--local-dir
/-l
activates the profile only for the current directory.- For this to work, you must install a per-directory env tool like direnv.
Example:
$ gh profile switch example ๐ง Activating global profile: example
-
gh profile rename [NAME] [NEW_NAME]
: Renames a profile.Details
Aliases:
mv
Params:
NAME
andNEW_NAME
are optional. If not set, command will run interactively.
Example:
$ gh profile rename example example2 ๐ Renaming profile: example to example2 ๐ง Activating global profile: example2
-
gh profile list
: Lists all profiles. Active profile will be bold with a green check.Details
Aliases:
ls
,l
Example:
$ gh profile list โ example gabe565
-
gh profile remove [NAME]
: Removes a profile.Details
Aliases:
delete
,rm
,d
Params:
NAME
is optional. If not set, command will run interactively.
Example:
$ gh profile remove example2 ๐ฅ Removing profile: example2
-
gh profile show
: Prints the active profile name. If no profile is active, nothing will be printed. Useful as a prompt element.Details
Example:
$ gh profile show example
gh profile show
is useful for displaying the current profile in your
shell's prompt. This command will work for any prompt, but configuration
with Powerlevel10k is provided
below.
Powerlevel10k ships with a custom formatter for git
repositories. This
formatter can be easily modified to show the current profile.
- Edit
~/.p10k.zsh
. - Find the
my_git_formatter
function - Find the line
local res
- Add the following below that line:
local profile="$(gh profile show 2>/dev/null)" [[ -n "$profile" ]] && res+="$profile "
Now, the current profile will be shown when you are in a git repo!
Before | After |
---|---|
![]() |
![]() |