■ сначала ответ

jj записывает каждую операцию в op-журнал; jj undo отматывает неудачный rebase или reset — reflog гита выручает только коммиты.

Хранилище по умолчанию совместимо с гитом: один клон, оба инструмента — remotes, форжи, CI продолжают работать.

Архив говорит: попробуйте колокализованно на побочном проекте; никакой миграции-взрыва — это 0.x, ломающие изменения ездят на месячных релизах.

ДВЕ ЛЕНТЫ

Нажимайте операции. Лента коммитов (git) и лента операций (jj) пишутся бок о бок — потом попробуйте отмотать последнюю.

ленты пусты — нажмите операцию.

GIT · reflog — коммиты, ~90 дней

    у reflog нет собственного мнения о последовательности команд, породившей заварушку — обратную команду выбираете вы сами: reset? revert? cherry-pick?

    JJ · op-журнал — каждая операция

      «раз записано всё, ту ошибку, что вы только что сделали, отменить легко» — строчка из самого README. jj op log · jj undo.

      История undo у гита предполагает, что вы выберете правильную команду. У jj — что не выберете.

      ЧТО ТАКОЕ JJ, ПО АРХИВУ

      jj — VCS-система, совместимая с гитом: 31 796 звёзд на GitHub, 376 участника, первый релиз декабрь 2020, релиз каждый месяц с тех пор

      от v0.35 (ноябрь 2025) до v0.45.1, сентябрь 2026: двенадцать релизов, как по часам.

      «Совместимый с гитом» — именно это люди упускают: jj использует git-репозиторий как хранилище по умолчанию — коммиты и файлы живут в формате гита. Клонирование, remotes, форжи и CI продолжают работать.

      Поиск «jujutsu против git» задает неверную рамку: jj — это новый интерфейс, прикрученный к хранилищу, которому вы уже доверяете.

      (Meta поставила на Sapling ровно наоборот — своё хранилище — и платит за это больше со стороны git-экосистемы.)

      КОНФЛИКТЫ, КОТОРЫЕ МОЖНО ЗАКОММИТИТЬ

      Да — конфликты тут объекты первого класса, и это важнее сюжета про undo. Гит считает конфликт слияния временным состоянием рабочего дерева: решай сейчас или откатывай.

      jj хранит конфликты в истории: конфликтный коммит может существовать, быть закоммиченным и даже запушенным.

      Решить позже; jj разносит исправление каждому потомку — тот же механизм, что ребейзит вашу стопку.

      «Стыкованные PR с мультиветочными rebase — без усилий. Конфликты — настоящие вещи в истории, к которым можно вернуться позже. Всё коммитится автоматически, так что я не теряю работу от неудачного reset/stash pop.» — hellcow, Hacker News про привычки jj (236 очков)

      Эта последняя фраза — та самая: рабочая копия jj сама есть коммит, поправляемый при каждом изменении.

      Stash не нужен, потому что прятать нечего — переключение ветки несёт вашу работу в виде коммита.

      Другой новообращённый на работе, где правит голый git: «ни одной проблемы.»

      ЧТО АРХИВ ГОВОРИТ ПРОТИВ JJ

      ПЕРЕХОДИТЬ ЛИ?

      Вердикт и черта честности: я прочёл архив, не запускал.

      Каждое число и цитата здесь — из репозитория, его README и треда Hacker News — не из моего терминала.

      На что архив указывает: попробуйте jj колокализованно на побочном проекте — один клон, оба инструмента, ноль миграции. Git-знания переносятся; команды принимают по одному человеку, раз jj пушит обычные git-коммиты.

      Чего он не указывает: миграция-взрыв устоявшейся команды или доверие 0.x-инструменту над критичной к релизам автоматизацией до периода прикрепления и вылёживания.

      Пропасть undo реальна, дизайн когерентен, интероперабельность снимает отговорку — остаётся привычка.

      Ты обменял бы выходные мышечной памяти на журнал undo, покрывающий сам инструмент?

      И честно — когда вы в последний раз теряли работу из-за reset? Reflog вытащил всё?

      ■ честный штамп я прочёл архив, не запускал. Проверено на: публичный архив — jj v0.35 → v0.45.1 · reflog git 2.4x. Записано 2026-09-29, обновлено 2026-10-04. Звёзды, участники, частота релизов, оговорка про bookmarks, обе цитаты из HN и строчка README взяты из репозитория, его README и приложенного публичного треда. Две ленты выше — проект диаграммы, не бенчмарк — они показывают, что записывает каждый журнал; никаких замеров времени.

      конец двух лент · ничего не fetched · всё локально