Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Злиття Гілок | Робота з Гілками в Git
Основи Git
course content

Зміст курсу

Основи Git

Основи Git

Злиття Гілок

Розуміння Злиття Гілок

У Git злиття - це процес інтеграції змін з однієї гілки в іншу. Найпоширенішим випадком використання є злиття функціональних гілок у головну гілку (наприклад, main або master). Це гарантує, що найновіші функції та виправлення помилок будуть включені до основного коду.

Базовий Сценарій Злиття

Давайте спочатку розглянемо два останніх комміти. Пам'ятайте, що наразі ми знаходимося на гілці feature/new-feature.

Як ви можете бачити, наша гілка master на один комміт позаду, однак, перш ніж об'єднати зміни, ми повинні переключитися на гілку, до якої ми хочемо включити зміни. Перейдемо до гілки master і покажемо два останні комміти у цій гілці:

Гілка master дійсно знаходиться на один комміт позаду за гілку feature, тож давайте об'єднаємо їх. Щоб ініціювати процес злиття, скористайтеся командою git merge і вкажіть гілку, яку ми хочемо об'єднати з поточною гілкою. Наприклад, щоб об'єднати гілку функції з назвою feature/new-feature з гілкою master, слід виконати наступну команду:

Примітка

Повідомлення, яке буде показано після виконання команди, містить наступне: Fast-forward, що вказує на те, що було виконано fast-forward merge (злиття).

Ми обговоримо ці два типи злиття пізніше у цьому розділі, але перед цим давайте подивимось на дві останні комміти:

Ми все ще перебуваємо на гілці master, однак, ця гілка тепер оновлена нашою гілкою feature, причому обидві гілки вказують на один і той самий комміт.

Примітка

HEAD все ще вказує на гілку master, оскільки ми були на цій гілці під час виконання злиття.

Типи злиття

Насправді, у Git існує два типи операцій злиття:

  • fast-forward merge;
  • three-way merge.

Fast-forward merge

Те, що ми виконали, є прикладом fast-forward merge (злиття), про яке згадується у повідомленні. Цей тип злиття виконується, якщо всі комміти гілки, на якій ми зараз перебуваємо (покинутої гілки), також є частиною гілки, що об'єднується, тобто історія комітів цих гілок не розходиться. Давайте подивимося на наступну ілюстрацію, щоб пояснити це:

При цьому типі злиття покажчик поточної гілки просто оновлюється до останнього комміту.

Three-way merge

Однак, якщо історія гілок розійшлася, тобто після певного спільного комміту нові комміти були зроблені окремо на кожній гілці, то виконується three-way merge (злиття).

Термін "three-way" стосується трьох версій, які беруть участь у злитті:

  • версія останнього спільного предка (комміту);
  • версія останнього комміту у поточній гілці (HEAD);
  • версія останнього комміту у гілці, що об'єднується.

Давайте подивимося на наступну ілюстрацію такого злиття:

Ось як працює three-way merge:

  1. Git визначає зміни, зроблені на кожній з гілок після останнього спільного предка.
  2. Якщо кожна гілка має зміни у різних файлах або різних частинах одного файлу, Git автоматично об'єднає зміни, об'єднавши їх у результуючому комміті.
  3. В іншому випадку виникне merge conflict (конфлікт злиття).

Ми обговоримо конфлікти злиття у наступному розділі.

Все було зрозуміло?

Секція 4. Розділ 4
We're sorry to hear that something went wrong. What happened?
some-alt