Представьте, что вы начали работать над новой фичей в отдельной ветке, после чего другой участник команды добавляет новые коммиты в главную ветку main. Возникает история форков, знакомая каждому, кто использовал Git для совместной работы.
А теперь предположим, что новые коммиты в ветке main затрагивают фичу, над которой вы работаете. Каким способом можно внести изменения из одной ветки в другую?
В Git есть два способа сделать это: слияние или перебазирование.
📌 Способ слияния (merge)
> git checkout feature
> git merge main
➡️или в одну строку: git merge feature main
Эта команда создает в ветке feature новый «коммит слияния», связывающий истории обеих веток. Это отличная неразрушающая операция, при которой существующие ветки никак не изменяются.
Но! Каждый раз, когда вам будет необходимо включить вышестоящие изменения, в ветку feature будет попадать внешний коммит слияния.
Если работа в главной ветке main ведется активно, история вашей ветки feature быстро засорится.
📌 Способ перебазирования (rebase)
Вместо слияния можно выполнить перебазирование ветки feature на ветку main с помощью следующих команд:
> git checkout feature
> git rebase main
В результате вся ветка feature окажется поверх ветки main, включая в себя все новые коммиты в ветке main.
Если вместо команды merge при коммитах используется rebase, эта команда перезаписывает историю проекта, создавая новые коммиты для каждого коммита в исходной ветке.
☑️ Главное преимущество rebase — более чистая история проекта. Эта операция устраняет ненужные коммиты слияния, необходимые для git merge.
#вопросы_с_собесов #easy