Pular para o conteúdo principal
Merge local é a saída para quem não vai abrir PR: pega os commits da sessão e coloca na branch base, ali mesmo, sem rede. Ele está em Entregar → Merge local, no rodapé do painel de revisão. Vem pintado de vermelho e marcado ação vermelha — porque mexe no seu repositório principal.

O preview

Abrir o diálogo dispara worktree_merge_preview antes de qualquer coisa. Ele mostra:
E por baixo, o que o preview foi buscar de verdade: O merge-tree é o ponto: o TYBA sabe se vai dar conflito sem fazer o merge, sem checkout, sem stash, sem encostar no seu diretório de trabalho.

As três travas

O botão Mergear na base fica desligado, com o motivo escrito, em três casos:
A base está suja. A branch base tem mudanças não commitadas — commite ou descarte antes de mergear. O TYBA não vai mexer no seu trabalho em andamento para caber um merge.
Há conflito. Conflito com a base em: arquivo, arquivo. Aqui aparece o botão de escape — veja abaixo.
Não há nada para mergear. Nada pra mergear: sem commits além da base. Ou a sessão está na própria branch base, e aí não há o que fazer.

Estratégia

O core aceita mensagem custom, mas o diálogo não tem campo para ela. Hoje a mensagem é sempre a automática.

Confirmar

Dois cliques. O primeiro arma (Confirmar merge?, o botão fica vermelho), o segundo executa. E o que executa não é git merge:
A árvore já veio do merge-tree. O commit é criado direto e a base avança por fast-forward. Se a base tiver mudado entre o preview e o clique, o --ff-only falha e você vê A branch base mudou durante o merge — nada foi alterado, tente de novo.
A base nunca fica meio-mergeada. Ou o fast-forward passa, ou nada aconteceu. Não existe estado intermediário para você limpar.

Materialize: quando dá conflito

Com o merge travado por conflito, o diálogo oferece Resolver com agente. Ele faz a coisa ao contrário — e de propósito: O materialize traz a base para dentro do worktree da sessão e deixa o merge parar no conflito. Os arquivos conflitados ficam lá, com marcadores, e o TYBA manda o prompt de resolução para o agente daquela sessão. O seu checkout não é tocado em momento nenhum. Resolvido o conflito na sessão, o merge local roda limpo.
Materialize exige o worktree da sessão limpo: O worktree da sessão tem mudanças não commitadas — commite ou descarte antes de materializar o conflito.

Depois do merge

O diálogo dá lugar a Entrega feita — e o worktree?:
  • Manter — o worktree continua, a sessão continua.
  • Remover worktree e encerrar sessão — dois cliques, e some.
Remover é worktree remove --force e git branch -D: o worktree vai embora e a branch local também. Se sobrou trabalho não commitado, o aviso aparece antes do segundo clique — NÃO foi pro PR/merge — remover vai descartá-lo permanentemente.

O que não existe

Veja também

Pull requests

A outra saída — a que passa pela forja.

Worktrees

Onde a base foi fixada, e o que sobra depois de remover.