• -N, --new-file -- treat absent files as empty
  • -a, --text -- treat all files as text
  • -u, -U NUM, --unified[=NUM] -- output NUM (default 3) lines of unified context
  • -r, --recursive -- recursively compare any subdirectories found
  • -p, --show-c-function -- show which C function each change is in

Use diff to create patches,

diff -Naur

to ignore .git and alike hidden folders from the diff,

diff -rupN -x '.*' ./original ./new > original.patch

Ref. http://www.mugginsoft.com/content/diff-ignoring-hidden-files