↓Перейти к содержанию
  1. Git: руководства и команды/

lazygit: удобный TUI интерфейс для Git прямо в терминале

·8 минут·

Введение в 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 это делается графически и очень интуитивно.

Процесс очень простой:

  1. Откройте lazygit и перейдите на панель Commits
  2. Выберите первый коммит, который вы хотите изменить
  3. Нажимите Ctrl+r для начала интерактивного rebase
  4. Используйте стрелки и указанные выше клавиши для переупорядочивания и редактирования коммитов
  5. После завершения всех изменений нажимите 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 в терминале.