Как перестать страдать при просмотре диффов в терминале

23 июн 2026
9,384
308
16
1 неделя

Знакомая ситуация: вы запускаете git diff, и перед глазами пролетает бесконечная простыня текста. Если изменений много, ориентироваться в этом месиве из плюсов и минусов становится физически больно. Конечно, есть отличные инструменты вроде Delta или Difftastic, которые подсвечивают синтаксис и делают вывод чище. Но они всё равно остаются просто «улучшенными пейджерами». Они не дают ощущения полноценного ревью, где можно быстро переключаться между файлами или видеть контекст целиком.

Недавно я наткнулся на проект hunk. Это терминальный вьюер диффов, который пытается перенести опыт полноценного код-ревью прямо в консоль. Вместо того чтобы просто вываливать текст, он строит интерактивный интерфейс с боковой панелью, навигацией и даже поддержкой ИИ-комментариев.

Что это такое и зачем оно нужно

Hunk — это TUI-приложение (Terminal User Interface), написанное на TypeScript. Его основная задача — сделать просмотр изменений интерактивным. Если обычный git diff заставляет вас скроллить экран за экраном, то здесь вы получаете полноценное рабочее пространство.

Проект пригодится тем, кто проводит много времени в терминале и не хочет каждый раз прыгать в браузер или тяжелую IDE только для того, чтобы посмотреть, что там изменилось в последнем коммите. Особенно интересно hunk выглядит в связке с ИИ-агентами, которые сейчас активно пишут код за нас.

Главные фишки, которые меня зацепили

В инструменте реализовано несколько идей, которых мне давно не хватало в стандартных консольных утилитах.

Реклама

Интерактивная навигация и слои

В левой части экрана находится сайдбар со списком измененных файлов. Можно кликать мышкой или перемещаться стрелками. Это моментально решает проблему «потерялся в огромном диффе». Справа — само содержимое. Причем раскладку можно менять на лету: раздельный вид (split), когда старая и новая версии кода стоят рядом, или стек (stack), где изменения идут друг под другом.

 <br />
 <sub>Раздельный вид с сайдбаром и заметками ИИ</sub>
 <br />
 <sub>Вертикальный стек и меню с поддержкой мыши</sub>

Живое обновление

У команды есть флаг --watch. Если его запустить, hunk будет следить за файловой системой или состоянием Git и обновлять картинку в реальном времени. Это удобно, когда вы правите код и хотите сразу видеть, как меняется дифф, не перезапуская команду постоянно.

Дружба с ИИ-агентами

Разработчики hunk явно делают ставку на будущее, где код пишут не только люди. В утилите есть поддержка аннотаций от агентов. Если вы используете ИИ для генерации патчей, hunk может отображать его пояснения прямо в коде, рядом с измененными строками. Выглядит это как нативные комментарии в GitHub.

Поддержка разных VCS

Помимо привычного Git, инструмент из коробки понимает Jujutsu (jj) и Sapling (sl). Он автоматически определяет, в каком воркспейсе вы находитесь, и использует родные для этих систем команды для получения списка изменений.

Как это работает под капотом

Проект построен на базе OpenTUI — это библиотека для создания интерфейсов в терминале, и Pierre diffs для обработки самих различий в тексте. Выбор TypeScript для системной утилиты может показаться спорным, но это дает возможность легко расширять инструмент и использовать богатую экосистему JS для парсинга кода.

Для установки достаточно выполнить:

npm i -g hunkdiff
# или через brew
brew install modem-dev/tap/hunk

Как использовать в реальной жизни

Самый простой способ — заменить стандартный пейджер Git. После этого любой git diff будет открываться в красивом интерфейсе hunk.

git config --global core.pager "hunk pager"

Но мне больше нравится использовать его как отдельную команду для вдумчивого просмотра. Например, чтобы глянуть, что вы там наворотили в последнем коммите:

hunk show HEAD

Или сравнить два конкретных файла, если вы занимаетесь рефакторингом:

hunk diff old_logic.ts new_logic.ts --watch

Кстати, если вы работаете с патчами из стандартного ввода, hunk умеет подхватывать и их:

git diff --no-color | hunk patch -

Стоит ли пробовать

Hunk точно понравится тем, кто ценит эстетику и удобство TUI. Он не такой быстрый и легковесный, как классический diff, но он и не пытается им быть. Это именно инструмент для ревью.

Кому он подойдет:

  • Разработчикам, которые часто работают на удаленных серверах по SSH.
  • Тем, кто устал от бесконечного скроллинга в терминале.
  • Энтузиастам, которые экспериментируют с ИИ-агентами для написания кода.

Из минусов я бы отметил необходимость наличия Node.js в системе, что для некоторых может быть критично. Также проект пока не поддерживает структурный дифф (как Difftastic), он ориентирован скорее на визуальное представление и навигацию. Но даже в текущем виде это отличный шаг вперед по сравнению с голым текстом в консоли.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.