git merge-tree

Patches e reescrita

Calcula um merge sem tocar o diretório de trabalho


O comando 'git merge-tree --write-tree' faz um merge inteiramente na memória: imprime o id da árvore resultante e, se houver conflitos, os arquivos em conflito e as mensagens — sem alterar seus arquivos, a área de preparação ou qualquer branch. Sai com 1 em caso de conflitos, o que o torna ideal para scripts e servidores que precisam saber se dois branches fariam merge limpo.

Sinopse

git merge-tree --write-tree [--name-only] <branch1> <branch2>
[ ] opcional| ou<arg> valor a substituir... repetível--flag opção

Exemplos

Testar um merge

git merge-tree --write-tree main feature

Limpo: imprime um id de árvore; conflitos: código de saída 1.


Só os arquivos em conflito

git merge-tree --write-tree --name-only main feature

Nomes de arquivo em vez de estágios.

Exemplos de fluxos de trabalho

1
git merge-tree --write-tree main feature || echo "conflicts"

Código de saída 1 significa conflitos

Solução de problemas

usage: git merge-tree … (old mode output)

Causa: Versões antigas do Git só têm o modo trivial

Atualize o Git (--write-tree exige 2.38+)

Dicas e armadilhas

Boas práticas

  • ✓Use o código de saída em scripts: 0 limpo, 1 conflitos.

Erros comuns

  • ✗Esperar um commit de merge — merge-tree só calcula o resultado.

Perguntas frequentes

A:

A árvore que o merge produziria; você poderia commitá-la com git commit-tree.