Git의 강력한 대안, JJ(Jujutsu)를 3개월간 사용한 개발자의 솔직한 후기!

by DD
4개월 전
조회수 20

JJ(Jujutsu)는 Git을 백엔드로 사용하며, Git의 복잡한 기능들을 단순화하여 개발 생산성을 향상시킴

Git과 달리 스테이징 영역(Staging Area)이 없어 변경 사항이 자동으로 커밋되며, 유연한 변경 관리 지원

jj rebase 명령어를 통해 커밋을 자유롭게 이동 및 수정 가능하며, 실험적인 변경도 쉽게 관리

JJ의 강력한 변경 관리 기능은 Git의 리베이스(Rebase) 및 커밋(Commit) 관리에 어려움을 겪는 개발자에게 유용함

Git과의 차이점: 스테이징 영역 부재

JJ는 Git과 달리 스테이징 영역(Staging Area)이 없어, 변경 사항이 자동으로 커밋된다. 이는 Git의 복잡한 스테이징 과정을 단순화하여 개발자가 코드 변경에 집중하도록 돕는다. 특히, `jj new` 명령어를 통해 새로운 변경을 생성하고, `jj describe` 명령어로 커밋 메시지를 추가하는 방식은 Git의 `git add`, `git commit` 과정을 대체한다. 이러한 자동 커밋 방식은 Git에 익숙한 개발자에게는 초기 학습 곡선을 요구하지만, 익숙해지면 더욱 효율적인 작업 흐름을 제공한다.

유연한 변경 관리: jj rebase, jj split, jj squash

JJ는 Git보다 훨씬 유연한 변경 관리 기능을 제공한다. 특히, `jj rebase` 명령어를 통해 커밋을 자유롭게 이동하고, `jj split`과 `jj squash` 명령어를 통해 커밋을 분할하거나 병합할 수 있다. 이러한 기능들은 Git에서 리베이스(Rebase) 및 커밋(Commit) 관리에 어려움을 겪는 개발자들에게 매우 유용하다. 예를 들어, `jj rebase`를 사용하면 여러 기능 브랜치(Feature Branch)를 손쉽게 관리할 수 있으며, `jj split`을 통해 코드 리뷰(Code Review)를 위한 작업 단위 분할이 가능하다.

JJ의 강력한 기능: jj bookmark, jj op log, jj undo

JJ는 Git에는 없는 강력한 기능들을 제공한다. `jj bookmark`는 변경(Change)에 이름을 붙여 브랜치(Branch)처럼 사용할 수 있게 해주며, `jj op log`는 모든 작업 내역을 기록하여 작업의 투명성(Transparency)을 높인다. 또한, `jj undo`와 `jj redo` 명령어를 통해 작업 내역을 쉽게 되돌리거나 다시 실행할 수 있어, 실험적인 변경(Experimental Changes)을 시도하는 데 유용하다. 이러한 기능들은 개발자가 안전하게 코드를 변경하고, 실수로부터 빠르게 복구할 수 있도록 돕는다.

Git과의 통합: jj git push, jj git fetch

JJ는 Git을 백엔드로 사용하므로, Git의 기존 원격 저장소(Remote Repository)를 그대로 활용할 수 있다. `jj git push`와 `jj git fetch` 명령어를 통해 Git 원격 저장소와 연동하며, Git의 기존 워크플로우(Workflow)를 유지하면서 JJ의 장점을 누릴 수 있다. 또한, JJ를 사용한다는 사실을 Git 사용자에게 숨길 수 있어, 팀 내에서 점진적인 도입이 가능하다. 하지만, JJ의 학습 곡선(Learning Curve)은 Git에 익숙한 개발자에게도 새로운 도전이 될 수 있다.

How I use Jujutsu