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 — 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: «ни одной проблемы.»
Вердикт и черта честности: я прочёл архив, не запускал.
Каждое число и цитата здесь — из репозитория, его README и треда Hacker News — не из моего терминала.
На что архив указывает: попробуйте jj колокализованно на побочном проекте — один клон, оба инструмента, ноль миграции. Git-знания переносятся; команды принимают по одному человеку, раз jj пушит обычные git-коммиты.
Чего он не указывает: миграция-взрыв устоявшейся команды или доверие 0.x-инструменту над критичной к релизам автоматизацией до периода прикрепления и вылёживания.
Пропасть undo реальна, дизайн когерентен, интероперабельность снимает отговорку — остаётся привычка.
Ты обменял бы выходные мышечной памяти на журнал undo, покрывающий сам инструмент?
И честно — когда вы в последний раз теряли работу из-за reset? Reflog вытащил всё?
конец двух лент · ничего не fetched · всё локально