Jawaban:
Baik input dan output berbeda:
git apply
mengambil tambalan (misalnya output dari git diff
) dan menerapkannya ke direktori kerja (atau indeks, jika --index
atau --cached
digunakan).git am
mengambil kotak surat komit yang diformat sebagai pesan email (mis. output git format-patch
) dan menerapkannya ke cabang saat ini.git am
menggunakan di git apply
belakang layar , tetapi bekerja lebih banyak sebelum (membaca Maildir
atau mbox
, dan parsing pesan email) dan setelahnya (membuat komit).
git apply
sepertinya juga menerima git format-patch
output.
git apply
akan bekerja untuk output git format-patch
juga tetapi perubahan tidak akan bertahap dan perlu dilakukan (sehingga menciptakan titik komit yang berbeda dalam indeks mereka diterapkan). Dengan git am
Anda akan membawa informasi komit (bersama dengan penulis, dll.) Ke dalam indeks itu diterapkan. git apply
kemudian untuk menambal repo Anda (buruk), git am
dapat mengambil perubahan fitur yang sah dan memasukkannya ke dalam repo Anda (pendekatan yang disukai).
git apply
adalah untuk menerapkan perbedaan langsung (misalnya dari git diff
) sedangkan git am
untuk menerapkan tambalan dan urutan tambalan dari email, baik format mbox atau Maildir dan merupakan "kebalikan" dari git format-patch
. git am
mencoba mengekstrak pesan komit dan detail pembuat dari pesan email yang karenanya dapat membuat komitmen.
Dengan git am
Anda menerapkan tambalan jadi jika Anda menggunakan git status
Anda tidak akan melihat perubahan lokal.
git apply
memungkinkan Anda untuk membuat perubahan pada file sumber seolah-olah Anda sedang menulis kode sendiri, akibatnya git status
dan git diff
akan menampilkan perubahan yang dibuat dalam tambalan yang telah Anda terapkan, maka Anda dapat memperbaiki / menambahkan lebih banyak perubahan dan mengirimkannya bersama sebagai satu tambalan baru .
am
dapat dianggap sebagai singkatan dariApply Mail
...