Как объединить несколько коммитов в один?
Шаг 1: Откройте терминал или командную строку
Откройте терминал (на Mac или Linux) или командную строку (на Windows).
Шаг 2: Определите, сколько коммитов вы хотите объединить
Посмотрите историю коммитов, чтобы определить, сколько коммитов вы хотите объединить.
git log --oneline
Это покажет список ваших последних коммитов в краткой форме.
Шаг 3: Начните интерактивный rebase
Используйте команду git rebase -i
(интерактивный rebase) и укажите количество коммитов, которые вы хотите объединить. Например, если вы хотите объединить последние три коммита, используйте:
git rebase -i HEAD~3
Шаг 4: Объедините коммиты
После выполнения команды git rebase -i
, откроется текстовый редактор со списком коммитов. Для каждого коммита, который вы хотите объединить с предыдущим, замените pick
на squash
или сокращенно s
(второй и последующие коммиты, которые вы хотите объединить).
pick <hash> Коммит 1
squash <hash> Коммит 2
squash <hash> Коммит 3
Сохраните файл и закройте редактор.
Шаг 5: Отредактируйте сообщение объединённого коммита
После закрытия редактора откроется другой редактор, где вы сможете изменить сообщение объединённого коммита. Оставьте или отредактируйте сообщение коммита по вашему усмотрению. После внесения изменений сохраните файл и закройте редактор.
Шаг 6: Завершите rebase
После закрытия редактора Git завершит процесс rebase и объединит указанные коммиты в один.
Шаг 7: Сделайте push изменений (если необходимо)
Если вы уже отправили коммиты в удалённый репозиторий, вам нужно будет использовать --force
для отправки объединённого коммита:
git push --force origin <ваша-ветка>
Пример:
git push --force origin main
❗ Осторожно
Будьте осторожны при использовании интерактивного rebase и force push, так как они перезаписывают историю коммитов, что может вызвать проблемы для других разработчиков, работающих с теми же ветками. Убедитесь, что вы понимаете последствия этих операций.Полезные команды
-
Просмотр истории коммитов:
git log --oneline
-
Отмена интерактивного rebase (если возникли проблемы):
git rebase --abort
Теперь вы знаете, как объединить несколько коммитов в один в Git 😎