A command-line tool that turns your Git workflow into a fun RPG. Level up, unlock achievements, and make every commit rewarding.
Turn your daily Git workflow into a lightweight RPG loop.
Earn XP, level up, and unlock achievements from real Git usage.
Git-Gamify wraps your normal git usage (commit, push) and adds a game layer:
The core goal is to keep your existing Git habits intact while adding immediate feedback and motivation.
user.email)en, zh)Requirements:
Install from PyPI:
pip install git-gamify
Or install this repo in editable mode:
pip install -e .
git command is routed through Git-Gamify.git commit, git push).gg profile.Edit your profile:
notepad $PROFILE
Add:
function git {
gg git @args
}
Restart PowerShell.
Add to ~/.bashrc or ~/.zshrc:
function git() {
gg git "$@"
}
Reload shell (source ~/.bashrc / source ~/.zshrc) or restart terminal.
ggRun once:
gg --install-completion powershell
(bash and zsh are also supported via Typer installer.)
gg and Wrapped git CompletionWhen git is wrapped as a PowerShell function, default git completion can disappear because completion was attached to native git.exe, not your function.
Use this profile setup:
Import-Module PSReadLine
Import-Module posh-git
$GitPromptSettings.EnablePromptStatus = $false
function git {
gg git @args
}
Set-PSReadLineKeyHandler -Chord Tab -Function MenuComplete
# gg completion
$scriptblock = {
param($wordToComplete, $commandAst, $cursorPosition)
$Env:_GG_COMPLETE = "complete_powershell"
$Env:_TYPER_COMPLETE_ARGS = $commandAst.ToString()
$Env:_TYPER_COMPLETE_WORD_TO_COMPLETE = $wordToComplete
gg | ForEach-Object {
$commandArray = $_ -Split ":::"
$command = $commandArray[0]
$helpString = $commandArray[1]
[System.Management.Automation.CompletionResult]::new(
$command, $command, "ParameterValue", $helpString
)
}
$Env:_GG_COMPLETE = ""
$Env:_TYPER_COMPLETE_ARGS = ""
$Env:_TYPER_COMPLETE_WORD_TO_COMPLETE = ""
}
Register-ArgumentCompleter -Native -CommandName gg -ScriptBlock $scriptblock
# bridge completion for wrapped git function
Register-ArgumentCompleter -CommandName git -ScriptBlock {
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
$line = $commandAst.ToString()
$lastWord = $wordToComplete
GitTabExpansion $line $lastWord | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, "ParameterValue", $_)
}
}
Notes:
Import-Module posh-git is required for GitTabExpansion.cannot find 'gg', ensure gg is installed in the active Python environment and available in PATH.main/branch text in prompt is from posh-git prompt feature, not Git-Gamify runtime.gg profileShow user profile, level progress, and unlocked achievements.
gg profile
Options:
gg profile --stats or gg profile -sgg profile --resetgg configRead or update config values.
gg config --get language
gg config --set language=zh
gg config --set language=en
gg helpShow internal command help.
gg help
User data is stored locally under:
%USERPROFILE%\.git-gamify~/.git-gamifyProfiles are keyed by a hash of your Git user.email.
Create and use a virtual environment:
py -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e .
pip install pytest
pytest -q -p no:cacheprovider
MIT License.
We use cookies
We use cookies to analyze traffic and improve your experience. You can accept or reject analytics cookies.