What is the difference between git am and git apply?

git, patch

Solution

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

Problem

Both `git am` and `git apply` can be used to apply patches. It seems that `git am` automatically commits, whereas `git apply` only touches the files but doesn't create a commit. Is that the only difference?

Original source

Related problems