コンテンツにスキップ

Jujutsu(jj)

Jujutsuとは

Jujutsu(じゅじゅつ、略称:jj)はGitと連携して動作するバージョン管理システムである。

Gitの持つ強力な履歴管理機能を活かしつつ、

  • 操作を簡単にする

  • 履歴整理を楽にする

  • コンフリクト処理を改善する

ことを目的として開発されている。


Gitとの関係

JujutsuはGitの代替というより

Gitの上で動くフロントエンド

に近い存在である。


構成イメージ

ユーザー
 ↓
Jujutsu (jj)
 ↓
Git Repository

そのため

GitHub
GitLab
Bitbucket

などもそのまま利用できる。


なぜ作られたのか

Gitは非常に高機能だが、

  • コマンドが複雑

  • Rebaseが難しい

  • 履歴整理が面倒

  • Detached HEAD問題

などの課題がある。


Jujutsuは

Gitの強みを維持しながら
使いやすさを向上させる

ことを目指している。


主な特徴

コミット忘れが起きにくい

Gitでは

git add
git commit

が必要である。


Jujutsuでは

jj describe

などを使いながら作業を進める。


変更は常に作業コミットとして管理される。


Undoが簡単

Gitでは

git reset
git revert

などを使う。


Jujutsuでは

jj undo

で直前操作を戻せる。


初心者でも扱いやすい。


Rebaseが強力

履歴の整理が非常に簡単。


Git

難しい

Jujutsu

比較的わかりやすい

インストール

Windows

winget install Martinvonz.Jujutsu

確認

jj --version

リポジトリ作成

新規作成

jj git init

既存Gitを利用

jj git init --colocate

状態確認

jj status

Gitの

git status

に相当する。


履歴確認

jj log

特徴

グラフ表示が見やすい

@  現在
○
○
○

コミットメッセージ変更

jj describe

現在のコミットに説明を付けられる。


新しい変更作成

jj new

新しい作業コミットを作成する。


変更内容確認

jj diff

Gitの

git diff

に近い。


Push

GitHubへ送信

jj git push

Pull

取得

jj git fetch

その後

jj rebase

などで同期する。


Undo

Jujutsu最大の特徴の一つ。


jj undo

間違ってrebaseした
↓
undo
↓
元に戻る

ブランチ

Jujutsuでは

Bookmark

という概念を使う。


作成

jj bookmark create main

一覧

jj bookmark list

GitHubとの相性

非常に良い。


利用可能

  • GitHub

  • GitHub Actions

  • Pull Request

  • GitHub Pages


そのため

Aster

のようなプロジェクトでも問題なく利用できる。


Gitとの比較

項目 Git Jujutsu
普及率 非常に高い 低い
学習資料 多い 少ない
操作性 やや難しい 比較的簡単
履歴整理 難しい 強力
Undo 面倒 簡単

メリット

  • Gitより扱いやすい

  • Undoが強力

  • Rebaseしやすい

  • GitHub利用可能

  • 履歴整理が簡単


デメリット

  • 利用者が少ない

  • 情報が少ない

  • チーム全員が理解する必要がある


Asterでの活用

Asterでは

  • STM32ファームウェア

  • KiCad設計データ

  • MkDocsドキュメント

  • Node.jsコード

などを管理できる。


個人開発であれば

Gitより快適

と感じる場面も多い。


Gitとどちらを使うべきか

初心者

Git

がおすすめ。

資料が圧倒的に多い。


Gitに慣れている

Jujutsu

を試す価値がある。


チーム開発

まずはGitを理解した方がよい。


まとめ

Jujutsu(jj)はGitと連携して動作する次世代のバージョン管理ツールである。

  • Gitリポジトリをそのまま利用できる

  • 履歴整理がしやすい

  • Undo機能が強力

  • GitHubと連携可能

  • 個人開発との相性が良い

Gitの複雑さに悩んでいる場合、有力な選択肢の一つである。