Fast, resource-efficient, fully open source Git GUI written in Rust, targeting GitKraken/SourceTree/GitHub Desktop-class workflows using gpui for the UI.
- Fast UI for very large repositories
- Support
git difftoolandgit mergetoolflows - Open source with a permissive license (AGPL-3.0)
- Cross-platform (Windows, Linux, macOS)
Download the latest available GitComet version (prebuilt binaries/installers) from GitHub Releases.
To build and run from source instead:
cargo build -p gitcomet-app --features ui-gpui,gix
cargo run -p gitcomet-app --features ui-gpui,gix -- /path/to/repoDeveloper setup, workspace layout, testing, and coverage docs live in CONTRIBUTING.md.
GitComet can be used as a standalone diff and merge tool invoked by git difftool and git mergetool. It supports both headless (algorithm-only) and GUI (interactive GPUI window) modes.
# Configure Git globally to use GitComet for both difftool + mergetool
gitcomet-app setup
# Remove GitComet integration safely
gitcomet-app uninstall- Use
--localto target only the current repository instead of global config. - Use
--dry-runto print the commands before applying changes.
This setup registers both headless and GUI variants with guiDefault=auto, so Git chooses GUI when display is available and falls back to headless otherwise.
setup/uninstall are designed to be idempotent.
Show detailed setup/uninstall behavior and manual commands
Built-in setup writes these Git config entries:
GITCOMET_BIN="/absolute/path/to/gitcomet-app"
# Headless tool — algorithm-only merge/diff for CI, scripts, and no-display environments
git config --global merge.tool gitcomet
git config --global mergetool.gitcomet.cmd \
"'$GITCOMET_BIN' mergetool --base \"\$BASE\" --local \"\$LOCAL\" --remote \"\$REMOTE\" --merged \"\$MERGED\""
git config --global mergetool.trustExitCode true
git config --global mergetool.gitcomet.trustExitCode true
git config --global mergetool.prompt false
git config --global diff.tool gitcomet
git config --global difftool.gitcomet.cmd \
"'$GITCOMET_BIN' difftool --local \"\$LOCAL\" --remote \"\$REMOTE\" --path \"\$MERGED\""
git config --global difftool.trustExitCode true
git config --global difftool.gitcomet.trustExitCode true
git config --global difftool.prompt false
# GUI tool — opens focused GPUI windows for interactive diff/merge
git config --global merge.guitool gitcomet-gui
git config --global mergetool.gitcomet-gui.cmd \
"'$GITCOMET_BIN' mergetool --gui --base \"\$BASE\" --local \"\$LOCAL\" --remote \"\$REMOTE\" --merged \"\$MERGED\""
git config --global mergetool.gitcomet-gui.trustExitCode true
git config --global diff.guitool gitcomet-gui
git config --global difftool.gitcomet-gui.cmd \
"'$GITCOMET_BIN' difftool --gui --local \"\$LOCAL\" --remote \"\$REMOTE\" --path \"\$MERGED\""
git config --global difftool.gitcomet-gui.trustExitCode true
# Auto-select GUI tool when DISPLAY is available, headless otherwise
git config --global mergetool.guiDefault auto
git config --global difftool.guiDefault autoBuilt-in setup stores previous user values for shared generic keys under gitcomet.backup.* (when needed).
Built-in uninstall restores those backups only when the key still has the setup-managed value. If the user changed a setting after setup, uninstall preserves that user-edited value and then removes GitComet-specific keys.
Difftool:
gitcomet-app difftool --local <path> --remote <path> [--path <display_name>] [--label-left <label>] [--label-right <label>]Also reads LOCAL/REMOTE from environment as a fallback when invoked by Git.
Mergetool:
gitcomet-app mergetool --local <path> --remote <path> --merged <path> [--base <path>] [--label-local <label>] [--label-remote <label>] [--label-base <label>]Also reads LOCAL/REMOTE/MERGED/BASE from environment. Base is optional for add/add conflicts.
KDiff3 and Meld invocation forms are supported (--L1/--L2/--L3, -o/--output/--out, --base, positional arguments), so GitComet can be a drop-in replacement.
If the app crashes due to a Rust panic, GitComet writes a crash log to:
- Linux:
$XDG_STATE_HOME/gitcomet/crashes/(fallback:~/.local/state/gitcomet/crashes/) - macOS:
~/Library/Logs/gitcomet/crashes/ - Windows:
%LOCALAPPDATA%\gitcomet\crashes\(fallback:%APPDATA%\gitcomet\crashes\)
On next startup, GitComet can prompt you to report the crash as a prefilled
GitHub issue in Auto-Explore/GitComet, including app version, platform,
panic details, and a trimmed backtrace.
GitComet is licensed under the GNU Affero General Public License Version 3
(AGPL-3.0-only). See LICENSE-AGPL-3.0.
Copyright (C) 2026 AutoExplore Oy
Contact: info@autoexplore.ai
