Разрешение конфликтов
Двухколоночный merge editor с авто-переходом и предсказанием конфликтов
Конфликт-резолвер GitBor — это двухколоночный редактор поверх стандартных marker-ов <<<<<<< / ======= / >>>>>>>. Парсер: src/core/git/ConflictParser.ts, менеджер: src/core/commands/ConflictManager.ts. UI: src/renderer/src/features/merge/.
Старт merge
Правый клик по ветке в сайдбаре → Merge into current. Открывается Merge Branch dialog с опциями:
| Опция | Эквивалент |
|---|---|
| Default | git merge (fast-forward когда возможно) |
| No Fast-Forward | git merge --no-ff (всегда создаётся merge-commit) |
| Squash | git merge --squash (изменения попадают в индекс, без коммита) |
| Don't Commit | git merge --no-commit (для дополнительных правок до коммита) |
Предсказание конфликтов
Перед стартом merge GitBor делает «сухой» прогон через git merge-tree (или эквивалент), показывая список файлов, которые скорее всего конфликтнут. Это помогает решить — продолжать ли merge или сначала перебазироваться.
Merge in Progress
Если merge всё-таки даёт конфликты, в верхней части окна появляется жёлтый баннер merge-in-progress с кнопкой Abort (с подтверждением — git merge --abort).
Файлы с конфликтом помечаются иконкой (!) в дереве Local Changes. GitBor автоматически:
- Выбирает первый конфликтный файл.
- Открывает Merge Editor для него.
После того как вы разрешили конфликт и нажали Resolve, GitBor:
- Записывает результат в файл.
- Делает
git add(ставит в stage). - Авто-переходит к следующему конфликтному файлу.
Merge Editor
Двухколоночный редактор:
| Колонка | Что |
|---|---|
| Ours (слева) | Версия с вашей текущей ветки |
| Theirs (справа) | Версия с merge-источника |
Под колонками — результирующий буфер, который и попадёт в файл.
Способы выбора:
- Клик по блоку конфликта в Ours или Theirs — копирует его в результат.
- Контекстное меню → Use Ours / Use Theirs — быстрое решение без клика по блоку.
- Ручное редактирование результирующего буфера — если нужно смешать обе стороны или дописать своё.
Кнопка Resolve становится активной, когда в файле не осталось маркеров <<<<<<< / >>>>>>>.
Завершение merge
Когда все конфликтные файлы разрешены и поставлены в stage, GitBor предлагает завершить merge — обычным git commit с дефолтным сообщением (Merge branch 'X').
TODO: скриншот merge editor с тремя колонками.