Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що відбувається з історією комітів при merge?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**При `git merge`** історія комітів не переписується - вона зберігається такою, якою була, з усіма розгалуженнями. **Ключове:** старі коміти не змінюються, а за потреби додається новий merge-коміт, який зв'язує гілки.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняПри `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-коміт, який зв'язує гілки.**Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.