git am

Patches e reescrita

Aplica patches de arquivos de e-mail como commits


O comando 'git am' (apply mailbox) pega arquivos de patch criados por git format-patch e transforma cada um num commit, mantendo o autor, a data e a mensagem originais. É o lado que recebe contribuições por e-mail. Se um patch não se aplicar mais, git am para; corrija e execute git am --continue, ou desista com git am --abort.

Sinopse

git am [--signoff] [--3way] [<mbox> | <patch-file>...]
git am (--continue | --skip | --abort)
[ ] opcional| ou<arg> valor a substituir... repetível--flag opção

Opções

Clique em uma opção para expandir

Iniciante (1)

Adiciona uma linha Signed-off-by com seu nome a cada commit.

Quando necessárioProjetos que exigem uma cadeia de assinaturas

Exemplo

git am -s 0001-fix.patch

Intermediário (1)

Se um patch não se aplicar limpo, recorre a um merge de três vias (pode deixar conflitos).

RecomendadoAplicar patches feitos sobre uma base um pouco mais antiga

Exemplo

git am -3 0001-fix.patch

Escolhendo a opção certa

Aplicar patches

Arquivos ou commits?

ComandoCria um commit
git apply fix.patchNão — só arquivos
git am fix.patchSim — com o autor original

Exemplos

Aplicar patches

git am 0001-*.patch

Cada arquivo vira um commit.


Adicionar sua assinatura

git am -s 0001-fix.patch

Acrescenta Signed-off-by com seu nome.


Parar uma aplicação que falhou

git am --abort

Tudo volta a como estava.

Exemplos de fluxos de trabalho

1
git switch -c review main

Um branch para testá-los

2
git am ~/patches/*.patch

Aplicá-los

3
git log --oneline main..

Conferir o que chegou

Solução de problemas

error: patch failed … patch does not apply

Causa: Seus arquivos diferem do contexto do patch

git am --abort, depois tente de novo com --3way, ou peça um patch com rebase

Dicas e armadilhas

Boas práticas

  • ✓Aplique os patches num branch novo, não direto em main.

Erros comuns

  • ✗Usar git apply quando você quer commits — apply só altera arquivos.
  • ✗Deixar um git am com falha pela metade: termine com --continue ou --abort.

Perguntas frequentes

A:

Significa «apply mailbox»: lê patches no formato de e-mail (mbox).