☰ Menu

29.09.2026 · Signal Titans Editorial

Git 2.56 traz staging mais seguro de conflitos e manutenção mais rápida de repositórios

Git 2.56 adiciona staging direcionado de conflitos, buscas mais rápidas por bases de merge e repacks eficientes para grandes repositórios.

Blocos de dados interligados sendo separados e comprimidos em uma pilha menor e organizada, contra um fundo suavemente desfocado.

O Git 2.56.0 foi lançado com mudanças voltadas a tornar a resolução de conflitos mais segura e a manutenção de repositórios mais escalável. A versão acrescenta um modo de staging direcionado para conflitos resolvidos, reduz o tempo de algumas buscas por bases de merge e elimina duas restrições que limitavam o uso de repacks path-walk com economia de espaço em servidores de repositórios.

Staging mais seguro de conflitos

O novo modo git add --resolved adiciona ao staging somente os caminhos atualmente marcados como não mesclados. Antes de alterar o índice, ele verifica se os arquivos regulares selecionados ainda contêm marcadores de conflito. Se encontrar algum, nenhum desses arquivos será adicionado. Alterações rastreadas sem relação com o conflito permanecem intactas, reduzindo o risco de incluir acidentalmente trabalho local por meio de comandos mais abrangentes, como git add -u ou git add -A.

Também é possível fornecer um pathspec para restringir a operação. Exclusões resolvidas e conflitos binários ainda podem ser adicionados, pois não contêm marcadores textuais. O novo modo não pode ser combinado com as opções update ou all, que têm escopo mais amplo.

Busca por bases de merge termina antes

O Git agora acompanha se ainda existem commits exclusivos de cada lado na fila da travessia em busca da base de merge. Quando um dos lados exclusivos se esgota, a pesquisa pode terminar, pois outro ponto de encontro comum não poderá surgir. Ao mesmo tempo, o suporte a históricos com várias bases de merge válidas é preservado.

O GitHub relata ganhos expressivos nos repositórios avaliados. Em um monorepo, um caso caiu de 0,68 segundo para 0,01 segundo. Avaliações de produção encontraram muitas operações cerca de 70 vezes mais rápidas em um monorepo grande e uma melhoria média de aproximadamente 20 vezes em outro. Em um caso envolvendo o kernel do Linux, a travessia caiu de 167.441 para 3.887 etapas.

Repack menor no servidor

O repack path-walk agrupa objetos de acordo com sua localização na árvore para encontrar relações de delta melhores. No benchmark do Fluent UI do GitHub, ele produziu um pacote de 164,4 MB, contra 558,5 MB de um repack comum baseado em bitmap, uma redução de cerca de 71%. O Git 2.56 torna essa abordagem compatível com bitmaps de alcançabilidade e delta islands, removendo duas barreiras à adoção por hosts de repositórios.

A funcionalidade continua sendo opcional. Operadores de servidores podem avaliar seus benefícios de armazenamento sem abrir mão da enumeração de objetos acelerada por bitmap ou das regras de isolamento dos delta islands. Ainda assim, o Git não ativa o repack path-walk por padrão.

Outras mudanças no fluxo de trabalho

Entre as novidades estão o comando experimental git history drop, a exclusão em lote de branches mesclados, opções de limpeza automática para git bisect run e um modo --linearize para o comando experimental git replay. Clones parciais também podem descartar manualmente blobs grandes e recuperáveis por meio de repacking filtrado, embora o mecanismo atualmente aceite apenas filtros blob:limit e exija um promisor remote.

O Git 2.56 também melhora o rastreamento de renomeações do git log --follow em históricos não lineares e resolve problemas de escalabilidade. Entre os exemplos estão um diff limitado a caminho em um checkout do Chromium, que passou de cerca de oito minutos para 0,07 segundo, e testes de tombstones do reftable, que caíram de aproximadamente 13 segundos para 0,2 segundo.

Ilustração editorial gerada por IA; não é uma fotografia documental.

Fonte: Highlights from Git 2.56