Câu trả lời:
Cả đầu vào và đầu ra đều khác nhau:
git applylấy một bản vá (ví dụ đầu ra của git diff) và áp dụng nó vào thư mục làm việc (hoặc chỉ mục, nếu --indexhoặc --cachedđược sử dụng).git amlấy một hộp thư xác nhận được định dạng dưới dạng một email (ví dụ: đầu ra của git format-patch) và áp dụng chúng cho chi nhánh hiện tại.git amsử dụng git applyđằng sau hậu trường , nhưng thực hiện nhiều công việc hơn trước (đọc một Maildirhoặc mbox, và phân tích thông điệp email) và sau (tạo cam kết).
git applydường như cũng chấp nhận git format-patchđầu ra.
git applycũng sẽ hoạt động cho đầu ra git format-patchnhưng các thay đổi sẽ không được thực hiện và sẽ cần phải được cam kết (do đó tạo ra một điểm cam kết khác trong chỉ mục mà chúng được áp dụng). Với git ambạn sẽ mang thông tin cam kết (cùng với tác giả, v.v.) vào chỉ mục mà nó được áp dụng. git applysau đó là để vá repo của bạn (xấu), git amcó thể thực hiện các thay đổi tính năng hợp pháp và đưa nó vào repo của bạn (phương pháp ưa thích).
git applylà để áp dụng các khác biệt thẳng (ví dụ từ git diff) trong khi đó git amlà để áp dụng các bản vá và chuỗi các bản vá từ email, có định dạng mbox hoặc Maildir và là "đối diện" của git format-patch. git amcố gắng trích xuất thông điệp cam kết và chi tiết về tác giả từ thông điệp email, đó là lý do tại sao nó có thể thực hiện cam kết.
Với git ambạn áp dụng bản vá, vì vậy nếu bạn sử dụng, git statusbạn sẽ không thấy bất kỳ thay đổi cục bộ nào.
git applyDo đó, cho phép bạn thực hiện các thay đổi trong tệp nguồn như thể bạn đang tự viết mã, git statusvà git diffsẽ đưa ra các thay đổi được thực hiện trong bản vá bạn đã áp dụng, sau đó bạn có thể sửa / thêm nhiều thay đổi và gửi chúng cùng nhau như một bản vá mới .
amcó thể được coi là viết tắt củaApply Mail...