Emacs. Пакет magit

Emacs. Пакет magit

2026-03-13 · 3 мин. для прочтения
blog computer-science

Emacs. Пакет magit.

Содержание

1 Общая информация

  • Magit — интерфейс для работы с Git в редакторе Emacs.

2 Основные операции

2.1 Запуск Magit и просмотр состояния

  • M-x magit-status или C-x g : открывает буфер magit-status.
    • Здесь отображаются текущая ветка, неотслеживаемые файлы, изменения в рабочей директории и в индексе, а также список последних коммитов.

2.2 Добавление изменений в индекс (staging)

  • Находясь в буфере статуса, перемещайтесь к файлу или hunk’у (фрагменту изменений) с помощью стрелок.
  • s : добавить выделенный файл или hunk в индекс (staged).
  • S : добавить все изменения сразу.
  • u : убрать файл или hunk из индекса (unstage).
  • TAB : раскрыть/свернуть изменения в файле для выборочного staging.

2.3 Создание коммита

  • c : войти в меню коммита.
  • Затем:
    • c : создать коммит, открывается буфер для ввода сообщения.
    • Напишите сообщение.
    • C-c C-c : завершить коммит.
    • C-c C-k : отменить коммит.
    • c e : изменить последний коммит (amend).

2.4 Работа с ветками

  • b : открывает меню веток.
  • Доступны команды:
    • b n : создать новую ветку.
    • b c : переключиться на другую ветку (checkout).
    • b s : показать все локальные и удалённые ветки.
    • b d : удалить ветку.
    • b m : переименовать ветку.
    • b b : быстро переключиться на другую ветку (список для выбора).

2.5 Слияние (merge)

  • m : войти в меню слияния.
    • m : выполнить слияние указанной ветки с текущей.
  • При конфликтах Magit подсветит файлы, требующие разрешения.

2.6 Получение изменений из удалённого репозитория

  • F : меню fetch (загрузить данные без слияния):
    • F p : fetch из пула (origin) текущей ветки.
    • F a : fetch из всех удалённых репозиториев.
  • P : меню pull (fetch + merge):
    • P p : pull из upstream текущей ветки.
    • P u : настроить upstream для текущей ветки.

2.7 Отправка изменений (push)

  • P : меню push:
    • P p : отправить текущую ветку в её upstream.
    • P u : отправить и настроить upstream.
    • P o : отправить в другой удалённый репозиторий (например, origin другой ветки).

2.8 Просмотр истории (лог)

  • l : открыть меню лога:
    • l l : показать лог текущей ветки.
    • l o : лог всех веток.
    • l h : лог с детальной информацией (автор, дата).
    • l L : лог с визуализацией графа коммитов.
  • В логе можно перемещаться, нажимая RET на коммите, чтобы увидеть его изменения.

2.9 Интерактивное перебазирование (rebase)

  • r : меню rebase:
    • r i : начать интерактивное перебазирование (выбрать коммит, от которого отпочковаться).
    • r c : продолжить перебазирование после разрешения конфликтов.
    • r s : пропустить текущий коммит.
    • r a : прервать перебазирование.

2.10 Разрешение конфликтов

  • В буфере статуса конфликтующие файлы помечены статусом unmerged.
  • Перейдите к файлу и нажмите:
    • e : открыть файл для ручного редактирования конфликтов.
    • s : после исправления добавить файл в индекс (пометить как разрешённый).
    • k : отменить все изменения в файле (при конфликте это удалит файл, будьте осторожны).

2.11 Отмена изменений

  • k : на файле или hunk’е откатить изменения (discard). Magit запросит подтверждение.
  • x : отменить добавление в индекс (аналог git reset для конкретного файла).
  • V : откатить коммит (revert) — создать новый коммит, отменяющий выбранный.

2.12 Работа с тегами

  • t : меню тегов:
    • t : создать новый тег.
    • t d : удалить тег.
    • t p : отправить теги в удалённый репозиторий.

2.13 Другие полезные команды

  • ? : справка по Magit.
  • - : переключиться между буферами Magit (например, из лога обратно в статус).
  • $ : показать буфер с выводом последней Git-команды.
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы. Научные интересы относятся к области теоретической физики и математического моделирования.