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