В чем отличие rebase и reset в Git

git rebase и git reset — это команды, которые используются для изменения истории коммитов, но они работают по-разному и применяются в разных ситуациях.

Что делает git rebase

git rebase используется для изменения базы текущей ветки. Это позволяет применить изменения из одной ветки поверх другой, создавая линейную историю.

Пример:

git checkout feature-branch
git rebase main

Эта команда переносит изменения из feature-branch поверх main, избегая лишних merge-коммитов.

Когда использовать rebase

  • Чтобы сделать историю более чистой и линейной.
  • Перед объединением ветки с основной (main), если работа над ней велась параллельно.

Что делает git reset

git reset используется для изменения текущего состояния репозитория, удаляя коммиты или изменяя их состояние.

Пример мягкого отката (сохранение изменений в индексе):

git reset --soft HEAD~1

Пример жёсткого отката (удаление всех изменений без возможности восстановления):

git reset --hard HEAD~1

Когда использовать reset

  • Чтобы отменить последние коммиты.
  • Для изменения индекса без создания новых коммитов.
  • При необходимости полного отката изменений.

Основные отличия rebase и reset

КомандаНазначениеВлияние на историю
git rebaseПереносит коммиты поверх другой веткиИзменяет историю коммитов
git resetОткатывает изменения до указанного коммитаМожет полностью удалить коммиты