Log in to leave a comment
No posts yet
O tempo do desenvolvedor é caro. No entanto, costumamos desperdiçar uma parte considerável desse tempo precioso com context switching (troca de contexto) em vez de escrever código. O processo de executar git stash, mudar de branch para atender a uma solicitação de hotfix urgente no meio do desenvolvimento de uma feature, e depois voltar para fazer o stash pop e resolver conflitos, fragmenta a concentração até do engenheiro mais sênior.
O Git padrão foi projetado para o gerenciamento de histórico linear. Ele parte da premissa de que você faz apenas uma tarefa por vez. Mas a realidade no campo é complexa. É preciso refletir o feedback de vários code reviews enquanto se desenvolve novas funcionalidades simultaneamente. Em 2026, é hora de reconhecer as limitações do Git e evoluir nossas ferramentas. O GitButler CLI, o but, vai além de uma simples ferramenta de conveniência; ele muda o paradigma do controle de versão.
A arma mais poderosa do GitButler é a capacidade de ativar várias branches simultaneamente em um único diretório de trabalho. Isso era impossível no Git convencional.
O Git padrão mantém apenas um ponteiro HEAD em um determinado momento. Por outro lado, o GitButler mantém um estado onde todas as branches virtuais (Lanes) atualmente ativas são mescladas em tempo real através de uma branch especial chamada gitbutler/workspace.
| Item de Comparação | Git Padrão (Vanilla) | GitButler (Virtual Branches) |
|---|---|---|
| Estado da Área de Trabalho | Apenas uma branch por vez | Alterações de várias branches virtuais coexistem |
| Troca de Contexto | Stash + Checkout (segundos a minutos) | Instantânea (mudança de atribuição lógica) |
| Gestão de Conflitos | Rebase deve ser interrompido | Conflitos preservados como "estado", permitindo continuar o trabalho |
Graças a essa estrutura, IDEs e compiladores reconhecem múltiplas tarefas como uma árvore de fontes consistente, sem necessidade de configurações extras. Isso significa que é possível realizar multitarefa sem quebrar o seu flow.
Vamos examinar metodologias específicas que vão além da conveniência e reduzem fisicamente a velocidade de trabalho.
O que você faria se encontrasse um erro de digitação enquanto escrevia uma lógica complexa? Antigamente, você teria que parar o que estava fazendo. Agora, basta corrigir ali mesmo e digitar but branch new fix-typo. A área de trabalho permanece a mesma, mas você pode atribuir logicamente apenas aquela modificação específica (Hunk) à nova branch.
O histórico de commits é uma narrativa que você entrega aos seus colegas. Processos intermediários bagunçados devem ser omitidos. O GitButler introduziu o comando but rub para eliminar a complexidade do rebase -i. É uma forma de "esfregar" e absorver modificações em um commit específico. Ao executar, esse commit é alterado (Amend) instantaneamente, e os commits superiores são reempilhados (Restacking) automaticamente. O sistema "First Class Conflict", que permite continuar o trabalho sem interromper por causa de conflitos durante o rebase, dá suporte a isso.
A essência da atualização de 2026 é a marcação. Se você definir um commit específico como uma marca ativa, todas as alterações subsequentes serão acumuladas automaticamente nesse ponto.
Isso demonstra seu poder especialmente ao usar agentes de IA como Claude Code ou Cursor. Ele mescla automaticamente os inúmeros fragmentos de código gerados pelo agente em uma unidade lógica limpa, garantindo que o histórico sempre mantenha sua forma final. O incômodo de ter que lembrar do autosquash após um commit --fixup desaparece completamente.
O maior medo ao adotar uma nova ferramenta é a perda de dados. O GitButler oferece o Oplog, que é mais sofisticado que o reflog do Git. Como ele registra um snapshot completo antes de cada alteração de dados, mesmo que você delete um commit por engano ou arruíne um rebase, um único but undo restaura perfeitamente até o estado de resolução de conflitos.
Além disso, para power users, todos os comandos suportam a flag JSON (but status -j). Combinando isso com o jq, você pode implementar em poucas linhas scripts de automação que selecionam e fazem push de apenas certas branches virtuais dependendo dos resultados do CI.
but config target origin/main.but setup.A inconveniência do stash e checkout que usamos todos os dias não era, na verdade, algo obrigatório. Não molde seu pensamento às limitações da ferramenta.
O trabalho paralelo por meio de branches virtuais e o refinamento intuitivo do histórico proporcionam ao desenvolvedor estabilidade psicológica. A certeza de que você pode desfazer erros e colaborar sem interromper seu flow cria a diferença na produtividade. Experimente digitar but status no seu terminal agora mesmo. No momento em que você perceber o quanto seu diretório de trabalho pode se tornar mais lógico e livre, você não conseguirá voltar para a ineficiência do passado.