Conflicts
Important
You resolve conflicts by editing files.
You learn that conflict resolution propagates to descendants.
You resolve rebase conflicts through alternative moves like rebasing or abandoning Changes.
Finally, you see under the hood how Jujutsu treats conflicts as first-class citizens.
We will spend time on this topic not because it’s tricky, but because conflicts are one of the scariest parts of Git, and I want to put that fear to rest.
We will play with a real repository. Clone it:
jj git clone https://codeberg.org/arialdo/jj-playground-conflicts.git
then track remote branches:
jj bookmark track '*'
Here’s the history tree:
○ y **feat-2**
○ unv
○ vw Will conflict: deleted file
○ xw ←
○ xl Will conflict: Vim
│ ○ nz ← **merge-b**
│ │ ○ mv ← **merge-a**
│ ├─╯
│ ○ vr Base of merge-a and merge-b **base**
│ ○ r Rebase here
│ ○ l No idea why
├─╯
│ ○ no ← **feat-1**
│ ○ vt
│ ○ s Will conflict
│ ○ unm
│ ○ vz
├─╯
◆ q 🔒 ← **main**
│
~
We will perform moves producing progressively more challenging conflicts:
- A simple merge conflict.
- A rebase generating 1 single conflict.
- A rebase with multiple conflicts.
Then we’ll explore conflict resolution techniques unavailable in Git.
Ready? Hands on the keyboard!