GitBor

Разрешение конфликтов

Двухколоночный 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 с опциями:

ОпцияЭквивалент
Defaultgit merge (fast-forward когда возможно)
No Fast-Forwardgit merge --no-ff (всегда создаётся merge-commit)
Squashgit merge --squash (изменения попадают в индекс, без коммита)
Don't Commitgit merge --no-commit (для дополнительных правок до коммита)

Предсказание конфликтов

Перед стартом merge GitBor делает «сухой» прогон через git merge-tree (или эквивалент), показывая список файлов, которые скорее всего конфликтнут. Это помогает решить — продолжать ли merge или сначала перебазироваться.

Merge in Progress

Если merge всё-таки даёт конфликты, в верхней части окна появляется жёлтый баннер merge-in-progress с кнопкой Abort (с подтверждением — git merge --abort).

Файлы с конфликтом помечаются иконкой (!) в дереве Local Changes. GitBor автоматически:

  1. Выбирает первый конфликтный файл.
  2. Открывает Merge Editor для него.

После того как вы разрешили конфликт и нажали Resolve, GitBor:

  1. Записывает результат в файл.
  2. Делает git add (ставит в stage).
  3. Авто-переходит к следующему конфликтному файлу.

Merge Editor

Двухколоночный редактор:

КолонкаЧто
Ours (слева)Версия с вашей текущей ветки
Theirs (справа)Версия с merge-источника

Под колонками — результирующий буфер, который и попадёт в файл.

Способы выбора:

  • Клик по блоку конфликта в Ours или Theirs — копирует его в результат.
  • Контекстное меню → Use Ours / Use Theirs — быстрое решение без клика по блоку.
  • Ручное редактирование результирующего буфера — если нужно смешать обе стороны или дописать своё.

Кнопка Resolve становится активной, когда в файле не осталось маркеров <<<<<<< / >>>>>>>.

Завершение merge

Когда все конфликтные файлы разрешены и поставлены в stage, GitBor предлагает завершить merge — обычным git commit с дефолтным сообщением (Merge branch 'X').

TODO: скриншот merge editor с тремя колонками.