git rebase -i
(interactive rebase) позволяет переписать историю коммитов в интерактивном режиме. Это мощный инструмент для изменения последовательности коммитов, объединения (squash), удаления, редактирования и переименования коммитов.
git rebase -i
:
git rebase -i HEAD~N
, где N
- количество коммитов от текущего HEAD, которые нужно включить в rebase. Например, git rebase -i HEAD~3
для последних трех коммитов.pick
на squash
(или s
) перед коммитами, которые нужно объединить с предыдущим коммитом (оставляем pick
только для первого коммита в последовательности объединяемых коммитов).git rebase -i
(interactive rebase) — это мощный инструмент в Git, который позволяет вам переписать историю коммитов в вашей ветке. Флаг -i
включает интерактивный режим, который предоставляет вам интерфейс для выбора коммитов, изменения их порядка, редактирования сообщений, объединения (squashing) или удаления.
Как использовать git rebase -i
для объединения коммитов:
git rebase -i
, указывая коммит, до которого вы хотите переписать историю. Обычно, это делается относительно HEAD~N
(где N - количество последних коммитов, которые вы хотите включить в rebase) или относительно конкретного commit-id. Например, git rebase -i HEAD~3
откроет интерактивный rebase для последних 3 коммитов.pick
).
pick e749c73 Fix: Typo in documentation
pick a1b2c3d Feat: Add new feature
pick c5d6e7f Chore: Update dependencies
pick
на squash
(или s
). Коммит, перед которым стоит pick
, останется как "основной" коммит, а squash
коммиты будут объединены в него. Важно расположить коммиты, которые вы хотите объединить, непосредственно друг за другом.
pick e749c73 Fix: Typo in documentation
squash a1b2c3d Feat: Add new feature
squash c5d6e7f Chore: Update dependencies
git add
, git commit
и затем git rebase --continue
.Важно: Использование git rebase
для переписывания истории, которая уже была отправлена в общую (удаленную) ветку, может вызвать проблемы для других разработчиков, которые работают над этой веткой. Поэтому, рекомендуется использовать git rebase
только для локальных веток, над которыми вы работаете самостоятельно.
Пример: Предположим, у вас есть три коммита, которые вы хотите объединить в один. Вы запускаете git rebase -i HEAD~3
. В редакторе вы меняете pick
на squash
для второго и третьего коммита, сохраняете файл и закрываете редактор. Затем Git открывает редактор сообщений коммита, где вы можете отредактировать сообщение объединенного коммита. После сохранения сообщения коммита rebase завершается, и три коммита объединяются в один.