Stacked Git, StGit for short, is an application for managing Git commits as a stack of patches.
With a patch stack workflow, multiple patches can be developed concurrently and efficiently, with each patch focused on a single concern, resulting in both a clean Git commit history and improved productivity.
For a complete introduction to StGit, see the Stacked Git homepage.
To get a feel for how StGit works, see this brief example of StGit in action. Or check out the in-depth tutorial.
StGit also has a complete set of man pages describing the
stg
command line tool and each of its subcommands.
See CHANGELOG.md
to see what has changed in the latest
StGit release.
StGit is implemented in Rust using a number of third-party, open source crates. StGit statically links with its pure-Rust dependencies, but dynamically links to libc and other non-Rust libraries when they are available at build-time. Dynamic link dependencies include these libraries along with their transient link dependencies:
- libcurl (optional)
StGit works within the context of a Git repository and performs many
operations by running subordinate git
commands.
Git 2.2.0 or newer is required.
Recent versions of StGit are available in several package repositories such as HomeBrew and MacPorts for MacOS and for the Arch and Gentoo Linux distributions. StGit is also available via crates.io, guix, and nix.
More details about StGit packages availability for various operating systems can be found on repology.
Prebuilt deb, rpm, and msi packages are provided by the StGit project. Packages for the latest release may be found here.
Note that the Linux deb and rpm packages are unofficial. The upstream Debian and RedHat/Fedora projects currently only publish outdated versions of StGit (see repology). These unofficial packages are meant to be a stop-gap until official StGit packages are provided by downstream distributions.
The Linux deb and rpm packages are statically linked use musl
libc to maximize compatibility. They should hopefully work on a wide
range of deb and rpm based distributions.
StGit may also be installed from source. Download the latest release or clone from the StGit repository on GitHub.
To install the stg
executable from source, choose a prefix
and run:
$ make prefix=$HOME/.local install
For more information about installation, see INSTALL.md
.
See CONTRIBUTING.md
for a full guide to contributing
to StGit.
StGit is maintained by Catalin Marinas and Peter Grayson.
For a complete list of StGit's authors, see AUTHORS.md
.