コンテンツにスキップ

Jujutsu

提供: ArchWiki
2026年10月2日 (金) 05:39時点におけるKgx (トーク | 投稿記録)による版 (英語版から転載)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)


Jujutsu (一般的に jj と呼ばれています) は、Rust で書かれた最新の Git 互換バージョン管理システムであり、Git よりもシンプルでパワフルさを目指して作られています。

インストール

jujutsu パッケージをインストールします。

グラフィカルフロントエンド

Community-built tools around Jujutsu(Jujutsu 周辺のコミュニティ製ツール)もあわせて参照してください。

  • gg — バージョン管理システム Jujutsu 向けのGUI。
https://github.com/gulbanana/gg || gg-jujutsuAUR
  • jjui — Jujutsu バージョン管理システムと対話するために設計されたTUI。
https://github.com/idursun/jjui || jjuiAUR
  • jj-fzf — fzf をベースにし、jj log を中心として一般的な操作のキーバインドを備えたテキストUI。
https://github.com/tim-janik/jj-fzf || jj-fzfAUR
  • lazyjj — jujutsu/jj 向けのTUI。
https://github.com/Cretezy/lazyjj || lazyjj

便利なツール

Jujutsu は、差分表示(diff viewing)、差分編集(diff editing)、マージなどのタスクに対して代替ツールを使用するように設定できます。Git 向けに作られたツールの多くは Jujutsu もサポートしています。以下のツールは Jujutsu を直接または間接的にサポートしているため、そのまま使用するか、Jujutsu の設定ファイルを簡単に調整するだけで利用できます。

コンフリクトの解決

  • KDiff3 — KDE デスクトップ向けのファイルおよびディレクトリの diff / マージツール。
https://apps.kde.org/kdiff3/ || kdiff3
  • Meld — ファイル、ディレクトリ、バージョン管理プロジェクトを比較できるビジュアル diff / マージツール。
https://meldmerge.org/ || meld
  • Mergiraf — 増え続けるプログラミング言語やファイルフォーマットに対応した、構文を認識するGitマージドライバー。
https://mergiraf.org/ || mergiraf
  • Vimdiff — Vim に組み込まれている diff エディタ。
https://www.vim.org/ || vim

差分表示 (Diff viewing)

  • delta — 構文ハイライト機能を備えた、Rust製の diff ビューア。
https://github.com/dandavison/delta || git-delta
  • difftastic — 構文木(syntax tree)を使用してファイルを比較するツール。
https://difftastic.wilfred.me.uk || difftastic

設定

他のほとんどの VCS と同様に、コミットに添付される名前とメールアドレスを少なくとも設定する必要があります。

$ jj config set --user user.name "John Doe"
$ jj config set --user user.email "johndoe@example.com"

--user オプションを指定すると、Jujutsu はグローバル設定ファイル(~/.config/jj/config.toml に保存)にこれらの設定を書き込みます。

あるいは、jj config edit --user を実行すると、デフォルトのテキストエディタ($EDITOR/{{ic\vert{}$VISUAL}} 環境変数で定義されているか、ui.editor 設定オプションで設定可能)で設定ファイルが開きます。

その他の設定については #ヒントとテクニック を参照してください。

使い方

すべての Jujutsu コマンドは jj プレフィックスで開始します。一般的なコマンドの一覧を表示するには、次を実行します。

$ jj help

各コマンドにはヘルプページがあり、次のいずれかを使用して確認できます。

jjhelp′′subcommand′′ jj subcommand --help

-h オプションを使用すると、簡略化されたヘルプを取得できます。

リポジトリの初期化

Jujutsu はストレージバックエンドとして Git を使用するため、既存の Git リポジトリと互換性があります。バージョン 0.34.0 以降、Jujutsu はデフォルトで colocated(共存型) リポジトリを作成するため、Git と併用するための追加設定は必要ありません。 次のコマンドは、現在のディレクトリにリポジトリを初期化します。

$ jj git init

Git と同じく、オプションでリポジトリの作成先パスを引数として受け取ります。

実行すると、データを保存するために .jj および .git フォルダが作成されます。バージョン 0.38.0 の時点では、単なる jj init というコマンドは存在しません。

リモートの Git リポジトリをクローンするには、以下を使用します。

$ jj git clone

jj git init と同様に、クローンされたリポジトリのローカルコピーも colocated になります。

jj git colocation コマンドファミリーを使用すると、colocation の現在の状態を確認したり、有効化/無効化を切り替えたりできます。詳細については、Jujutsu の公式ドキュメントページ を参照してください。

リモートホストとの認証

Jujutsu はプッシュやフェッチなどのすべてのリモート操作のバックエンドで Git を使用しているため、認証タスクもすべて Git によって処理されます。バージョン 0.6.0 以降、jj git サブコマンドは Git の認証ヘルパー(credential helpers)をサポートしており、v0.30.0 以降は SSH 認証も完全にサポートしています。

そのため、Jujutsu で認証ヘルパーを使用するには、Git 側の設定を行う必要があります。手順については Git#Using git-credential-libsecret as credential-helper を参照してください。

SSH 認証の場合は、SSH 鍵を作成し、ホスティングサービスのアカウントに追加します。該当する手順はホストのドキュメントを参照してください。

ヒントとテクニック

vimdiff バックエンドとして Neovim を使用する

Jujutsu には Vim を diff エディタとして使用する --tool vimdiff オプションがありますが、Neovim は自動検出されません。nvim を代わりに使用するには、設定ファイルに以下を追加します。

~/.config/jj/config.toml
[merge-tools.vimdiff]
program = "nvim"

また、Jujutsu ドキュメントの こちら に説明されているように、独自のマージツールを追加することもできます。

参照

  • Awesome-jj - 学習資料、ツール、その他の jj 関連の厳選リスト