Jaka jest różnica między git am i git apply?


134

Oba git ami git applymogą być używane do nakładania łat. Nie widzę różnicy. Teraz widzę różnicę: git amautomatycznie zatwierdza, podczas gdy git applydotyka tylko plików, ale nie tworzy zatwierdzenia. Czy to jedyna różnica?


11
ammoże być traktowane jako skrót od Apply Mail...
Philip Oakley,

Odpowiedzi:


144

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 --indexalbo --cachedjest używany).
  • git ampobiera skrzynkę zatwierdzeń sformatowanych jako wiadomości e-mail (np. dane wyjściowe git format-patch) i stosuje je do bieżącej gałęzi.

git amużywa git applyza kulisami , ale wykonuje więcej pracy przed (odczytywanie Maildirlub mboxi analizowanie wiadomości e-mail) i po (tworzenie zatwierdzeń).


6
Uwaga: git applywydaje się, że akceptuje również git format-patchdane wyjściowe.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

7
git applydziałałyby również dla danych wyjściowych z, git format-patchale 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 amtobą przenosisz informacje o zatwierdzeniu (wraz z autorem itp.) Do indeksu, do którego jest stosowany. git applynastępnie służy do łatania repozytorium (złe), git ammoże wprowadzić uzasadnione zmiany funkcji i dołączyć je do repozytorium (preferowane podejście).
Prasoon Joshi

18

git applysłuży do stosowania prostych różnic (np. z git diff), podczas gdy git amsł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 ampróbuje wyodrębnić informacje o zatwierdzeniach i dane autora z wiadomości e-mail, dlatego może dokonywać zatwierdzeń.


9

Po git amzastosowaniu łatki, jeśli używasz git status, nie zobaczysz żadnych lokalnych zmian.

git applyumożliwia wprowadzanie zmian w plikach źródłowych tak, jakbyś sam pisał kod, w konsekwencji git statusi git diffwypisze 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ę .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.