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 | Откатывает изменения до указанного коммита | Может полностью удалить коммиты |