Git-конфлікт може бути семантичним
Конфлікт — це не лише одночасна зміна одного рядка. Небезпечні проблеми виникають у бізнес-логіці, API-контрактах, припущеннях команд, ownership і змінах поза scope. Git може обʼєднати текст, але не виявити подвійне застосування знижки або зміну порядку обчислень.
Результат потрібно оцінювати не за тим, чий варіант виглядає переконливіше, а за ownership, scope discipline, evidence і ціною помилки.
| Критерій | Питання |
|---|---|
| Ownership | Хто відповідає за спірну область? |
| Scope discipline | Чи не вийшов трек за межі brief? |
| Evidence | Що показують тести, логи та diff? |
| Ціна помилки | Які наслідки неправильного обʼєднання? |
Алгоритм розбору двох треків
- Порівняйте diff кожної гілки з
main. - Окремо зіставте зміни треків між собою.
- Перевірте ownership і scope.
- Перегляньте тести, логи та інші артефакти.
- Перевірте спільний контракт: сигнатури, порядок обчислень і helper-и.
- Оберіть спосіб інтеграції.
- Зафіксуйте рішення в журналі сесії.
Варіанти інтеграції
Наприклад, із promo-треку можна перенести лише тести округлення, а сумнівний рефакторинг залишити для окремої задачі.
| Варіант | Коли застосувати |
|---|---|
| Прийняти гілку цілком | Scope дотримано, diff зрозумілий, перевірки переконливі |
| Відхилити | Порушені межі, контракт або ризик завеликий |
| Cherry-pick | Потрібен один ізольований безпечний коміт |
| Розділити | В одній гілці змішані різні типи роботи |
| Revert | Невдалий merge вже потрапив до спільної гілки |
Як запобігати конфліктам
- описувати scope та ownership у brief кожного треку;
- забороняти непогоджені зміни в сусідніх модулях;
- зберігати правила роботи в
CLAUDE.md; - вести
parallel-session-log.md; - додавати контрактні та інтеграційні тести на межах;
- розділяти змішані або надто широкі diff до merge.
Журнал рішення про конфлікт
Conflict: track-a vs track-b
Type: shared API contract
Trusted track: backend owner
Decision: cherry-pick tests only
Reason: refactor exceeded scope
Follow-up: separate architecture task Канонічне джерело уроку · JavaRush
Відкрити матеріал JavaRush