Проверяет понимание стратегий ветвления и слияния в Git, что важно для организации командной работы и поддержания стабильности кода.
Git предлагает несколько способов внести изменения из одной ветки в другую. Выбор стратегии влияет на читаемость истории, простоту отката и удобство code review. Рассмотрим основные подходы.
Команда git merge создаёт новый коммит с двумя родителями, сохраняя полную историю обеих веток. Если ветки разошлись, Git выполнит трёхстороннее слияние и может потребовать разрешения конфликтов.
git checkout main
git merge feature/login
# создаётся merge-коммит с двумя родителямиЕсли целевая ветка не имеет новых коммитов с момента ответвления, Git просто перемещает указатель вперёд без создания merge-коммита. Это возможно, когда история линейна.
git checkout main
git merge --ff-only feature/login
# указатель main просто перемещается на последний коммит featureВсе коммиты ветки объединяются в один и применяются к целевой ветке. Удобно для feature-веток с множеством мелких коммитов, чтобы не засорять основную историю.
git checkout main
git merge --squash feature/login
git commit -m "Add login feature"git rebase переносит коммиты текущей ветки поверх другой, переписывая их хеши. История становится линейной, но переписывание уже опубликованных коммитов опасно для совместной работы.
git checkout feature/login
git rebase main
# коммиты feature применяются поверх mainИтог: merge подходит для сохранения полной истории и совместной работы, rebase — для чистой линейной истории в личных ветках, squash — для аккуратного слияния feature-веток в main. Выбор стратегии зависит от размера команды и требований к аудиту изменений.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию