tig — улучшаем продуктивность работы с git

в 10:29, , рубрики: Git, tig, UI, Системы управления версиями

Всем привет,

хочу рассказать о консольной утилите, которая значительно увеличила мою продуктивность работы с Git, и, надеюсь, ускорит и вашу также. Называется она tig и была написана канадским программистом Джонасом Фонсека (Jonas Fonseca) ещё в далёком 2006-м году, но по настоящий день она активно развивается и поддерживается в великолепном состоянии. Я хочу показать её функционал (внимание, есть относительно тяжелые gif-ки внутри) и поделиться самыми удобными способами использования.

tig — улучшаем продуктивность работы с git - 1

Несмотря на обилие визуальных GUI для работы с git, многие разработчики всё же предпочитают работать в консоли. В git есть много средств для увеличения производительности — алиасы, автодополнение, автоматическая коррекция ошибок и т.д., но всё же многие рядовые действия, такие как навигация по истории коммитов, анализ diff-ов, просмотр git blame и прочее — отнимают прилично времени и не всегда удобны.

Установка

Установка подробно описана в документации на главной странице проекта.
Если вы работаете в MacOS, то tig доступен через Homebrew:

 brew install tig

В Linux она тоже доступна для всех основных репозиториев:

apt-get install tig
yum install tig

Для остальных вариантов, стандартная схема — скачать исходный код (из релизов или через git clone и выполнить make && make install. Это подробно описано в ссылке выше.

Использование

Вот коротенькое демо того, как выглядит интерфейс при запуске команды tig из директории репозитория:

tig — улучшаем продуктивность работы с git - 2

В целом, как и следует ожидает от графического (пусть и текстового) интерфейса, но использование программы достаточно интуитивное, но всё же для начала нужно узнать несколько базовых сочетаний клавиш, на которых вся работа с программой и строится.

Главная клавиша это — h: показать окно помощи :)

tig — улучшаем продуктивность работы с git - 3

Как видим, есть несколько режимов (views) — главный, режим просмотра diff-ов, режим лога, режим просмотра дерева файлов, blame режим, просмотр текущего статуса и т.д.

Между всеми этими режимами переключаться довольно просто, обычно достаточно стрелочками (или j/k) выбрать нужную запись в логе или файл и нажать Enter, либо, как, например, в случае с blame — соответствующую клавишу (b).

Режимы отображаются либо на весь экран либо в dual-split режиме. Последний бывает либо горизонтальный, либо вертикальный — программа сама выбрает его в зависимости от соотношения сторон терминала, и умеет обновлять на лету. Чтобы закрыть текущий режим (и вернуться к предыдущему) — просто нажимаем q (quit). Чтобы, наоборот, развернуть окно с текущим режимом на полный экран — O. Переключаться между режимами в dual-split режиме — Tab.

В режиме просмотра diffочень удобно увеличивать количество строк сверху и снизу изменённой строки с помощью [ и ] (уменьшить и увеличить, соответственно):

tig — улучшаем продуктивность работы с git - 4

Также в программе есть функция поиска по файлам (ggrep), поиска в окне (/), открытия файла во внешнем редакторе (e) и, в целом, интерфейс будет особенно комфортен тем, кто знаком с vim. Например, с помощью : можно вводить различные команды, переходить к нужной строке и т.д.

Drop-in замена git

Для некоторых команд tig может спокойно работать как drop-in замена git.

tig status
tig log
tig show
tig blame file
tig grep pattern
tig refs
tig stash
tig status

Также, в режиме pager-а:

git show | tig

Конфигурация

tig достаточно гибкий в плане настройки — у него есть файл конфигурации (путь к которому также можно конфигурировать через TIGRC_USER) — ~/.tigrc и поддержка readline.

Можно создавать свои собственные команды. Например, следующая команда копирует ID коммита в буфер обмена на MacOS X:

bind generic 5 !@sh -c "echo %(commit) | pbcopy"

У проекта отличная документация, больше о расширении функционала можно прочесть в ней.

Заключение

tig это одна из тех утилит, которые ускорили мою продуктивность ежедневной работы с git очень значительно. Не переключаясь между окнами, из терминала вы получаете очень удобный и интуитивный интерфейс для быстрой навигации по истории и изменениям вашего git-репозитория.

Программа написана на C и работает чудовищно быстро, что всегда приятно, особенно на больших репозиториях.

Ссылки

Автор: imrobot2002

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js