今回は、Gitに被せるVCSツールであるJujutsuの、マージコンフリクトツールとしてIntelliJ IDEAを使用する方法を説明します。JujutsuにはビルトインでTUIのコンフリクト解決ツールが備わっていますが、これがまぁ めちゃくちゃ分かりづらい。私は今までにIDEA以上に直感的で使いやすいコンフリクト解決ツールを見たことがないですので、それを使いたいと思った次第です。
Table of Contents
- 普通にやってみるも・・・
- 最終的に画面は開いたが・・・
普通にやってみるも・・・
ちなみに、今回の環境はmacOS 26.5、IDEA 2026.1.2です。
少し調べてみたところ、GitのCLIで使用するための、マージ用コマンドが存在するようです。
https://www.jetbrains.com/ja-jp/help/idea/command-line-merge-tool.html
これをJujutsuの設定(~/.config/jj/config.toml)に当てはめていきます。Jujutsu側の設定は以下のページにありました。
https://docs.jj-vcs.dev/latest/config/#setting-up-a-custom-merge-tool
[ui]
merge-editor = "idea"
[merge-tools.idea]
program = "idea"
merge-args = ["merge", "$left", "$right", "$base", "$output"]
この状態で起動してみるも・・・なんかIDEA側にエラーメッセージが、、、
Error executing command 'merge': Cannot find file: /var/folders/cq/xq5tz4yx01xd26r5l74v14qm0000gn/T/jj-resolve-PiKb1j/file.txt
Jujutsu側の挙動を見るに、どうやらideaコマンドはマージの完了を待たずに終了してしまい、そのせいでマージ用の一時ファイルが削除されてしまうようです。上のドキュメントを見ると、--waitオプションを使うと待機させられると書かれているので、merge-argsを編集してみます。
[merge-tools.idea]
merge-args = ["--wait", "merge", "$left", "$right", "$base", "$output"]
すると、なにやら上部のツールバーが消滅した「Light edit mode」なる見慣れない画面が出現。しかも「merge」という名前の存在しないファイルが開かれています。なんでや
mergeと--waitを逆にしても、「--wait」という名前のファイルがmergeコマンドに渡されてしまい、引数の数が一致しない、と怒られてしまいました。
最終的に画面は開いたが・・・
最終的にたどり着いた設定はこちらです。
[ui]
merge-editor = "idea"
[merge-tools.idea]
program = "open"
merge-args = ["-Wna", "IntelliJ IDEA.app", "--args", "merge", "$left", "$right", "$base", "$output"]
Toolboxが生成するスクリプトを介さず、openコマンドでIDEAを直接開きます。openコマンドに対し-Wオプションを追加することで、開いたプログラムの終了まで待機させることができます。この状態でjj resolveを実行すると…
ついに、マージ画面が表示されました!プロジェクト外ファイル編集の確認ダイアログは表示されるものの、早速解決して「Apply」をクリックすると…
ここに来てIDE側のバグに阻まれる。
要は、UIスレッドで書き込み処理はできないよというエラーです。つまりIDEが正しく実装されていないという意味です。こればっかりは修正を待つしか無いですが、当面はマージ完了後のファイルをコピペして対応していきましょう…

