Как с помощью git rebase почистить историю коммитов?

Шаг 1: Откройте терминал или командную строку

Откройте терминал (на Mac или Linux) или командную строку (на Windows).

Шаг 2: Определите количество коммитов, которые вы хотите пересмотреть

Посмотрите историю коммитов, чтобы определить, сколько коммитов вы хотите пересмотреть.

git log --oneline

Это покажет список ваших последних коммитов в краткой форме.

Шаг 3: Начните интерактивный rebase

Используйте команду git rebase -i (интерактивный rebase) и укажите количество коммитов, которые вы хотите пересмотреть. Например, если вы хотите пересмотреть последние 5 коммитов, используйте:

git rebase -i HEAD~5

Шаг 4: Объедините или отредактируйте коммиты

После выполнения команды git rebase -i, откроется текстовый редактор со списком коммитов. Вы можете изменить список коммитов следующим образом:

  • pick: Оставить коммит как есть.
  • reword: Оставить коммит, но изменить его сообщение.
  • edit: Остановиться на этом коммите для внесения изменений.
  • squash: Объединить этот коммит с предыдущим.
  • fixup: То же, что и squash, но не сохраняет сообщение коммита.
  • drop: Удалить этот коммит.

Пример файла:

pick <hash1> Коммит 1
reword <hash2> Коммит 2
squash <hash3> Коммит 3
pick <hash4> Коммит 4
drop <hash5> Коммит 5

Сохраните файл и закройте редактор.

Шаг 5: Внесите изменения и сохраните их

Если вы выбрали reword, edit, squash или fixup, редактор откроется ещё раз для внесения изменений или редактирования сообщений коммитов. Внесите необходимые изменения, затем сохраните файл и закройте редактор.

Шаг 6: Завершите rebase

После закрытия редактора Git завершит процесс rebase и применит изменения к истории коммитов.

Шаг 7: Сделайте push изменений (если необходимо)

Если вы уже отправили коммиты в удалённый репозиторий, вам нужно будет использовать --force для отправки изменённой истории коммитов:

git push --force origin <ваша-ветка>

Пример:

git push --force origin main

Полезные команды

  • Просмотр истории коммитов:

    git log --oneline
    
  • Отмена интерактивного rebase (если возникли проблемы):

    git rebase --abort
    

Теперь вы знаете, как с помощью git rebase почистить историю коммитов в Git.