0Pricing
Git & GitHub Professional Workflow · Урок

Интерактивное перебазирование истории

Используйте интерактивное перебазирование для переписывания истории фиксаций: объединяйте фиксации, меняйте их порядок и редактируйте сообщения до отправки.

«Интерактивное перебазирование истории» — бесплатный урок Git & GitHub Professional Workflow на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Git & GitHub Professional Workflow, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Git & GitHub Professional Workflow содержит 4 уроков всего.

Знакомство с интерактивным перебазированием

Познакомьтесь с мощным инструментом Git: интерактивным перебазированием! Он позволяет переписать историю фиксаций проекта до того, как Вы поделитесь ею с другими.

Представьте, что это машина времени для Ваших фиксаций: она позволяет привести изменения в порядок, объединить их или изменить их последовательность, чтобы создать ясную линейную историю работы.

Зачем приводить историю в порядок?

Зачем переписывать историю?

  • Понятность: журнал фиксаций проекта становится удобным для чтения и понимания.
  • Лаконичность: небольшие последовательные фиксации можно объединить в одно содержательное изменение.
  • Отладка: чистая история помогает при использовании таких инструментов, как git bisect, чтобы найти место появления ошибки.
  • Улучшенные запросы на слияние: Вы представляете коллегам аккуратно оформленный набор изменений.

Запуск интерактивного перебазирования

Чтобы начать интерактивное перебазирование, используйте команду git rebase -i. Необходимо указать, насколько далеко назад Вы хотите вернуться.

Например, чтобы перебазировать последние 3 фиксации текущей ветки, используйте:

git rebase -i HEAD~3

Откроется редактор с последними 3 фиксациями и доступными командами.

Команды редактора перебазирования

При запуске интерактивного перебазирования Git открывает текстовый редактор со списком фиксаций и инструкциями. Каждая фиксация начинается с команды:

  • pick: использовать фиксацию без изменений.
  • reword: использовать фиксацию, но изменить её сообщение.
  • edit: использовать фиксацию, но приостановить процесс для внесения изменений.
  • squash: объединить с предыдущей фиксацией, объединив сообщения.
  • fixup: объединить с предыдущей фиксацией, отбросив сообщение этой фиксации.
  • drop: полностью удалить фиксацию.

Пример: изменение сообщения фиксации

Предположим, Вы допустили опечатку в сообщении фиксации. Для её исправления можно использовать reword. Замените pick на reword рядом с нужной фиксацией:

pick 5a6b7c8 Add new feature
pick 1d2e3f4 Fix typo in docs
reword 9g0h1i2 Implement login screen

После сохранения файла и закрытия редактора Git предложит изменить сообщение фиксации 9g0h1i2.

Пример: объединение фиксаций

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

pick a1b2c3d Initial feature commit
squash e4f5g6h Add more details
fixup i7j8k9l Fix small bug

В этом случае e4f5g6h объединится с a1b2c3d, а их сообщения будут объединены. i7j8k9l также объединится с a1b2c3d, но его сообщение будет отброшено (fixup).

Пример: удаление фиксаций

Если экспериментальная фиксация больше не нужна, её можно просто удалить из истории с помощью drop. Замените pick на drop или полностью удалите строку:

pick 1122334 Initial setup
drop 5566778 Test experimental feature
pick 9900112 Add user authentication

После сохранения фиксация 5566778 будет полностью удалена из истории Вашей ветки.

Пример: изменение порядка фиксаций

Можно также изменить порядок фиксаций. Просто вырежьте и вставьте строки в редакторе, чтобы переставить их. Git применит изменения в новом порядке.

Исходный порядок:

pick abcdef1 Add feature A
pick 1234567 Add feature B

Изменённый порядок:

pick 1234567 Add feature B
pick abcdef1 Add feature A

Будьте осторожны: изменение порядка может вызвать конфликты, если фиксации зависят друг от друга.

Золотое правило: не перебазируйте общую историю!

Это крайне важно: NEVER перебазируйте фиксации, которые уже отправлены в общий удалённый репозиторий (например, GitHub или GitLab) и могли быть получены другими пользователями.

Перебазирование переписывает ID фиксаций. Если другие пользователи основывали свою работу на исходных фиксациях, перебазированные фиксации будут выглядеть как совершенно другая история, что приведёт к серьёзным конфликтам и путанице для всех участников.

Перебазируйте только фиксации, существующие исключительно в Вашей локальной ветке!

Проверка команды перебазирования

У Вас есть три фиксации: A (Initial), B (Minor fix), C (Refactor). Вы хотите объединить B с A, сохранив исходное сообщение A, а затем оставить C без изменений. Какие команды Вы используете в редакторе интерактивного перебазирования (от самой старой к самой новой)?

Повторение: интерактивное перебазирование

Вы узнали о мощной команде git rebase -i!

  • Она позволяет переписывать локальную историю фиксаций.
  • Вы можете изменять сообщения с помощью reword, объединять фиксации с помощью squash или fixup, удалять ненужные изменения с помощью drop и даже менять порядок фиксаций.
  • Всегда помните золотое правило: NEVER перебазируйте фиксации, которые уже отправлены в общий удалённый репозиторий.

Освоив интерактивное перебазирование, Вы сможете поддерживать чистую и понятную историю проекта!

Часто задаваемые вопросы

Урок «Интерактивное перебазирование истории» бесплатный?

Да — полный текст урока «Интерактивное перебазирование истории» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Git & GitHub Professional Workflow, подпишись на CoddyKit PRO. Курс Git & GitHub Professional Workflow содержит 4 уроков всего.

Чему я научусь в уроке «Интерактивное перебазирование истории»?

Используйте интерактивное перебазирование для переписывания истории фиксаций: объединяйте фиксации, меняйте их порядок и редактируйте сообщения до отправки. Ты практикуешь Git & GitHub Professional Workflow с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Git & GitHub Professional Workflow?

Предыдущий опыт не требуется. Git & GitHub Professional Workflow на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Интерактивное перебазирование истории»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Git & GitHub Professional Workflow?

Да. Каждый урок Git & GitHub Professional Workflow включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Ручное разрешение конфликтов слияния
  2. Интерактивное перебазирование истории
  3. Выборочное применение фиксаций
  4. Повторное использование разрешений конфликтов с Git Rerere
← Назад к Git & GitHub Professional Workflow