В чем разница между 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 выведет изменения, сделанные в патче, который вы применили, затем вы сможете исправить / добавить больше изменений и отправить их вместе как один новый патч.

Другие вопросы по тегам