base_sha fixado na criação do worktree. Clique nele e o BranchPicker abre.
A lista
As branches vêm do git local, ordenadas por data do commit, mais recente primeiro. Cada linha traz o nome, o assunto do último commit e, se for remota, a etiquetaremota.
O que a lista faz por você:
A branch atual vem com um ✓ verde.
O filtro é 200 branches, ponto — as 200 mais recentes. Num repo com histórico grande, a branch que você quer pode não estar na lista, e nesse caso a caixa de busca não ajuda: ela filtra o que já veio, não vai buscar mais.
watcher acha tanto fix/watcher quanto a branch cujo último commit diz “fix: watcher em loop”.
Explorar
Clicar na linha de uma branch não troca de branch. Ela passa a ser o que o painel mostra — o chip fica violeta com o nome dela, e o diff vira o trabalho daquela branch. O diff de exploração não ébase_sha..HEAD. É:
base ‥ HEAD.
A base padrão
A base de comparação é resolvida nessa ordem, e para na primeira que existir:1
origin/HEAD
A branch default do remoto. É o caso normal de um repo clonado.
2
main, depois master
Local. Vale quando não há remoto — ou quando o
origin/HEAD não está resolvido no seu clone.3
HEAD
Último recurso. Comparar contra si mesmo dá diff vazio, e isso é melhor do que erro.
Clone raso ou feito de um jeito que não trouxe o
origin/HEAD cai no main/master local. Se o seu projeto usa develop como base, a exploração vai comparar contra a main — não há como configurar isso.Fetch
O ícone de nuvem ao lado da busca roda:--prune faz as remotas que morreram no servidor sumirem da lista.
Trocar de branch
O checkout tem porta própria: o ícone à direita de cada linha que não é a atual. Ele é armado em dois cliques. O primeiro deixa o ícone âmbar (“Clique de novo pra confirmar o checkout”); o segundo executa. Se você não confirmar em 3 segundos, ele desarma sozinho. O que acontece depois:- Branch local →
git checkout <branch>. - Branch remota →
git checkout --track origin/<branch>, criando a local com tracking.
Nomes de ref
Todo nome que vem do picker é validado antes de virar argumento degit. É recusado o que:
- está vazio;
- começa com
-(-rfé flag, não branch); - contém
..(a..bé range, não branch); - tem espaço ou byte nulo.
for-each-ref, então na prática eles passam. A validação existe porque o IPC é fronteira: o que chega ali é entrada, não fato.
O que não existe
- Criar branch pelo picker. Branch nasce com o worktree, derivada do título da task.
- Apagar branch pelo picker. A branch
tyba/…é apagada junto com o worktree, no fluxo pós-entrega. - Configurar a base padrão. É
origin/HEAD→main→master→HEAD, e pronto. - Fetch automático. Rede só por clique.
- Push pelo picker. O push mora na revisão, depois de você ter visto o diff.
Veja também
Ler o diff
O painel onde o picker mora.
Resolver conflitos
Quando o merge para no meio.