В чем разница между git rebase и git merge?
Слияние, rebase и конфликты
`git merge` объединяет ветки, создавая коммит слияния и сохраняя историю как есть. `git rebase` переносит ваши коммиты поверх другой ветки, переписывая их и делая историю линейной.
merge
git switch feature
git merge main- История честная: видно, когда ветки разошлись и сошлись.
- Не переписывает существующие коммиты — безопасно для общих веток.
- Минус: много merge-коммитов делают историю шумной.
rebase
git switch feature
git rebase main- Коммиты ветки пересоздаются поверх
mainс новыми хешами. - История линейная и читаемая.
- Нельзя ребейзить ветки, которые уже запушены и используются другими: у них история разойдётся.
Как выбирать
Свою локальную ветку перед PR удобно обновить через rebase. Общие ветки объединяют через merge.
Коротко для собеседования
merge сохраняет историю и добавляет коммит слияния, rebase переписывает коммиты ради линейной истории; публичные ветки не ребейзят.
Подробнее: Pro Git — перебазирование