2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【2025年版】gitリポジトリ互換バージョン管理システム jujutsu の導入と基本的な使い方

Posted at

Jujutsu (コマンド名jj) は、Google所属の開発者によって開発された新しいバージョン管理システム (VCS) で、以下のような特徴があります。

  • Git互換: 既存のGitリポジトリをそのまま扱え、Gitコマンドとの連携も可能
  • シンプルで強力: Gitよりも直感的で効率的なブランチ操作、コンフリクト(競合)解決機能が特徴
  • 効率的な履歴管理: 「コミットを巻き戻す」「コミットを統合する」といった操作が非常に簡単

対象読者

  • jj の使い方の概要が知りたい
  • git によるバージョン管理を行っている
  • git の最低限の使い方と概念を知っている
  • シェル(黒い画面)によるコマンド操作ができる

インストール方法

Windowsの場合

winget install jj-vcs.jj -h

UNIX 系 OS の場合

cargo install --locked --bin jj jj-cli

インストールの確認

jj --version
jj 0.36.0-70fd8f7697fbc20a9329a6e2f790ef86a8e284d1

初期設定

jj config set --user user.name "YOUR_GIT_USER_NAME"
jj config set --user user.email "YOUR_GIT_MAIL_ADDRESS"

jujutsu 特有の概念「チェンジ」と「ブックマーク」

「チェンジ」とは

jujutsu においてタスクを示す単位です。以下のような特徴があります。

  • コミットの可変性: コミットの内容を修正しても、その「チェンジ」自体の ID(Change ID)は変わりません。そのためコミットの履歴を柔軟に書き換える(編集、分割、結合など)ことが容易になっています
  • ID の永続性: Git ではコミット内容が変わるとコミットハッシュ(ID)も変わってしまいますが、jujutsu のチェンジ ID は変更後も永続するため、特定の変更を継続して追跡・参照できます
  • ブランチレスワークフロー: jujutsu はデフォルトでブランチに依存しないワークフローを特徴としており、この「チェンジ」を連鎖させて履歴を管理します

これらの特徴によって、チェンジの中身を何度書き換えても「タスクのID」が変わらないため、Gitのようにリベースのたびにコミットを探し直す手間がありません。

「ブックマーク」とは

Gitでいうstashtagの機能と、ブックマークの「印をつけて後で見返す」という概念を組み合わせたもので、jujutsu の強力な変更履歴管理をより便利に使うための「目印」です。

  • stash不要: jujutsu では作業中の変更は常に管理されているため、stash のような一時的な保存操作を意識せずに、ブックマークで「後で戻る場所」をマーキングする感覚で使えます

簡易コマンドリファレンス

既存 git リポジトリで jj の開始

jj git init --colocate

git リポジトリを clone する

jj git clone <リポジトリURL>

編集中のチェンジにメッセージをつける

jj describe -m "CHANGE_MESSAGE"

別のチェンジに変更する
チェンジ名とメッセージをオプションとして指定できます。

jj new [<CHANGE_ID_PREFIX>] [-m "MESSAGE"]

リポジトリに対する操作を取り消す

jj undo

名前をつけて先頭のチェンジにブックマークを作成する

jj bookmark create BOOKMARK_NAME -r -@

リモートのブックマークを取り込む

jj bookmark track BOOKMARKNAME@origin

チェンジログのアスキーアートによる表示1
@は現在の作業中のチェンジを指します。

jj [log]
@  qpvvtrwt hidao@example.com 2025-01-01 12:00:00.000 +09:00 48820c78
│  (empty) CHANGE_MESSAGE
◉  zzyyxxww hidao@example.com 2024-12-31 10:00:00.000 aabbccdd
│  initial commit

コンフリクトの捜索・解決2

jj new <マージ元のチェンジID1> <マージ元のチェンジID2>
jj status
(衝突を解決)
jj describe -m "マージ完了の説明"

リポジトリをgit pushする

jj git push

リポジトリをgit fetchする

jj git fetch

謝辞

@gony さんの記事「バージョン管理システム Jujutsuを推す」から引用させていただいています。ありがとうございます!

  1. バージョン管理システム Jujutsuを推す #vcs - Qiita|「jj」節

  2. バージョン管理システム Jujutsuを推す #vcs - Qiita|「衝突解決」節

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?