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 завершается, и три коммита объединяются в один.