From the manuals git-format-patch prepares patches suitable for email submission, while git-diff shows changes.
They are two different things and have different purposes, they just happen to output a patch format. But git-format-patch
adds data about a commit (date, author, commit message) and bundles it up into a format that is suitable for sending as a Unix mail message (although these are just files, so they can be sent to other methods and still applied by git-am).
Also git-format-patch
generates a patch file for each commit in the range that you specify. These changes will be added as commits to your repository with git-am
.
git-diff
just shows the diff between the two states you ask for, and can be used to create a patch file. But this is just a normal patch file and applying the patch will just change the state of the working directory.
And yes, you can create a patch for your index that way.
git am
creates a commit whereasgit apply
"applies the patch but does not create a commit." – Mcgean