gitoxide

Pure Rust implementation of Git, offered as the gix library crate plus gix and ein command-line binaries for testing the API and running workflow tools.

install

gitoxide is an implementation of Git written in Rust. It is used in two ways: as a library, through the gix crate, which is added as a Cargo dependency and acts as the entry point to a set of lower-level crates (gix-config, gix-ref, gix-odb, gix-pack, gix-index and others); and as command-line tools. The CLI side consists of the gix binary, which is meant for exercising the API against real repositories, and the ein binary, which holds workflow-enhancing tools. The README states that both binaries may remain unstable and should not be relied on in scripts.

Implemented functionality includes clone, fetch, status, blob and tree diff, commit, commit-graph traversal, worktree checkout and worktree streaming, and reading and writing of objects, refs, .git/index and git configuration. It also handles pathspecs, revspecs, .gitignore and .gitattributes. Blame is available at the plumbing level. Merge works for blobs and trees but not yet for commits, and push, rebase and reset are not implemented. Stress-testing commands cover verifying huge packs, exploding a pack to disk, and generating and verifying large commit graphs.

The main audience is Rust developers who want Git functionality in their applications, including those migrating from git2 (the docs support searching for git2 equivalents). Crates carry stability tiers: gix-lock and gix-tempfile are production grade, several others are stabilization candidates, and most are in initial development. A crate-status document tracks implemented and planned features. Binaries are available for Linux, macOS and Windows.

Installation

# via Homebrew
brew install gitoxide
# via Pacman (Arch Linux)
pacman -S gitoxide
# via Cargo binstall
cargo binstall gitoxide

Asciicast of the gix command-line tool in a terminal

Alternatives & related tools

add a badge to your README

Maintain gitoxide? Show that it's featured on trmn. The badge links back to this page.

Featured on trmn
Markdown
[![Featured on trmn](https://www.trmn.sh/badge/gitoxide.svg)](https://www.trmn.sh/tools/gitoxide?utm_source=badge)
HTML
<a href="https://www.trmn.sh/tools/gitoxide?utm_source=badge"><img src="https://www.trmn.sh/badge/gitoxide.svg" alt="Featured on trmn" height="20"></a>