git-lfs 0.7.0

Large file storage for git, implemented in Rust
Documentation

git-lfs

Large file storage for git, implemented in Rust.

A from-scratch Rust port of upstream Git LFS. The goal is feature parity with the upstream Go binary at the CLI and wire-protocol level, with a clean library split and better help output in the binaries.

Status

Work in progress, but already functional for day-to-day use. The bulk of upstream's test suite passes; see the scoreboard for the current breakdown. For production workloads, the upstream Go git-lfs is still the answer.

The major gaps are custom transfer adapters, TUS uploads, pure-SSH transfer (git-lfs-transfer), the dedup subcommand, encrypted client certificate keys, and NTLM and Negotiate auth.

Installing

Homebrew (Linux and macOS):

brew tap rustutils/tap
brew install rustutils/tap/git-lfs

APT (Debian and Ubuntu):

sudo install -d -m 0755 /etc/apt/keyrings
sudo curl -fsSLo /etc/apt/keyrings/rustutils.asc https://rustutils.gitlab.io/apt/rustutils.asc
echo "deb [signed-by=/etc/apt/keyrings/rustutils.asc] https://rustutils.gitlab.io/apt stable main" \
  | sudo tee /etc/apt/sources.list.d/rustutils.list
sudo apt update
sudo apt install git-lfs-rs

RPM (Fedora, RHEL, Rocky, AlmaLinux):

sudo curl -fsSLo /etc/yum.repos.d/rustutils.repo https://rustutils.gitlab.io/rpm/rustutils.repo
sudo dnf install git-lfs-rs

Cargo (any platform with a Rust toolchain):

cargo install git-lfs

While installing from Cargo is possible, it means you will not get the manpages that are available with the other installation methods.

After installing, run git lfs install once per machine to register the clean, smudge, and process filters in your global git config.