Respostas:
Tanto a entrada quanto a saída são diferentes:
git apply
pega um patch (por exemplo, a saída de git 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 de git format-patch
) e as aplica à filial atual.git am
usa git apply
nos bastidores , mas faz mais trabalho antes (lendo um Maildir
ou mbox
e analisando mensagens de email) e depois (criando confirmações).
git apply
parece também aceitar git format-patch
saída.
git apply
funcionaria para a saída git 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). Com git 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, from git diff
), ao passo que git am
é para aplicar patches e sequências de patches de e-mails, no formato mbox ou Maildir e é o "oposto" de git 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.
Com git am
a aplicação do patch, se você o usar git 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, consequentemente git status
e git 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 .
am
poderia ser pensado como uma abreviação deApply Mail
...