https://steveklabnik.github.io/jujutsu-tutorial/ [ ] 1. 1. Introduction 2. 1. 1.1. What is jj and why should I care? 2. 1.2. How to read this tutorial 3. 2. Hello, world! 4. 1. 2.1. How to install jj 2. 2.2. Creating a repository with jj git init 3. 2.3. Viewing the current status with jj st 4. 2.4. Using jj describe to describe our commits in a human-friendly way 5. 2.5. Using jj new to create new changes 6. 2.6. Viewing the contents of your repository with jj log 7. 2.7. A recap and some thoughts 5. 3. Real-world workflows 6. 1. 3.1. The Squash Workflow 2. 3.2. The Edit Workflow 7. 4. Branching, merging, and conflicts 8. 1. 4.1. What anonymous branches are, and how to use them 2. 4.2. Figuring out where our changes are with revsets 3. 4.3. Merging anonymous branches 4. 4.4. Dealing with conflicts 9. 5. Sharing your code with others 10. 1. 5.1. Using named branches in jj 2. 5.2. Working with remotes, aka, GitHub 3. 5.3. Responding to pull request feedback 4. 5.4. Updating trunk from upstream 5. 5.5. Using jj with Gerrit 11. 6. More advanced workflows 12. 1. 6.1. Working on all of your branches simultaneously 2. 6.2. Stacked PRs 3. 6.3. Workspaces 4. 6.4. Colocated Repositories 13. 7. Fixing Problems 14. 1. 7.1. Undoing mistakes 2. 7.2. Reverting changes 3. 7.3. The Operation Log 4. 7.4. The obslog 15. 8. Customizing your experience 16. 1. 8.1. Configuring jj 2. 8.2. Customizing the output of various jj commands with templates * Light * Rust * Coal * Navy * Ayu Steve's Jujutsu Tutorial [ ] Introduction Hi there, I'm Steve. This is a tutorial for Jujutsu--a version control system. This tutorial exists because of a particular quirk of mine: I love to write tutorials about things as I learn them. This is the backstory of TRPL, of which an ancient draft was "Rust for Rubyists." You only get to look at a problem as a beginner once, and so I think writing this stuff down is interesting. It also helps me clarify what I'm learning to myself. Anyway, I have been interested in version control for a long time. I feel like I am the only person alive who doesn't mind git's CLI. That's weird. I also heard friends rave about "stacked diffs" but struggled to understand what exactly was going on there. Nothing I read or conversations I had have clicked. One time I was talking with Rain about this and she mentioned jj being very cool. I looked at it but I didn't get it. I decided to maybe just come back to this topic later. A very common thing people have when learning Rust is, they'll try it, quit in frustration, and then come back months later and it's easy and they don't know what they were struggling with. Of course, some people never try again, and some who try don't get over the hump, but this used to happen quite often, enough to be remarkable. So that's what I decided with jj. I'd figure this stuff out later. Well, recently Chris Krycho wrote an article about jj. I liked it. I didn't fully grok everything, but it at least felt like I could understand this thing finally maybe. I didn't install it, but just sat with it for a while. I don't know if that is why, but I awoke unusually early one morning. I couldn't get back to sleep. Okay. Fine. Let's do this. I opened up the official jj tutorial, installed jj, made this repository on GitHub, followed the "cloning a git repo" instructions to pull it down, and started this mdBook. What follows is exactly what the title says: it's to teach me jj. I am publishing this just in case someone might find it interesting. I am very excited about jj. I feel like I'm getting it. Maybe your brain will work like mine, and this will be useful to you. But also, it may not. I make no claim that this tutorial is good, complete, or even accurate. You can find the source for this content here. Feel free to open issues or even send me pull requests for typos and such. Zero guarantees I will respond in a timely fashion though. Anyway, let's get on with it.