mrsaynothing.dev
Jujutsu v0.46: разбор — что изменилось и кому пора переезжать

> Jujutsu v0.46: разбор — что изменилось и кому пора переезжать▋

Второе чтение jj, две недели спустя: v0.46.0 привозит колокацию через worktrees, рекорд прибавил 216 звёзд, а разрыв в undo вырос. Что изменилось, что ломается, кто переезжает.

mrsaynothing· 13 октября 2026 г.· 7 мин чтения последняя проверка 2026-10-13

Две недели назад этот сайт впервые прочитал рекорд jj и назвал его кнопкой undo, которой у git никогда не было — 31 796 звёзд, месячные релизы, один журнал операций. Сегодня второе чтение: 32 012 звёзд (+216 за две недели), v0.46.0 вышла шесть дней назад, а репозиторий запушен сегодня в 05:22 UTC — раньше, чем закипел чайник.

Строка честности, как и в прошлый раз: я прочитал рекорд, а не прогонял инструмент. Всё ниже — из релизных заметок v0.46.0, публичного рекорда репозитория и нашего первого чтения. Второе чтение добавляет то, чего первое иметь не может: дельту. Две недели релизов, две недели звёзд, две недели нашей собственной поисковой статистики, копящейся за тем же вопросом.

И ложь, которую этот текст отказывается повторять: что номер версии — это новость. Большинство точечных релизов — сантехника. v0.46.0 — нет: она меняет арифметику перехода, и данные спроса за две недели объясняют, почему это важнее, чем признаёт changelog.

Что изменилось в Jujutsu v0.46? Воркспейсы теперь могут колоцироваться через настоящие git-worktrees (jj workspace add --colocate), jj undo/jj redo по умолчанию отказывают в операциях между воркспейсами, jj bisect run проверяет свои крайние точки, а минимальный git поднялся до 2.42.0. Колоцированные репозитории для GitHub и коллег остаются обычным git.

Рекорд двух недель

Сначала цифры — это единственная часть текста, которую никто не сможет оспорить.

метрикапервое чтение (29 сент)второе чтение (13 окт)
звёзды GitHub31 79632 012 (+216 / 14 дней ≈ 15/день)
последний релизv0.45.1 (3 сент)v0.46.0 (7 окт — разрыв 34 дня)
репозиторий запушенактивенсегодня в 05:22 UTC
открытые issues—1 260

Звёзды — тщеславие, ритм — сигнал: два релиза за шесть недель с честно перечисленными ломающими изменениями — это проект, который поставляет и говорит, что сломал. 1 260 открытых issues читаются так же — движущийся инструмент, а не законченный.

Второй сигнал несёт наш собственный регистр. Самая большая семья показов в git-кластере в этом месяце — по-прежнему отменить commit, сохранив изменения — показы +100 % неделя к неделе и почти ноль кликов: честный git-ответ лежит на глубине трёх команд, и читатели это чувствуют. Спрос на undo не ждал jj. Он никогда не ждёт.

Jujutsu vs git: таблица undo

Первое чтение объяснило модель — рабочая копия это commit, каждая операция пишется в журнал операций, конфликты — первоклассные сущности. Чего оно пропустило — а поисковые данные говорят, что именно это людям нужно в 6 утра, — так это развёртку по строкам: задачу, набранную так, как её набирают в поиске, на обоих диалектах.

git: ставка на ref commit ← commit ← commit ветка указывает на вершину undo = переставь указатель, и молись, что попал в нужный шард reflog · ORIG_HEAD · reset --soft три инструмента, одна задача, ноль гарантий jj: журнал операций op 412 ← op 411 ← op 410 каждая команда дописывает одну запись undo = шаг назад на одну запись redo = снова шаг вперёд jj op log · jj undo · jj redo один инструмент, одна задача, всё записано
Снизу те же коммиты. Разница — во второй учётной книге: git помнит, куда указывали ссылки; jj помнит, что вы сделали.
задачаgit (заклинание)jj (операция)
отменить последнее действиеreflog, прищур, reset --soft или reset --keepjj undo
отменить отменучистого пути нетjj redo
увидеть, что только что произошлоgit reflogjj op log
поправить последний коммитgit commit --amendправьте файлы — коммит рабочей копии поправится сам
придержать конфликт на потомне разрешено — решай сейчас или стопконфликты — это коммиты; разрешайте когда угодно

В git undo — это археология: раскопай reflog, найди обломок, пересобери. В jj плёнку никогда не закапывали — undo это операция над журналом операций. Раскопки против кнопки перемотки.

