📒

【Jujutsu】個人的に使いそうなコマンドチートシート

に公開
個人的によくやる操作

頻出コマンド

コマンド 説明
jj new 新しい作業を開始
jj log コミット履歴を表示
jj diff 現在の変更を表示
jj diff -r <rev> 特定のリビジョンの変更を表示
jj describe -m "説明"
jj desc -m "説明"
リビジョンに説明を追加
jj restore
jj restore --from main
現在の変更をすべて破棄。
--fromで指定のリビジョンに状態を戻せる

履歴の編集

コマンド 説明
jj split -i -m "説明" TUIを使用して選択された変更を別のリビジョンに分割できる
jj squash --into <rev> -i 現在の変更を特定のリビジョンに統合する。
-iでTUIを使用してインタラクティブに選択できる。
jj rebase -d <main>
jj rebase -b <bookmark> -d <main>
現在の作業を指定のブックマークの先頭に移動させる。
-b<bookmark><main>の最新に移動させる。

Git操作関連

コマンド 説明
jj bookmark set <bookmark>
jj b set <bookmark>
現在のリビジョンに既存のブックマークを移動する。
もしブックマークがなければ新しく作成する。
-rを付ければ、指定のリビジョンに移動できる。
-Bを付ければ、過去のリビジョンに戻せるようになる。
jj git push 現在作業中のブックマークをリモートにプッシュ
jj git push -b <bookmark> 指定のブックマークをリモートにプッシュ
jj git fetch Gitリモートリポジトリからデータを取得

セットアップ

コマンド 説明
jj config set --user user.name <name> ユーザー名の設定
jj config set --user user.email <email> メールの設定
jj git clone <repository> Gitリポジトリをバックエンドとして使用して、
既存のリモートリポジトリをクローンする
jj git init --colocate 既にローカルにあるGitリポジトリで
Jujutsuを利用できるようにする

基本的なワークフロー

# 1.作業開始
jj new

# 2.ファイルを編集(自動でトラッキング)

# 3.状態確認
jj st
jj diff

# 4.必要に応じて分割
jj split -i
jj desc -r '@-'

# 5.説明追加
jj desc

# 6.次の作業へ
jj new

リモートへの反映ワークフロー

# 1.最新環境を取得
jj git fetch

# 2.作業開始
jj new main

# 3.いろいろ作業する
# ...

# 4.ブックマーク作成
jj bookmark set feature/xxx

# 5.リモートに現在の作業環境をプッシュ
jj git push

基本操作

コマンド 説明
jj status
jj st
現在の作業状態を確認
jj log コミット履歴を表示
jj diff 現在の変更を表示
jj diff -r <rev> 特定のリビジョンの変更を表示
jj show <rev> 特定のリビジョンの詳細(説明 + diff)
jj restore
jj restore --from main
現在の変更をすべて破棄。
--fromで指定のリビジョンに状態を戻せる

作業の開始・切り替え

コマンド 説明
jj new 新しい作業を開始
jj new -m "説明" 新しい作業を開始するときにコメントを追加
jj edit <rev> 編集対象を特定のリビジョンに移動
jj describe -m "説明"
jj desc -m "説明"
リビジョンに説明を追加
jj commit jj describejj newを同時に行う。
-mを付けない場合、説明記述用のエディタが開く。

履歴の編集

コマンド 説明
jj squash --into <rev> -i 現在の変更を特定のリビジョンに統合する。
-iでTUIを使用してインタラクティブに選択できる。
jj split -i TUIを使用して選択された変更を別のリビジョンに分割できる
jj abandon <rev> 指定のリビジョンを削除できる
jj rebase -d <main>
jj rebase -b <bookmark> -d <main>
現在の作業を指定のブックマークの先頭に移動させる。
-b<bookmark><main>の最新に移動させる。

ブックマーク操作

コマンド 説明
jj bookmark set <bookmark> 現在のリビジョンに既存のブックマークを移動する。
もしブックマークがなければ新しく作成する。
-rを付ければ、指定のリビジョンに移動できる。
-Bを付ければ、過去のリビジョンに戻せるようになる。
jj bookmark delete <bookmark> 指定のブックマークを削除。
リモートブックマークも一緒に削除される。
現在作業中のリビジョンは破棄されない。
jj bookmark rename <old> <new> 指定のブックマークの名前を変更
jj bookmark track <main@origin> リモートブックマークをローカルで追跡
jj bookmark list 現在存在するブックマークのリストを表示
jj bookmark list --all リモートブックマークも含めたリストを表示

Git操作

コマンド 説明
jj git clone <repository> Gitリポジトリをバックエンドとして使用して、
既存のリモートリポジトリをクローン
jj git init --colocate 既にローカルにあるGitリポジトリでJujutsuを利用できるようにする
jj git fetch Gitリモートリポジトリから最新データを取得
jj git push 現在作業中のブックマークをリモートにプッシュ
jj git push -b <bookmark> 指定のブックマークをリモートにプッシュ
jj git remote rename <old> <new> Gitリモートリポジトリの名前を変更
jj git remote remove <remote> 指定のGitリモートリポジトリを削除

リビジョンの指定方法

記法 意味
@ 現在のワーキングコピー
@- 現在の親
@-- 二つ前
root() ルートコミット
heads() すべてのhead
<rev1>::<rev2> rev1からrev2までの範囲

復元・取り消し

コマンド 説明
jj op log 操作履歴を表示
jj op restore <op> 特定の操作時点に復元
jj undo 直前の操作を取り消し

セットアップ

コマンド 説明
jj config set --user user.name <name> ユーザー名の設定
jj config set --user user.email <email> メールの設定
jj git clone <repository> Gitリポジトリをバックエンドとして使用して、
既存のリモートリポジトリをクローンする
jj git init --colocate 既にローカルにあるGitリポジトリで
Jujutsuを利用できるようにする
jj config set --repo snapshot.max-new-file-size "100MiB" 開発環境にスナップショット(自動保存・管理)可能な最大ファイル容量を設定
jj config set --user snapshot.max-new-file-size "100MiB" 個人設定にスナップショット(自動保存・管理)可能な最大ファイル容量を設定

Discussion