В чем разница между git am и git apply?
И то и другое git am
а также git apply
может быть использован для применения патчей. Я не вижу разницы. Я вижу разницу сейчас: git am
автоматически фиксирует, тогда как git apply
только касается файлов, но не создает коммит. Это единственная разница?
3 ответа
И вход, и выход отличаются:
git apply
принимает патч (например, выводgit diff
) и применяет его к рабочему каталогу (или индексу, если--index
или же--cached
используется).git am
принимает почтовый ящик коммитов, отформатированных как сообщения электронной почты (например, выводgit format-patch
) и применяет их к текущей ветке.
git am
использования git apply
за кулисами, но делает больше работы раньше (читая Maildir
или же mbox
и анализ сообщений электронной почты) и после (создание коммитов).
git apply
для применения прямых различий (например, из git diff
) в то время как git am
предназначен для применения исправлений и последовательностей исправлений из электронных писем в формате mbox или Maildir и является "противоположностью" git format-patch
, git am
пытается извлечь сообщения о коммите и информацию об авторе из сообщений электронной почты, поэтому он может делать коммиты.
С git am
Вы применяете патч, так что если вы используете git status
вы не увидите никаких локальных изменений.
git apply
позволяет вносить изменения в исходные файлы, как если бы вы писали код самостоятельно, следовательно, git status
а также git diff
выведет изменения, сделанные в патче, который вы применили, затем вы сможете исправить / добавить больше изменений и отправить их вместе как один новый патч.