Open-source version-control software
363 open-source libraries, tools and applications tagged version-control, ranked by how closely version-control is their primary purpose, then by adoption and maintenance health. Each entry links to a page with sources, use cases and when to choose or avoid it.
363 products, primary matches first, then adoption-weighted; health v2 shown.
| Product | Health v2 | Stars | Maturity |
|---|---|---|---|
| go-nv/goenv goenv is a Go version manager modeled after pyenv and rbenv, letting users switch global, per-project, and environment-variable-overridden … | 99 | 2549 | active |
| intuit/auto Auto is a CLI tool by Intuit that automates software releases based on semantic version labels added to pull requests. It generates changel… | 82 | 2498 | active |
| bigH/git-fuzzy git-fuzzy is an interactive command-line interface for git built on top of fzf, providing fuzzy-searchable views of status, branches, log, … | 68 | 2435 | active |
| nodenv nodenv is a Node.js version manager for Unix-like systems, modeled on rbenv, that lets you install and switch between multiple Node.js vers… | 76 | 2416 | active |
| lukechilds/zsh-nvm A Zsh plugin that automatically installs, updates, and loads nvm (Node Version Manager) in your shell. It wraps nvm with extra commands lik… | 32 | 2415 | active |
| ViscousPot/GitSync GitSync is a mobile Git client for iOS and Android that syncs a local directory with a remote Git repository in the background. It is popul… | 84 | 2383 | active |
| waylau/git-for-win A China-based mirror listing for downloading Git for Windows installers and portable builds, hosted via npmmirror (formerly Taobao npm mirr… | 32 | 2379 | active |
| kdheepak/lazygit.nvim A Neovim plugin that launches the lazygit terminal UI inside a floating window within Neovim. It provides commands like :LazyGit and :LazyG… | 75 | 2374 | active |
| elfshaker/elfshaker elfshaker is a high-performance CLI version control system written in Rust, fine-tuned for storing binary files. It packs directory snapsho… | 60 | 2340 | active |
| jelmer/dulwich Dulwich is a pure-Python implementation of Git's file formats and network protocols, providing both low-level access to Git objects and a h… | 99 | 2289 | active |
| Everduin94/better-commits better-commits is a Node.js CLI that guides developers through interactive prompts to build conventional commit messages, with branch-based… | 92 | 2287 | active |
| Murmele/Gittyup Gittyup is a graphical Git client built with C++ and Qt that helps users understand and manage their source code history. It is a continuat… | 69 | 2279 | active |
| RichiH/vcsh vcsh is a shell-based tool that manages multiple Git repositories in $HOME, letting each application's dotfiles live in its own repository … | 46 | 2277 | stable |
| mateodelnorte/meta meta is a Node.js CLI tool that manages multi-project systems by combining many git repositories into a single 'meta repo', letting you run… | 66 | 2226 | stable |
| github/app GitHub Copilot app is an agent-native desktop application for finding, running, steering, and landing software work across GitHub repositor… | 78 | 2214 | active |
| idursun/jjui jjui is a terminal user interface (TUI) for interacting with the Jujutsu version control system, built in Go with Bubble Tea. It provides i… | 91 | 2201 | active |
| andsens/homeshick homeshick is a dotfiles synchronizer written in Bash that uses git to manage and deploy configuration files across machines. It clones dotf… | 64 | 2193 | stable |
| dolthub/doltgresql Doltgres is a version-controlled PostgreSQL-compatible SQL database that lets you branch, merge, fork, clone, push, and pull database schem… | 96 | 2182 | active |
| isomorphic-git A pure JavaScript reimplementation of git that works in both Node.js and browser environments (including WebWorkers and ServiceWorkers), wi… | 95 | 8374 | maintenance |
| lusingander/serie Serie is a Rust-based TUI application that renders rich git commit graphs in the terminal using the terminal emulator's image display proto… | 91 | 2156 | active |
| MordechaiHadad/bob Bob is a cross-platform command-line version manager for Neovim, written in Rust. It lets users install, switch between, and build Neovim v… | 84 | 2143 | active |
| dat-ecosystem/dat Dat is a command-line tool and JavaScript library for peer-to-peer sharing and live synchronization of files over the Hypercore Protocol, c… | 23 | 8224 | maintenance |
| rust-lang/git2-rs git2-rs provides safe, idiomatic Rust bindings to the libgit2 C library for reading and writing git repositories. It offers automatic resou… | 77 | 2117 | stable |
| conventional-changelog/standard-version standard-version is a Node.js CLI utility that automates semantic version bumping and CHANGELOG.md generation based on Conventional Commits… | 61 | 7985 | maintenance |
| basecamp/gh-signoff A GitHub CLI extension (written in Shell) that brings CI in-house: you run your test suite on your own machine and then run `gh signoff` to… | 83 | 2073 | active |
| donnemartin/gitsome gitsome is a Python-based command line tool that supercharges Git and GitHub workflows with 29 GitHub-integrated `gh` commands and an optio… | 23 | 7693 | maintenance |
| kylef/swiftenv swiftenv is a Swift version manager inspired by pyenv that lets you install and switch between multiple Swift toolchains. It supports globa… | 23 | 1988 | stable |
| josh-project/josh Josh (Just One Single History) is a Git-at-scale platform providing fast, reversible Git history transformation so any sub-view of a reposi… | 97 | 1975 | active |
| mirage/irmin Irmin is an OCaml library for building mergeable, branchable distributed data stores following Git's design principles, with clone/push/pul… | 64 | 1959 | active |
| abapGit abapGit is a Git client for ABAP systems, written entirely in ABAP, that lets developers version and sync ABAP code with Git hosting servic… | 76 | 1947 | active |
| timbrel/GitSavvy GitSavvy is a mature Sublime Text plugin providing full Git and GitHub integration inside the editor. It adds command palette commands and … | 92 | 1940 | active |
| nosarthur/gita Gita is a Python command-line tool for managing multiple git repositories from any working directory. It displays the status of many repos … | 75 | 1940 | active |
| streamich/git-cz git-cz is a CLI tool for writing semantic, emoji-decorated Conventional Commit messages interactively. It works standalone via npx or as a … | 38 | 1876 | active |
| ruby-git/ruby-git The git gem is a Ruby library that provides an object-oriented interface for creating, reading, and manipulating Git repositories by wrappi… | 96 | 1798 | active |
| remotemobprogramming/mob mob is a Go-based command line tool that streamlines git handover during remote pair and mob programming sessions, using temporary branches… | 68 | 1788 | active |
| gitwatch/gitwatch gitwatch is a bash script that watches a file or folder for changes and automatically commits them to a git repository. It provides conveni… | 80 | 1743 | active |
| git-commit-id/git-commit-id-maven-plugin A Maven plugin that captures git repository information (commit id, branch, tags, dirty state) at build time and exposes it as pom.xml prop… | 92 | 1717 | stable |
| soramimi/Guitar Guitar is a fast, lightweight open-source Git GUI client built with C++ and Qt 6. It provides a graphical interface for everyday Git workfl… | 86 | 1707 | active |
| cargo-semver-checks cargo-semver-checks is a CLI linter that scans Rust crates for semantic versioning violations by comparing a crate's public API against a p… | 95 | 1696 | active |
| TortoiseGit/TortoiseGit TortoiseGit is a free, open-source Windows shell extension that integrates Git version control directly into Windows Explorer, based on Tor… | 76 | 1695 | stable |
| OSTree libostree (formerly OSTree) is a shared library and suite of command line tools that combines a git-like model for committing and downloadi… | 90 | 1689 | stable |
| github/gh-stack A GitHub CLI extension for managing stacked branches and pull requests, written in Go. It automates creating branch chains, rebasing them, … | 83 | 1677 | active |
| microsoft/VFSForGit VFS for Git is a virtual file system for Windows that lets Git repositories of enterprise scale behave like normal working directories, dow… | 90 | 6134 | maintenance |
| TfTHacker/obsidian42-brat BRAT is an Obsidian plugin that simplifies installing and auto-updating beta plugins and themes directly from GitHub repositories. It remov… | 93 | 1652 | active |
| chriswalz/bit Bit is a modernized Git CLI built on top of git that provides sensible defaults, command/flag suggestions, and autocompletion for files and… | 23 | 6101 | maintenance |
| isaacs/nave Nave is a shell-based virtual environment manager for Node.js that lets you switch Node versions and global npm install spaces via subshell… | 57 | 1635 | active |
| splitsh/lite splitsh-lite is a fast, Go-based replacement for `git subtree split` that extracts subdirectories of a monolithic repository into read-only… | 44 | 1612 | active |
| jupyterlab/jupyterlab-git A JupyterLab extension that adds Git version control support to the JupyterLab interface, providing a left-panel UI for staging, committing… | 95 | 1611 | active |
| dotnet/Nerdbank.GitVersioning A .NET library and CLI tool that generates unique, semver-compatible version numbers for assemblies and packages from a single version.json… | 93 | 1594 | active |
| crate-ci/cargo-release cargo-release is a Cargo subcommand that streamlines releasing Rust crates by extending `cargo publish` with validation, version bumping, t… | 97 | 1593 | stable |
| esmuellert/codediff.nvim A Neovim plugin that renders VSCode-style diffs with side-by-side or inline layouts and two-tier line/character-level highlighting, powered… | 76 | 1588 | active |
| magit/forge Forge is an Emacs package that extends Magit to work with Git forges such as GitHub and GitLab, letting users manage issues and pull reques… | 98 | 1578 | active |
| nodegit/nodegit NodeGit provides asynchronous native Node.js bindings to the libgit2 C library, exposing a full Git API (clone, commit, diff, rebase, etc.)… | 61 | 5750 | maintenance |
| frostming/legit Legit is a complementary command-line tool for Git that simplifies common feature-branch workflows, inspired by GitHub for Mac. It provides… | 23 | 5682 | maintenance |
| kahole/edamagit edamagit is a VSCode extension that brings the keyboard-driven Magit Git interface from Emacs to Visual Studio Code. It provides popups and… | 65 | 1538 | active |
| projectnessie/nessie Project Nessie is a transactional catalog for data lakes that provides Git-like branching, tagging, and cross-table transactions for Apache… | 99 | 1522 | active |
| Bhupesh-V/ugit ugit is a shell script tool that helps you undo accidental git commands across 20+ scenarios, such as undoing commits, adds, pushes, branch… | 26 | 1510 | active |
| petervanderdoes/gitflow-avh A collection of Git extensions implementing Vincent Driessen's git-flow branching model, maintained as the AVH Edition fork with additional… | 10 | 5448 | maintenance |
| kynan/nbstripout A command-line tool that strips output and some metadata from Jupyter, IPython, and Zeppelin notebooks. It is designed to be used as a Git … | 69 | 1492 | active |
| warrensbox/terraform-switcher Terraform Switcher (tfswitch) is a command-line tool for switching between different versions of Terraform, downloading and installing the … | 98 | 1488 | active |
| git-appraise A distributed code review system for Git repositories, implemented as a Go command line tool. Reviews are stored as git objects (git-notes)… | 23 | 5326 | maintenance |
| tofuutils/tenv tenv is a version manager written in Go for OpenTofu, Terraform, Terragrunt, Terramate, and Atmos. It detects required versions from HCL fi… | 88 | 1443 | active |
| GitPython GitPython is a Python library for interacting with Git repositories, offering both high-level (porcelain) and low-level (plumbing) abstract… | 99 | 5185 | maintenance |
| f/git-rewrite-commits A TypeScript CLI tool that uses AI (OpenAI GPT or local Ollama models) to rewrite git commit history with better, conventional commit messa… | 53 | 1422 | active |
| Gas City Beads is a distributed, Dolt‑backed issue tracker designed for AI coding agents. It provides a CLI that manages a dependency‑aware graph of… | 83 | 1420 | active |
| nvie/git-toolbelt A collection of shell-based Git helper commands that simplify everyday Git usage and scripting. It adds subcommands like git-cleanup, git-f… | 87 | 1415 | active |
| junegunn/gv.vim gv.vim is a Vim plugin that provides a fast, simple git commit browser inside the editor. It requires tpope's vim-fugitive and supports bro… | 66 | 1415 | stable |
| nkzw-tech/codiff Codiff is a fast, minimal local diff viewer for reviewing Git changes and committing them, available as a macOS desktop app with a terminal… | 81 | 1411 | active |
| cookpete/auto-changelog auto-changelog is a Node.js command line tool that generates a CHANGELOG.md file from a git repository's tags and commit history. It suppor… | 76 | 1402 | active |
| SparkleShare SparkleShare is an open-source file sharing and collaboration app that syncs a special folder on your computer with any Git repository, wor… | 64 | 4988 | maintenance |
| rhysd/git-messenger.vim A Vim/Neovim plugin that reveals the Git commit message for the code under the cursor in a popup window. It lets users explore older commit… | 39 | 1370 | active |
| Git-it Git-it is a cross-platform desktop app (built on Electron) that teaches Git and GitHub through interactive challenges using real Git and Gi… | 23 | 4886 | maintenance |
| akinsho/git-conflict.nvim A Neovim plugin written in Lua that visualizes and helps resolve Git merge conflicts directly in the editor. It highlights conflict markers… | 23 | 1366 | active |
| BillHuang2001/evogit EvoGit is a decentralized multi-agent framework that treats software development as an evolutionary process, deploying a population of inde… | 65 | 1358 | active |
| jreybert/vimagit vimagit is a Vim plugin that brings an Emacs Magit-like git workflow into a single Vim buffer. It lets users view diffs and interactively s… | 62 | 1328 | stable |
| Ataraxy-Labs/weave Weave is an entity-level semantic merge driver for Git that parses code with tree-sitter and merges by functions and classes instead of lin… | 81 | 1324 | active |
| GNOME/meld Meld is a visual diff and merge tool for developers that compares files, directories, and version-controlled projects with two- and three-w… | 77 | 1323 | stable |
| Jean85/pretty-package-versions A small PHP library that wraps Composer's installed package metadata to produce pretty version strings for dependencies. It provides a sing… | 62 | 1305 | stable |
| EndBug/add-and-commit A GitHub Action that automatically commits changes made during a workflow run back to the repository. It wraps git add/commit/push operatio… | 96 | 1293 | active |
| ejoffe/spr spr is a Go CLI tool that manages stacked pull requests on GitHub, turning each commit on a single branch into its own ordered, auto-synced… | 77 | 1291 | active |
| qw3rtman/git-fire git-fire is a Git plugin (shell script) that saves all your work in an emergency by committing and pushing everything, including stashes, t… | 23 | 4542 | maintenance |
| ad-m/github-push-action A GitHub Action (written in Shell) that pushes local changes made during a workflow back to a GitHub repository using an authorized GITHUB_… | 77 | 1278 | active |
| remorses/critique Critique is a terminal UI diff viewer for reviewing git changes, built with OpenTUI and requiring Bun. It can also render diffs as shareabl… | 82 | 1270 | active |
| unjs/changelogen Changelogen is a TypeScript CLI tool that generates beautiful Markdown changelogs from Conventional Commits in a git repository. It can als… | 73 | 1261 | active |
| andy-5/wslgit A small Rust executable that forwards git commands to the Git installation inside Windows Subsystem for Linux (WSL), translating paths betw… | 72 | 1247 | active |
| GerritCodeReview/gerrit Gerrit is a self-hosted web-based code review and project management tool for Git-based projects, featuring side-by-side diffs, inline comm… | 77 | 1230 | stable |
| Cretezy/lazyjj lazyjj is a terminal user interface (TUI) for the Jujutsu (jj) version control system, built in Rust with Ratatui. It wraps the jj CLI to p… | 61 | 1223 | active |
| cocogitto/cocogitto Cocogitto is a Rust CLI toolbox for the Conventional Commits and SemVer specifications. It helps create compliant commits, automatically bu… | 66 | 1211 | active |
| avinassh/rockstar A satirical Python library and CLI that generates a git repository full of backdated commits to fill your GitHub contribution graph with gr… | 32 | 4186 | maintenance |
| Oxen Oxen is a fast data version control system written in Rust that versions large datasets (images, audio, video, text, parquet) with a git-li… | 96 | 1197 | active |
| rgburke/grv GRV is a terminal-based ncurses interface for viewing Git repositories, allowing refs, commits, and diffs to be browsed, searched, and filt… | 23 | 4095 | maintenance |
| Uncommon/Xit Xit is a free, open-source graphical Git client for macOS built in Swift on top of libgit2. It provides a visual interface for browsing com… | 64 | 1172 | active |
| unixorn/git-extra-commands A collection of extra git helper scripts packaged as a ZSH plugin (also usable with bash or manual installation). It bundles useful git uti… | 69 | 1170 | active |
| CodeEdit CodeEdit is a free, open-source, native macOS code editor built in Swift and SwiftUI, offering syntax highlighting, code completion, find a… | 66 | 23065 | experimental |
| dgutov/diff-hl An Emacs minor mode that highlights uncommitted changes in the window fringe or margin, with commands to jump between and selectively rever… | 76 | 1116 | stable |
| js-git JS-Git is a collection of JavaScript modules implementing Git's core functionality, letting applications create, read, and manipulate Git r… | 68 | 3845 | maintenance |
| f-person/git-blame.nvim A Neovim plugin written in Lua that displays git blame information as virtual text in the editor. It shows commit author, date, and summary… | 51 | 1107 | active |
| python-versioneer/python-versioneer Versioneer is a Python tool that manages version strings for setuptools-based projects by deriving them automatically from version-control … | 57 | 1092 | stable |
| arialdomartini/oh-my-git An opinionated git prompt for bash and zsh that shows rich repository status information (branch, tracking, stash, tags, rebase state) dire… | 23 | 3719 | maintenance |
| tristanisham/zvm zvm (Zig Version Manager) is a single-binary CLI tool for installing, upgrading, and switching between multiple versions of the Zig program… | 97 | 1077 | active |