What is the difference between git am and git apply?

Christoph picture Christoph · Sep 3, 2012 · Viewed 74.1k times · Source

Both git am and git apply can be used to apply patches. I fail to see the difference. I see a difference now: git am automatically commits whereas git apply only touches the files but doesn't create a commit. Is that the only difference?

Answer

georgebrock picture georgebrock · Sep 3, 2012

Both the input and output are different:

  • git apply takes a patch (e.g. the output of git diff) and applies it to the working directory (or index, if --index or --cached is used).
  • git am takes a mailbox of commits formatted as an email messages (e.g. the output of git format-patch) and applies them to the current branch.

git am uses git apply behind the scenes, but does more work before (reading a Maildir or mbox, and parsing email messages) and after (creating commits).