Odpowiedzi:
Zarówno wejście, jak i wyjście są różne:
git apply
pobiera łatkę (np. wyjście git diff
) i stosuje je do katalogu roboczego (lub indeksu, jeśli --index
albo --cached
jest używany).git am
pobiera skrzynkę zatwierdzeń sformatowanych jako wiadomości e-mail (np. dane wyjściowe git format-patch
) i stosuje je do bieżącej gałęzi.git am
używa git apply
za kulisami , ale wykonuje więcej pracy przed (odczytywanie Maildir
lub mbox
i analizowanie wiadomości e-mail) i po (tworzenie zatwierdzeń).
git apply
wydaje się, że akceptuje również git format-patch
dane wyjściowe.
git apply
działałyby również dla danych wyjściowych z, git format-patch
ale zmiany byłyby niestabilne i musiałyby zostać zatwierdzone (tworząc w ten sposób inny punkt zatwierdzenia w indeksie, do którego są stosowane). Z git am
tobą przenosisz informacje o zatwierdzeniu (wraz z autorem itp.) Do indeksu, do którego jest stosowany. git apply
następnie służy do łatania repozytorium (złe), git am
może wprowadzić uzasadnione zmiany funkcji i dołączyć je do repozytorium (preferowane podejście).
git apply
służy do stosowania prostych różnic (np. z git diff
), podczas gdy git am
służy do nakładania łat i sekwencji łatek z e-maili, w formacie mbox lub Maildir i jest „przeciwieństwem” git format-patch
. git am
próbuje wyodrębnić informacje o zatwierdzeniach i dane autora z wiadomości e-mail, dlatego może dokonywać zatwierdzeń.
Po git am
zastosowaniu łatki, jeśli używasz git status
, nie zobaczysz żadnych lokalnych zmian.
git apply
umożliwia wprowadzanie zmian w plikach źródłowych tak, jakbyś sam pisał kod, w konsekwencji git status
i git diff
wypisze zmiany wprowadzone w łatce, którą zastosowałeś, następnie możesz naprawić / dodać więcej zmian i przesłać je razem jako jedną nową łatkę .
am
może być traktowane jako skrót odApply Mail
...