In order:
Git has its own built-in diff but the outputs of both are quite similar, given the right options. Using the built-in diff and the
git diff
front-end gets you a whole lot of automation, plus the output is always somethinggit apply
orgit am
will like. In short, it's just a lot more convenient.I've done this sort of thing (fed
git diff
output topatch
, or plaindiff
output togit apply
). It works, although occasionally I have had to edit things here and there to get it to work, which is a pain. It's much more convenient to just get agit diff
if I want togit apply
orgit am
a patch. The biggest observable difference in general is thatgit apply
does not do partial apply by default: you must add--reject
to make it act like patch's default. (Also, all those.orig
files...)Yes, because of said convenience. When you go a bit further and use
git format-patch
andgit am
, you can mass-apply a whole series of patches, maintaining commit messages including authorship information and so on, and getting everything committed automatically.