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?
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).