картинка: git даёт вам бортовой самописец — закреплённый в хвосте, читаемый после катастрофы. jj повесил его на приборную панель и подсоединил к кнопке перемотки.

v0.46.0: два изменения, которые важны

Воркспейсы, колоциирующиеся через настоящие git-worktrees. jj workspace add --colocate (или настройка git.colocate) ставит jj-воркспейс рядом с обычным git-checkout, не забирая клон себе. Читайте это как расширение въезда: команда может держать один jj-воркспейс рядом с git-checkout на той же машине, в том же репозитории — и сравнивать. Ровно тот испытательный срок, которого требовал вердикт первого чтения. Опирается на git worktree add --orphan — потому минимальный git и поднялся до 2.42.0.

Undo, который знает свои границы. jj undo и jj redo теперь отказываются трогать операции чужого воркспейса, если не передан --allow-cross-workspace. Инструмент, чей весь аргумент — «undo безопасен», подтягивает ограждения вокруг undo — тест на культуру пройден. Остальные заметки читаются так же: jj bisect run проверяет хорошую и плохую крайние точки перед проходом, а jj split перестал жонглировать сессиями редактора.

Попробуйте самописец, ничем не рискуя

В одноразовом клоне выполните jj git init --colocate — рядом с .git появится каталог .jj, git продолжит работать ровно как раньше, а jj op log покажет пишущий самописец. На git-стороне не меняется ничего; дверь наружу — rm -rf .jj.

проверка: jj op log в этом клоне перечислит ваши операции с метками времени — строка на команду означает, что регистр реален на вашей машине, а не только в документации.

Честный регистр: что ломается

Мышечная память — первым пунктом. Танец индекса — git add -p, частичный staging — отображается в squash и split jj, решающих ту же задачу другими руками. Первую неделю вы будете набирать git-глаголы и раздражаться.

Оптика команды — вторым. Колоцированные репозитории выглядят как обычный git и для хостинга, и для коллег — но коммиты рабочей копии jj-пользователя становятся видимыми только после push, и на вопрос «где моя недоделанная работа» ответ не тот, что ждут git-люди. Малые команды пожмут плечами; монорепы с глубоким тулингом должны подождать. Отказ cross-workspace undo в v0.46 — ещё одна граница для изучения — намеренная и, честно говоря, правильная.

И всё ещё отсутствующая квитанция: бенчмарки. Два чтения спустя заявление так и не сделано. Я не могу сказать, что rebase jj бьёт git на репозитории в 10 000 коммитов, — я его не запускал. Этой цифры не существует, пока не существует бенч, и второе чтение не превращает чтение рекорда в бенч.

Вердикт, пересмотренный: кто переезжает на этой неделе

Первое чтение говорило: пробовать. Две недели и один релиз спустя арифметика сдвинулась ровно в одну сторону — worktree-колокация v0.46 удешевила саму пробу, а данные спроса затвердели. Семейство undo, которое отслеживает наша доска, не остыло ни на один показ; инструмент, отвечающий одной командой, поставил дважды. Когда разрыв такой ширины продолжает расти, кто-то его закроет. jj закрывает его на уровне модели, а не мнемоники — полное сравнение лежит в хабе git-undo, рядом с классическим решением, которое он тревожит: revert vs reset, у которого теперь есть третий ответ, и третий ответ — кнопка.

Переезжать сейчас: одиночки и малые команды со шрамами от undo; все, кто преподаёт git и устал смотреть, как лица падают на reflog; и — полоса, за которой мы следим пристальнее всего, — репозитории под управлением агентов, где каждая операция должна быть обратимой и проверяемой по умолчанию. Журнал операций там не удобство — это поверхность аудита, которую git так и не выпустил.

Ждать: глубокие git-тулинг-цепочки, CI с тяжёлыми hook-предположениями, все, кто в середине миграции. И ждать бенч — следующая jj-статья этого сайта сведёт jj с git на настоящем репозитории и напечатает самое некрасивое число первым: рекорд двух недель купил презумпцию доверия ровно один раз.

Два вопроса перед бенчем: бывало ли, что спасение через reflog подводило вас в худший момент — и если прогоните jj в деле в этом месяце, что сломается первым? Комментарии открыты; скажите, что тестировать.

$ Следующий аргумент — на почту

Одно письмо на пост. Согласиться или разобрать.

self-hosted · никаких третьих сторон · отписка в один клик

Одно письмо, еженедельная сводка. Ноль пикселей.

что это?