Jujutsu VCS: A Simpler, More Powerful Git Alternative
If you've ever felt like Git is a bit... much, you're not alone. The commands can be arcane, the mental model is complex, and sometimes you just want to version your code without wrestling with your tools. That's where Jujutsu VCS (or jj) comes in. It's a version control system that aims to be both simpler and more powerful than Git, while still being fully compatible with it. Think of it as a fresh coat of paint and a new engine for the core ideas of version control.
At its heart, jj is a Git-compatible command-line tool. You can work in a jj repository and still push to and pull from any Git remote. It doesn't seek to replace the entire Git ecosystem, but rather to offer a smoother, more intuitive interface for the day-to-day version control workflow.
What It Does
Jujutsu VCS is a version control system with a command-line interface that's designed to be easy to use and script. It treats your working copy as a commit, which is a fundamental shift from Git's model. Every command you run that changes your code (like jj new, jj restore) automatically creates a new commit. There's no separate "staging area" like Git's index. This design leads to a workflow that many find more logical and less error-prone.
Why It's Cool
The magic of jj is in its unique approach. Here are a few standout features:
- The Working Copy is a Commit: This is the big one. You're always working on a commit. There's no concept of "staged" vs. "unstaged" changes. When you make edits,
jjsees them as changes to this commit. This eliminates the confusion ofgit addandgit commitas separate steps. - Automatic Commits & Timeless Editing: Commits are cheap and automatic. You can change any commit's message, description, or even its parent(s) long after you've made it. Rewriting history isn't a dangerous operation; it's a normal part of the workflow.
- Powerful, Consistent CLI: The commands are designed to be predictable and composable. For example,
jj logshows the revision graph,jj diffshows changes, andjj splitcan break a commit into two. The flags and patterns are consistent across commands. - Git Interop is Seamless: You can
jj git pushandjj git pullto collaborate on any Git host (GitHub, GitLab, etc.). You can even have a mix ofjjandgitusers in the same repository, thoughjjusers will have a nicer time.
How to Try It
The easiest way to get started is to install it via a package manager.
On macOS, use Homebrew:
brew install jj
On Linux, you can often use your distro's package manager, or grab a binary from the GitHub Releases page.
Once installed, you can clone an existing Git repo with jj git clone <URL> or initialize a new repo in the current directory with jj init. The jj CLI will guide you from there. The project has excellent documentation and tutorials to help you learn the core concepts.
Final Thoughts
Jujutsu VCS isn't just another Git wrapper. It's a thoughtful reimagining of version control that reduces cognitive load. If you find yourself constantly looking up Git commands or feeling anxious about rebases, jj might be a breath of fresh air. It's particularly great for developers who like a clean, linear history and want to spend less time managing their VCS and more time writing code. It's definitely worth an afternoon of exploration to see if its model clicks for you.
Follow us for more interesting projects: @githubprojects
Repository: https://github.com/jj-vcs/jj