Що відбувається з історією комітів при merge?
При git merge історія комітів не переписується - вона зберігається такою, якою була, з усіма розгалуженнями та комітами.
Це ключовий момент, який майже завжди хочуть почути на співбесіді.
Що означає «історія зберігається»
Git не змінює наявні коміти:
- не змінює їхні хеші
- не змінює порядок усередині гілок
- не видаляє старі коміти
Він додає нові коміти, якщо це потрібно.
Як виглядає історія після merge
Ситуація 1: Fast-forward merge
Якщо основна гілка не змінювалася, Git просто «пересуває вказівник»:
A---B---C (main)
\
D---E (feature)Після merge:
A---B---C---D---E (main)
Історія лінійна, жодних нових комітів не з'явилося.
Ситуація 2: Звичайний merge (merge commit)
Якщо обидві гілки розвивалися паралельно:
A---B---C---F (main)
\
D---E (feature)Після merge Git створює merge-коміт:
A---B---C---F---M (main)
\ /
D---E---Коміт M:
- має два батьки
- фіксує факт об'єднання гілок
- не змінює старі коміти
Що важливо підкреслити на співбесіді
mergeне переписує історію- усі коміти залишаються оригінальними
- merge-коміт показує контекст розробки
- історія може бути нелінійною, але чесною
Чому це вважається безпечним
Тому що:
- в інших розробників нічого не ламається
- не виникає конфліктів хешів
- можна спокійно робити
git pull
Тому:
git mergeможна використовувати для публічних гілок
Коротка відповідь (якщо мало часу)
При
git mergeісторія комітів зберігається: старі коміти не змінюються, а за потреби додається новий merge-коміт, який зв'язує гілки.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.