<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/jujutsu-vcs-101-t8fi750ib" -->

---
title: Jujutsu VCS 101 | daily.dev
description: Jujutsu (jj) is a version control system that uses Git as a backend but introduces a fundamentally different mental model. Instead of immutable commits, jj...
canonical: https://daily.dev/posts/jujutsu-vcs-101-t8fi750ib
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Jujutsu VCS 101 | daily.dev
og:description: Jujutsu (jj) is a version control system that uses Git as a backend but introduces a fundamentally different mental model. Instead of immutable commits, jj...
og:url: https://daily.dev/posts/jujutsu-vcs-101-t8fi750ib
og:image: https://api.daily.dev/og/posts/T8fi750IB.png
og:image:alt: Jujutsu VCS 101
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Jujutsu VCS 101

**[Viget](https://daily.dev/sources/viget)** · 9 min read · 27 upvotes · 5 comments

## Summary

Jujutsu (jj) is a version control system that uses Git as a backend but introduces a fundamentally different mental model. Instead of immutable commits, jj works with 'changes' — evolving units of work with persistent change IDs that survive rewrites. Key differences from Git include: no staging area, bookmarks instead of auto-advancing branches, and a powerful revset query language for selecting revisions. The article walks through a basic jj workflow (fetch, create change, commit, push) and demonstrates how conflict resolution during rebases is smoother — jj records conflicts inline rather than pausing the operation, letting you resolve them like any other edit. Commands like jj edit, jj squash, jj resolve, and jj describe are introduced as building blocks for daily use.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.viget.com/articles/jujutsu-vcs-101>

## Questions this post answers

### What is the difference between a change ID and a commit ID in Jujutsu?

A change ID persistently identifies a piece of evolving work and never changes, while the commit ID is the underlying snapshot hash that changes every time the work is edited. In jj status or jj log output, each revision shows both: for example, a change ID like yqttnwyq paired with a commit ID like 0a72288d. This lets developers reference the same logical change even as its contents are rewritten.

_Developers comparing Git and Jujutsu mental models can dig deeper into version control concepts on daily.dev._

### How does Jujutsu handle rebase conflicts differently from Git?

Jujutsu records a conflict directly in the affected change and lets the rest of the rebase finish, rather than pausing the whole operation in a temporary rebase state like Git does. You can later run jj edit on the conflicted change, resolve it with jj resolve, and continue working without a separate staging or continuation step, or create a new child change and squash the resolution in.

_Anyone weighing smoother conflict resolution workflows can track version control comparisons like this on daily.dev._

### How do you push a Jujutsu change to a remote branch for review?

Create a bookmark pointing at the change with jj bookmark create <name> -r @, then push it with jj git push --bookmark <name>. Bookmarks in Jujutsu function like Git branches but do not move forward automatically as you keep working, so you must explicitly set the bookmark to the new revision before pushing.

_Developers adopting jj for daily work can follow practical version control workflows like this on daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@kshitiz84** · 3 upvotes

> with the sole exception of codaru gojo of course

**@agostinadevdc** · 2 upvotes

> So, this can kaisen  the git

**@andrewma** · 2 upvotes

> jujutsu kaisen reference..?

**@agustinbarrientos** · 0 upvotes

> My first Jujutsu test would be a shared branch with teammates and CI still speaking Git.

## Similar posts on daily.dev

- [Jujutsu \(JJ\): An Alternative to Git? Jujutsu proposes to be simpler yet more powerful than Git. But is it worth switching? Let's find out.](https://daily.dev/posts/jujutsu-jj-an-alternative-to-git-jujutsu-proposes-to-be-simpler-yet-more-powerful-than-git-but--qycicuerv) · The Miners · 78 upvotes · 15 comments
- [How I use Jujutsu](https://daily.dev/posts/how-i-use-jujutsu-pu0cj8npp) · Lobsters · 42 upvotes · 0 comments
- [Introducing Jujutsu VCS. Edit Workflow.](https://daily.dev/posts/introducing-jujutsu-vcs-edit-workflow--l98wpx3ju) · Swift with Majid · 1 upvotes · 0 comments
- [why i think jj-vcs is worth your time](https://daily.dev/posts/why-i-think-jj-vcs-is-worth-your-time-19awpqutm) · Lobsters · 4 upvotes · 0 comments
- [What is jj and why should I care?](https://daily.dev/posts/what-is-jj-and-why-should-i-care--breubsbya) · Hacker News · 2 upvotes · 0 comments

---

Tags: [#git](https://daily.dev/tags/git), [#version-control](https://daily.dev/tags/version-control)

[View this post on daily.dev](https://daily.dev/posts/jujutsu-vcs-101-t8fi750ib)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Jujutsu VCS 101","url":"https://daily.dev/posts/jujutsu-vcs-101-t8fi750ib","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/jujutsu-vcs-101-t8fi750ib"},"datePublished":"2026-08-05T18:25:04.781Z","dateModified":"2026-09-13T19:06:21.159Z","description":"Jujutsu (jj) is a version control system that uses Git as a backend but introduces a fundamentally different mental model. Instead of immutable commits, jj...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/87353abb9dac47cc3fe167d78488a798?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/87353abb9dac47cc3fe167d78488a798?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Viget","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Viget","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/bb75aa01968d4bdb91c583d939f83184","url":"https://daily.dev/sources/viget"},"commentCount":5,"discussionUrl":"https://daily.dev/posts/jujutsu-vcs-101-t8fi750ib","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":27},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":5}],"keywords":"git,version-control","timeRequired":"PT9M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Viget","item":"https://daily.dev/sources/viget"},{"@type":"ListItem","position":3,"name":"Jujutsu VCS 101"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/jujutsu-vcs-101-t8fi750ib","comment":[{"@type":"Comment","text":"with the sole exception of codaru gojo of course","datePublished":"2026-08-06T16:44:57.145Z","url":"https://daily.dev/posts/T8fi750IB#c-XsqmNB4hj","author":{"@type":"Person","name":"Kshitiz","url":"https://daily.dev/kshitiz84","image":"https://lh3.googleusercontent.com/a/ACg8ocKvylFHKWbgzxJSUNGJMkWXjHIerG6xJ2nbG_vNDOgmrWUDGFg=s96-c"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3}},{"@type":"Comment","text":"So, this can kaisen  the git","datePublished":"2026-08-06T13:38:13.943Z","url":"https://daily.dev/posts/T8fi750IB#c-oj0CAkRCi","author":{"@type":"Person","name":"Agostina","url":"https://daily.dev/agostinadevdc","image":"https://avatars.githubusercontent.com/u/172528717?v=4"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}},{"@type":"Comment","text":"jujutsu kaisen reference…?","datePublished":"2026-08-07T01:57:50.971Z","url":"https://daily.dev/posts/T8fi750IB#c-ivgyaQ90T","author":{"@type":"Person","name":"Andrew M","url":"https://daily.dev/andrewma","image":"https://avatars.githubusercontent.com/u/102819214?v=4"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}},{"@type":"Comment","text":"My first Jujutsu test would be a shared branch with teammates and CI still speaking Git.","datePublished":"2026-08-09T23:56:30.000Z","url":"https://daily.dev/posts/T8fi750IB#c-lMkWxGZ1A","author":{"@type":"Person","name":"Agustin Barrientos","url":"https://daily.dev/agustinbarrientos","image":"https://media.daily.dev/image/upload/s--5ayxQnqn--/f_auto/v1788281802/avatars/avatar_wQYYVe5Tbj0NJ7C7qPoa8?_a=BAMAMicg0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/jujutsu-vcs-101-t8fi750ib#faq","mainEntity":[{"@type":"Question","name":"What is the difference between a change ID and a commit ID in Jujutsu?","acceptedAnswer":{"@type":"Answer","text":"A change ID persistently identifies a piece of evolving work and never changes, while the commit ID is the underlying snapshot hash that changes every time the work is edited. In jj status or jj log output, each revision shows both: for example, a change ID like yqttnwyq paired with a commit ID like 0a72288d. This lets developers reference the same logical change even as its contents are rewritten. Developers comparing Git and Jujutsu mental models can dig deeper into version control concepts on daily.dev."}},{"@type":"Question","name":"How does Jujutsu handle rebase conflicts differently from Git?","acceptedAnswer":{"@type":"Answer","text":"Jujutsu records a conflict directly in the affected change and lets the rest of the rebase finish, rather than pausing the whole operation in a temporary rebase state like Git does. You can later run jj edit on the conflicted change, resolve it with jj resolve, and continue working without a separate staging or continuation step, or create a new child change and squash the resolution in. Anyone weighing smoother conflict resolution workflows can track version control comparisons like this on daily.dev."}},{"@type":"Question","name":"How do you push a Jujutsu change to a remote branch for review?","acceptedAnswer":{"@type":"Answer","text":"Create a bookmark pointing at the change with jj bookmark create <name> -r @, then push it with jj git push --bookmark <name>. Bookmarks in Jujutsu function like Git branches but do not move forward automatically as you keep working, so you must explicitly set the bookmark to the new revision before pushing. Developers adopting jj for daily work can follow practical version control workflows like this on daily.dev."}}]}
```

