Как интерактивно изменить последние N коммитов?
Интерактивный rebase в Git — это мощный инструмент, который позволяет вам изменять историю коммитов. Он полезен, когда вы хотите переработать (объединить, изменить, удалить или переставить) последние N коммитов в вашей ветке. В этом ответе мы рассмотрим, как это сделать, и приведем примеры кода.
Шаги для интерактивного ребейза
-i
, указав количество коммитов, которые вы хотите изменить. Например, чтобы изменить последние 3 коммита, используйте:git rebase -i HEAD~3
pick 1234567 Комментарий к первому коммиту
pick 89abcde Комментарий ко второму коммиту
pick fedcba9 Комментарий к третьему коммиту
- Чтобы изменить коммит, замените
pick
наedit
. - Чтобы объединить коммиты, замените
pick
наsquash
(илиs
).
Например:
edit 1234567 Комментарий к первому коммиту
squash 89abcde Комментарий ко второму коммиту
pick fedcba9 Комментарий к третьему коммиту
edit
, то Git остановится на этом коммите, и вы сможете внести необходимые изменения:git commit --amend
git rebase --continue
squash
, Git предложит вам редактировать сообщение коммита для объединённых коммитов. Внесите изменения, сохраните и закройте редактор.Пример
Предположим, у вас есть следующие коммиты:
1234567 - Исправление ошибки
89abcde - Добавление новой функции
fedcba9 - Обновление документации
Если вы хотите объединить два последних коммита в один и изменить сообщение первого коммита, вам нужно будет выполнить следующие шаги:
git rebase -i HEAD~3
edit 1234567 Исправление ошибки
squash 89abcde Добавление новой функции
pick fedcba9 Обновление документации
Заключение
Интерактивный rebase — это очень необходимый инструмент для поддержания чистоты истории ваших коммитов. С его помощью вы можете делать вашу работу более понятной как для вас, так и для других разработчиков. Всегда будьте осторожны с переписываемой историей, особенно если вы уже публиковали коммиты в общую ветку.