Skip to main content

Що таке конфлікт під час rebase?

Конфлікт при git rebase - це ситуація, коли Git не може застосувати черговий коміт поверх нової бази, тому що зміни конфліктують з уже наявним кодом.

Простіше: Git намагається «переграти» твої коміти один за одним, і на якомусь кроці вони не сходяться з поточним станом гілки.


Коли виникає конфлікт при rebase

Конфлікт з'являється, якщо:

  • ти робиш rebase на гілку, де код уже сильно змінився
  • твій коміт змінює ті самі рядки, що й коміти в новій базі

На відміну від merge, конфлікт виникає не одразу для всієї гілки, а на конкретному коміті.


Що відбувається під час rebase

Коли ти виконуєш:

bash
git rebase main

Git:

  1. бере перший коміт твоєї гілки
  2. намагається застосувати його поверх main
  3. якщо не виходить - зупиняється на цьому коміті
  4. чекає, поки ти вирішиш конфлікт

Як виглядає конфлікт

Файл виглядає так само, як і при merge:

text
<<<<<<< HEAD console.log("from main"); ======= console.log("from feature commit"); >>>>>>> commit_hash

Різниця - у контексті:

  • HEAD - нова база (main)
  • нижня частина - зміни конкретного коміту, який зараз застосовується

Як розв'язується конфлікт при rebase

  1. Відкриваєш конфліктні файли
  2. Виправляєш код
  3. Прибираєш конфліктні маркери
  4. Додаєш файли:
bash
git add file.js
  1. Продовжуєш rebase:
bash
git rebase --continue

Якщо потрібно скасувати:

bash
git rebase --abort

Ключова відмінність від конфлікту при merge

MergeRebase
Конфлікт вирішується один разКонфлікти можуть виникати на кожному коміті
Рішення -> один git commitРішення -> git rebase --continue
Уся гілка одразуКоміти по черзі

Чому rebase здається складнішим

  • конфліктів може бути більше
  • потрібно розуміти, на якому коміті ти перебуваєш
  • легко заплутатися без досвіду

Зате:

  • кожен конфлікт локальний і логічний
  • підсумкова історія чистіша

Формулювання для співбесіди

Конфлікт при git rebase виникає, коли Git не може застосувати черговий коміт поверх нової бази, і вимагає вручну розв'язати конфлікт та продовжити rebase.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.