Ambos git am
e git apply
podem ser usados para aplicar patches. Não vejo a diferença. Agora vejo uma diferença: git am
confirma automaticamente, enquanto git apply
apenas toca nos arquivos, mas não cria uma confirmação. Essa é a única diferença?
134
am
poderia ser pensado como uma abreviação deApply Mail
...Respostas:
Tanto a entrada quanto a saída são diferentes:
git apply
pega um patch (por exemplo, a saída degit diff
) e aplica-o ao diretório de trabalho (ou índice, se--index
ou--cached
é usado).git am
pega uma caixa de correio de confirmações formatadas como mensagens de email (por exemplo, a saída degit format-patch
) e as aplica à filial atual.git am
usagit apply
nos bastidores , mas faz mais trabalho antes (lendo umMaildir
oumbox
e analisando mensagens de email) e depois (criando confirmações).fonte
git apply
parece também aceitargit format-patch
saída.git apply
funcionaria para a saídagit format-patch
também, mas as alterações seriam sem etapas e precisariam ser confirmadas (criando assim um ponto de confirmação diferente no índice ao qual são aplicadas). Comgit am
você, você estaria carregando as informações de confirmação (junto com o autor etc.) no índice ao qual é aplicada.git apply
é para corrigir seu repo (ruim),git am
pode fazer alterações legítimas nos recursos e incluí-lo no seu repo (abordagem preferida).git apply
é para aplicar diffs diretos (por exemplo, fromgit diff
), ao passo quegit am
é para aplicar patches e sequências de patches de e-mails, no formato mbox ou Maildir e é o "oposto" degit format-patch
.git am
tenta extrair mensagens de confirmação e detalhes do autor de mensagens de email, e é por isso que ele pode fazer confirmações.fonte
Com
git am
a aplicação do patch, se você o usargit status
, não verá nenhuma alteração local.git apply
permite que você faça as alterações nos arquivos de origem como se você estivesse escrevendo o código por si mesmo, consequentementegit status
egit diff
saída vontade as alterações feitas no patch de ter aplicado, em seguida, você pode corrigir / adicionar mais mudanças e submetê-los juntos como um novo patch .fonte