Що таке конфлікт під час rebase?
Конфлікт при git rebase - це ситуація, коли Git не може застосувати черговий коміт поверх нової бази, тому що зміни конфліктують з уже наявним кодом.
Простіше: Git намагається «переграти» твої коміти один за одним, і на якомусь кроці вони не сходяться з поточним станом гілки.
Коли виникає конфлікт при rebase
Конфлікт з'являється, якщо:
- ти робиш
rebaseна гілку, де код уже сильно змінився - твій коміт змінює ті самі рядки, що й коміти в новій базі
На відміну від merge, конфлікт виникає не одразу для всієї гілки, а на конкретному коміті.
Що відбувається під час rebase
Коли ти виконуєш:
bash
git rebase mainGit:
- бере перший коміт твоєї гілки
- намагається застосувати його поверх
main - якщо не виходить - зупиняється на цьому коміті
- чекає, поки ти вирішиш конфлікт
Як виглядає конфлікт
Файл виглядає так само, як і при merge:
text
<<<<<<< HEAD
console.log("from main");
=======
console.log("from feature commit");
>>>>>>> commit_hashРізниця - у контексті:
HEAD- нова база (main)- нижня частина - зміни конкретного коміту, який зараз застосовується
Як розв'язується конфлікт при rebase
- Відкриваєш конфліктні файли
- Виправляєш код
- Прибираєш конфліктні маркери
- Додаєш файли:
bash
git add file.js- Продовжуєш rebase:
bash
git rebase --continueЯкщо потрібно скасувати:
bash
git rebase --abortКлючова відмінність від конфлікту при merge
| Merge | Rebase |
|---|---|
| Конфлікт вирішується один раз | Конфлікти можуть виникати на кожному коміті |
Рішення -> один git commit | Рішення -> git rebase --continue |
| Уся гілка одразу | Коміти по черзі |
Чому rebase здається складнішим
- конфліктів може бути більше
- потрібно розуміти, на якому коміті ти перебуваєш
- легко заплутатися без досвіду
Зате:
- кожен конфлікт локальний і логічний
- підсумкова історія чистіша
Формулювання для співбесіди
Конфлікт при
git rebaseвиникає, коли Git не може застосувати черговий коміт поверх нової бази, і вимагає вручну розв'язати конфлікт та продовжити rebase.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.