Выбор ответа Junior Git спрашивают часто обновлено

Чем rebase отличается от merge

Вопрос

Ветка feature отстала от main. Чем git rebase main (из feature) отличается от git merge main?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: rebase переносит коммиты с новыми хешами, merge добавляет merge-коммит. rebase переносит твои коммиты поверх новой базы: содержимое то же, но родитель другой, поэтому хеши новые и история становится линейной. merge ничего не переписывает и связывает истории merge-коммитом (если нужен не fast-forward). - Первый…

Варианты ответа

  1. rebase создаёт merge-коммит с двумя родителями, а merge переписывает коммиты
  2. rebase переносит коммиты с новыми хешами, merge добавляет merge-коммитправильный ответ
  3. Разницы нет, rebase это просто алиас merge с флагом --no-ff
  4. rebase удаляет коммиты main, которых нет в feature

Разбор

rebase переносит твои коммиты поверх новой базы: содержимое то же, но родитель другой, поэтому хеши новые и история становится линейной. merge ничего не переписывает и связывает истории merge-коммитом (если нужен не fast-forward).

  • Первый вариант перепутал команды местами.
  • --no-ff это флаг merge, который запрещает fast-forward, к rebase он отношения не имеет.
  • rebase не трогает коммиты main, он двигает только коммиты текущей ветки.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.