- Андрей Куманяев/
- Git: руководства и команды/
- lazygit: удобный TUI интерфейс для Git прямо в терминале/
lazygit: удобный TUI интерфейс для Git прямо в терминале
Введение в lazygit #
Для многих разработчиков работа с Git через командную строку кажется сложной и запутанной. Вы должны помнить десятки команд, флагов и синтаксиса. Однако существует более удобный способ — lazygit, это терминальный пользовательский интерфейс (TUI) для Git, который объединяет мощь командной строки с интуитивной визуальной навигацией.
lazygit — это быстрый и легковесный инструмент, написанный на языке Go, который позволяет управлять Git репозиториями без необходимости использовать мышь. Навигация осуществляется с помощью клавиатуры, что делает работу значительно быстрее, чем у GUI клиентов вроде GitHub Desktop или Sublime Merge. В то же время, lazygit намного более визуален, чем работа с чистым git CLI, что позволяет лучше понимать текущее состояние репозитория.
Инструмент работает на Linux, macOS и Windows, и его можно легко интегрировать с вашим текстовым редактором или терминальным мультиплексером. За несколько лет развития lazygit стал стандартным выбором для многих разработчиков, которые ценят эффективность и контроль над процессом разработки.
Установка lazygit #
macOS #
На macOS самый простой способ установить lazygit — использовать менеджер пакетов Homebrew:
brew install lazygit
После установки проверьте, что всё работает корректно:
lazygit --version
Вы должны увидеть номер версии, например lazygit version 0.40.0. Если Homebrew у вас не установлен, сначала установите его с сайта brew.sh.
Linux (Ubuntu/Debian) #
Для пользователей Ubuntu и Debian рекомендуется скачать последний релиз с GitHub и установить его вручную:
wget https://github.com/jesseduffield/lazygit/releases/download/v0.40.0/lazygit_0.40.0_Linux_x86_64.tar.gz
tar xf lazygit_0.40.0_Linux_x86_64.tar.gz
sudo install lazygit /usr/local/bin
Убедитесь, что версия в URL актуальна. Проверить последнюю версию можно на странице GitHub releases. Команда sudo install копирует бинарный файл в системную директорию, доступную из любого места в терминале.
Windows #
На Windows есть несколько способов установки. Самый удобный — использовать Scoop:
scoop install lazygit
Или, если у вас установлен winget (встроенный менеджер пакетов Windows 10+):
winget install JesseDuffield.lazygit
Если ни один из этих способов не подходит, всегда можно скачать готовый бинарник с GitHub и добавить его в PATH.
Проверка установки #
Независимо от способа установки, проверьте установку командой:
lazygit --version
Запуск lazygit #
Самый простой способ запустить lazygit — перейти в директорию вашего Git репозитория и ввести:
lazygit
Инструмент сразу отобразит интерфейс с текущим состоянием репозитория. Если вы находитесь в директории, которая не является Git репозиторием, lazygit попросит вас инициализировать новый репозиторий или перейти в нужную директорию.
Создание алиаса #
Для ускорения работы создайте алиас lg вместо полного названия lazygit. Добавьте следующую строку в ваш файл конфигурации оболочки:
Для Bash (файл ~/.bashrc):
alias lg='lazygit'
Для Zsh (файл ~/.zshrc):
alias lg='lazygit'
Для Fish (файл ~/.config/fish/config.fish):
alias lg='lazygit'
После добавления алиаса перезагрузите конфигурацию:
source ~/.bashrc
# или для zsh:
source ~/.zshrc
Теперь вы можете просто вводить lg вместо lazygit в любом репозитории.
Интерфейс lazygit #
Когда вы запускаете lazygit, вы видите интерфейс, разделённый на несколько панелей:
┌─────────────────────────────────────────────────────────────────┐
│ Status│Files │Branches │Commits │Stash │
├─────────────────────────────────────────────────────────────────┤
│ On branch main │ README.md │ main │ │
│ Your branch is ahead... │ src/index.js │ feature/auth │ │
│ │ src/utils.js │ develop │ │
├─────────────────────────────────────────────────────────────────┤
│ Diff view and content... │
│ │
└─────────────────────────────────────────────────────────────────┘
Основные панели #
Status (Статус) — левая верхняя панель показывает информацию о текущей ветке, состояние рабочей директории, наличие коммитов для push и другую метаинформацию.
Files (Файлы) — вторая панель слева содержит список изменённых файлов с индикаторами (M — modified, A — added, D — deleted, ?? — untracked). Здесь вы можете выбирать файлы для staging, просмотра изменений и других операций.
Branches (Ветки) — третья панель показывает все локальные и удалённые ветки. Вы можете переключаться между ними, создавать новые ветки, удалять старые.
Commits (Коммиты) — четвёртая панель отображает историю коммитов текущей ветки. Здесь вы можете просматривать детали каждого коммита, изменять сообщения, переупорядочивать коммиты.
Stash (Тайник) — правая панель показывает все сохранённые в stash изменения. Это полезно, когда вам нужно быстро переключиться на другую ветку, но вы не хотите создавать коммит.
Основные клавиши навигации #
Работа в lazygit полностью основана на клавиатуре. Вот самые важные клавиши:
Навигация между панелями #
- Tab или
Ctrl+→— переместиться на следующую панель справа - Shift+Tab или
Ctrl+←— переместиться на предыдущую панель слева Ctrl+IилиCtrl+[— переместиться в контекстное меню
Навигация в пределах панели #
- h — влево (или на предыдущий элемент в некоторых панелях)
- j — вниз
- k — вверх
- l — вправо (или на следующий элемент)
[— страница вверх]— страница вниз- Home / End — в начало / в конец списка
Эти клавиши напоминают vi/vim, поэтому если вы использовали эти редакторы, то быстро привыкнете.
Работа с файлами (Files панель) #
- Space — добавить/убрать файл из staging area (git add / git restore)
- a — добавить все изменённые файлы в staging area
- c — создать коммит (откроется редактор для сообщения)
- d — отменить изменения в файле (git restore)
- e — открыть файл в редакторе по умолчанию
Работа с ветками (Branches панель) #
- n — создать новую ветку
- Space — переключиться на выбранную ветку (git checkout)
- d — удалить ветку
- r — переименовать ветку
- u — установить upstream ветку
Работа с коммитами (Commits панель) #
- r — отредактировать сообщение коммита (reword)
- d — удалить коммит (drop)
- e — отредактировать коммит, изменить содержимое (edit)
- s — объединить коммит со следующим (squash)
- f — объединить коммит со следующим, но использовать сообщение следующего (fixup)
Общие клавиши #
?— показать справку по клавишам- q — выход из lazygit
:— открыть командное окно для ввода команд git напрямую@— открыть текущий коммит в браузере (если репозиторий на GitHub/GitLab)
Интерактивный rebase в lazygit #
Одна из самых мощных функций lazygit — это интерактивный rebase. Представьте, что у вас есть несколько коммитов, и вы хотите их очистить перед отправкой в main ветку. В lazygit это делается графически и очень интуитивно.
Процесс очень простой:
- Откройте lazygit и перейдите на панель Commits
- Выберите первый коммит, который вы хотите изменить
- Нажимите
Ctrl+rдля начала интерактивного rebase - Используйте стрелки и указанные выше клавиши для переупорядочивания и редактирования коммитов
- После завершения всех изменений нажимите Escape и подтвердите rebase
Например, если вы хотите объединить несколько коммитов в один, вы просто выбираете целевые коммиты и нажимаете s (squash) или f (fixup). lazygit автоматически создаст правильный rebase скрипт и выполнит операцию.
Интеграция с Neovim #
Если вы используете Neovim, вы можете интегрировать lazygit как плавающее окно. Добавьте следующую конфигурацию в ваш файл init.lua:
local map = vim.keymap.set
-- Открыть lazygit в плавающем окне
map('n', '<leader>lg', function()
vim.fn.system('lazygit')
end, { noremap = true, silent = true })
Или для более продвинутой интеграции с плавающим окном используйте плагины вроде nvim-toggleterm или toggleterm.nvim:
require('toggleterm').setup({
open_mapping = [[<c-\>]],
direction = 'float',
float_opts = {
border = 'curved',
},
})
-- В другой части конфигурации добавьте команду
vim.api.nvim_create_user_command('LazyGit', function()
vim.cmd('TermExec cmd="lazygit"')
end, {})
Теперь вы можете использовать Ctrl+\ для открытия терминала с lazygit.
Интеграция с tmux #
Если вы работаете с tmux, вы можете создать привязку клавиши для быстрого открытия lazygit в новом окне:
# Добавьте в ваш файл ~/.tmux.conf
bind-key -n 'C-g' new-window -n lazygit -c "#{pane_current_path}" -x 120 -y 40 "lazygit"
Теперь Ctrl+g будет открывать lazygit в новом tmux окне. Это особенно удобно, если вы работаете с несколькими проектами одновременно.
Сравнение с альтернативами #
Существует множество инструментов для работы с Git. Давайте сравним lazygit с основными конкурентами:
lazygit vs Git CLI
- Git CLI мощнее и универсальнее, но требует запоминания множества команд
- lazygit проще для начинающих и быстрее для опытных пользователей
- Git CLI не требует дополнительной установки
lazygit vs GitHub Desktop
- GitHub Desktop имеет красивый графический интерфейс, но тяжелее
- lazygit работает прямо в терминале, лучше для мощных машин
- GitHub Desktop лучше интегрирован с GitHub
lazygit vs VS Code Git интеграция
- VS Code встроена в редактор, удобнее для работы с кодом
- lazygit лучше для работы только с Git
- VS Code требует больше ресурсов
lazygit vs /ru/git/sublime-merge/
- /ru/git/sublime-merge/ является платным, но очень быстрым и мощным
- lazygit полностью бесплатна и с открытым исходным кодом
- Sublime Merge лучше для просмотра сложных diff
- lazygit лучше для интерактивного rebase
Продвинутые функции #
Создание фильтров #
lazygit позволяет фильтровать коммиты по разным критериям:
# Фильтр по автору
/author:john
# Фильтр по сообщению
/fix:
# Фильтр по пути файла
/path:src/
Кастомные команды #
Вы можете добавлять свои собственные команды в конфигурацию lazygit. Создайте файл ~/.config/lazygit/config.yml:
customCommands:
- key: 'P'
context: 'global'
description: 'Push to remote'
command: 'git push'
subprocess: true
FAQ #
Вопрос: Что лучше — lazygit или чистый git CLI? Это зависит от ваших предпочтений. Если вы быстро печатаете и хорошо знаете команды Git, CLI может быть быстрее. Если вы новичок или любите визуальное представление, lazygit намного удобнее.
Вопрос: Поддерживает ли lazygit GitLab и Bitbucket? Да, lazygit поддерживает любые Git репозитории, независимо от хоста. Функция открытия в браузере (@) работает с GitHub, GitLab и Bitbucket.
Вопрос: Как настроить внешний редактор для сообщений коммитов?
Установите переменную окружения GIT_EDITOR: export GIT_EDITOR="vim" или добавьте в конфиг git: git config --global core.editor "vim".
Вопрос: Как перемещать коммиты между ветками в lazygit? Выберите коммит, скопируйте его (обычно Ctrl+c), переключитесь на целевую ветку и вставьте (Ctrl+v). Или используйте /ru/git/git-rebase/ вручную.
Вопрос: Поддерживает ли lazygit работу с мышью? Да, хотя это не рекомендуется. Можно использовать мышь для нажатия на элементы, но клавиатурная навигация намного быстрее.
Заключение #
lazygit — это мощный инструмент для работы с Git в терминале. Он объединяет визуальность GUI клиентов с быстротой CLI, что делает его идеальным выбором для разработчиков, которые ценят эффективность и контроль. Особенно полезен lazygit при интерактивном rebase, просмотре diff и управлении ветками.
Если вы используете терминал для разработки, настоятельно рекомендуется попробовать lazygit. Даже если вы не будете использовать его для всех операций, он станет отличным инструментом для сложных операций с Git, таких как интерактивный rebase и разрешение конфликтов.
Дополнительно рекомендуем изучить /ru/git/interfejs-git/ и /ru/git/git-rebase/ для полного понимания работы Git в терминале.