Ceci n'est pas Magit.

A fast, keyboard-first git client in the spirit of Magit—no Emacs required.

Magritte is written in Rust using gpui, the framework that powers Zed. Magritte's asynchronous core ensures that it gracefully handles large repos and stays responsive even during slow git operations.

Magritte's status view on its own repository: untracked, unstaged, and staged sections, an expanded file diff with a syntax-highlighted hunk, and recent commits

Installation

Via homebrew:

brew install lyallcooper/magritte/magritte

Or download a binary from GitHub.

Basic Usage

After installation, launch Magritte from your terminal:

# Open the repo you're in
$ magritte

# Or pass a repo to open
$ magritte /dev/my-project

The main screen is the status view. It shows you the information you'd see from running git status, such as untracked, unstaged, and staged files. It also shows your stashes, unpushed/unpulled changes, recent commits and more.

Use j / k to move. Press Tab on a file name in the status view to expand its diff. Stage and unstage changes using s and u. Open the commit menu with c.

Try it! Press ? or click the ? icon in the bottom right to bring up the interactive, context-aware help menu.

Use v to enter the ever-useful multi-line visual selection mode. Use it to act on multiple files at once. You can even use it to surgically target specific lines within a diff hunk to act on.

The default keymap uses vim-like (emacs-evil) keybindings. If you prefer traditional emacs-style, change the Keybindings to "Vanilla" from the settings screen (accessible via ,). You can also set the keymap_preset to "vanilla" in the config file.

Basic keybindings, vim-style (default)

j / k Move down / up
c Commit menu
Tab Expand / collapse
b Branch menu
s / u Stage / unstage
p / F Push / pull menu
x Discard (prompts for confirmation)
l Log menu
: Search all commands
? Help menu

Basic keybindings, vanilla emacs-style

ctrl-n / ctrl-p Move down / up
c Commit menu
Tab Expand / collapse
b Branch menu
s / u Stage / unstage
P / F Push / pull menu
k Discard (prompts for confirmation)
l Log menu
alt-x Search all commands
? / h Help menu

Transient menus

Magit and Magritte are both built upon keyboard-driven transient command menus, or transients for short. Transients guide you towards your goal by showing you the available options and actions you can take.

The tag transient menu open at the bottom of the status view, showing its argument switches (force, annotate) and actions (tag, release, delete) beside their keys
The tag transient t

Transients are customizable. See the relevant docs section.

Configuration

You can configure essentials from the settings screen (accessible via ,). More advanced settings and custom commands are configurable via the config.toml config file. See the configuration docs for more details.

Status

Magritte is under active development. Current limitations: