Git 사용자라면 주목! 3시간 반 워크숍으로 살펴보는 Jujutsu(jj)의 모든 것

Git은 익숙하지만 rebase 충돌이나 stash 관리에 지친 적이 있다면, 요즘 개발자들 사이에서 꾸준히 언급되는 Jujutsu(jj) 에 관심이 생기셨을 거예요. 2026년 10월 31일, vim.kr 주최로 튜링의사과에서 약 3시간 반 분량의 jj 실습 워크숍이 라이브로 열렸습니다. Tangled 개발자 boltless가 진행한 이번 워크숍의 내용을 정리해 드립니다.
핵심 요약
- jj는 Git 백엔드 위에서 동작해 기존 Git 저장소에 그대로 적용할 수 있습니다.
- 인덱스와 stash가 없고, working copy 자체가 하나의 커밋으로 다뤄집니다.
- change ID와 commit ID를 분리해, 내용이 바뀌어도 같은 변경을 계속 추적할 수 있습니다.
- 충돌(conflict)이 일급 객체라서 rebase가 멈추지 않고, 충돌은 나중에 해결해도 됩니다.
- 워크숍은 Git 내부 구조 → jj 데이터 모델과 기본 명령 → 고급 워크플로우 → Tangled 연동 순서로 진행됐습니다.
1부: Git 내부 모델과 jj 기초
먼저 Git의 객체 모델(blob, tree, commit, tag, ref, 인덱스)을 짚은 뒤, jj가 이를 어떻게 다르게 다루는지 비교했습니다.
- 자동 스냅샷: working copy가 곧 커밋이고, 명령을 실행할 때마다 자동으로 스냅샷이 찍힙니다.
git add나git stash를 신경 쓸 일이 줄어드는 셈이죠. - change ID: commit ID가 달라져도 change ID는 유지되므로, 하나의 변경을 수정을 거듭하면서도 계속 추적할 수 있습니다.
- bookmark: 브랜치 대신 사용하는 개념입니다.
- 메시지 먼저 쓰기: 커밋 메시지를 먼저 쓰고 작업하는 흐름을 권장합니다.
실습에서는 다음 명령을 다뤘습니다.
jj git init, jj status, jj log, jj describe, jj new, jj commit, jj squash -i, jj edit, jj file show
휴식 시간 질의에서는 describe -r로 과거 변경의 메시지를 수정하는 방법과, 브랜치 없이 jj git push -c로 바로 push하는 방법도 소개됐습니다.
2부: 히스토리 조작과 고급 워크플로우
jj의 진가가 드러나는 파트입니다.
- 이력 확인과 되돌리기:
jj evolog로 한 change의 변천 이력을 보고,jj undo,op log,op restore로 저장소 전체를 작업 단위로 되돌릴 수 있습니다. - edit vs squash 워크플로우: 기존 변경을 직접 수정하는 방식과, 새 변경에서 작업한 뒤 부모로 합치는 방식을 비교했습니다.
- 머지:
jj new에 부모를 여러 개 지정해 머지 커밋이나 옥토퍼스 머지를 만들 수 있습니다. - 재배치:
jj rebase -b / -s / -r와 revset,--after/--before로 변경을 원하는 위치에 옮깁니다. - 일급 객체 충돌: 충돌이 나도 rebase가 멈추지 않고, 충돌 상태를 커밋에 기록해 두었다가 나중에 해결할 수 있습니다.
- 메가 머지 워크플로우: 여러 작업 브랜치를 하나의 머지 커밋 위에 올려 동시에 개발하고, 각 변경으로 분배하는 방식입니다.
휴식 시간에는 Git 저장소 이전, stacked PR, interdiff에 관한 질문이 이어졌습니다.
3부: Tangled와 원격 협업
마지막 파트에서는 AT Protocol 기반의 탈중앙 Git 포지 Tangled 를 소개했습니다.
jj git push,jj git fetch로 GitHub와 Tangled에 bookmark를 동기화하는 과정을 다뤘습니다.- PR을 갱신할 때 force push가 자연스러운 jj의 흐름과, interdiff로 PR 리비전 간 차이를 리뷰하는 방식을 시연했습니다.
질의응답
마무리 질의응답에서는 immutable_heads 설정, revset 함수, workspace, Git LFS 지원 등 실무에서 궁금할 만한 주제가 다뤄졌습니다.
에디터의 한마디
이번 워크숍은 단순한 명령어 소개를 넘어, Git 내부 구조에서 출발해 jj의 설계를 이해하도록 구성됐다는 점이 돋보입니다. 기존 Git 저장소에 바로 적용할 수 있으니, 부담 없이 작은 저장소부터 jj를 써 보는 것도 좋은 시작이 되겠습니다.
원문: https://news.hada.io/topic?id=36374&utm_source=geeknews&utm_medium=rss&utm_campaign=news