git log(1) --pretty=email --patch --stat --reverse -- path/to/file path/to/other/file > patch.txt
Show commit logs
Commit Formatting
    --pretty[=<format>], --format=<format>
        Pretty-print the contents of the commit logs in a given format, where <format> can be one of oneline,
        short, medium, full, fuller, email, raw and format:<string>. See the "PRETTY FORMATS" section for
        some additional details for each format. When omitted, the format defaults to medium.

        Note: you can specify the default pretty format in the repository configuration (see git-config(1)).
-p, -u, --patch
    Generate patch (see section on generating patches).
--stat[=<width>[,<name-width>[,<count>]]]
    Generate a diffstat. You can override the default output width for 80-column terminal by
    --stat=<width>. The width of the filename part can be controlled by giving another width to it
    separated by a comma. By giving a third parameter <count>, you can limit the output to the first
    <count> lines, followed by ...  if there are more.

    These parameters can also be set individually with --stat-width=<width>,
    --stat-name-width=<name-width> and --stat-count=<count>.
--reverse
    Output the commits in reverse order. Cannot be combined with --walk-reflogs.
<since>..<until>
    Show only commits between the named two commits. When either <since> or <until> is omitted, it
    defaults to HEAD, i.e. the tip of the current branch. For a more complete list of ways to spell
    <since> and <until>, see gitrevisions(7).

[--] <path>...
    Show only commits that are enough to explain how the files that match the specified paths came to be.
    See "History Simplification" below for details and other simplification modes.

    To prevent confusion with options and branch names, paths may need to be prefixed with "-- " to
    separate them from options or refnames.
Before a command is executed, its input and output may be redirected using a special notation interpreted
by  the  shell.   Redirection  may  also  be used to open and close files for the current shell execution
environment.  The following redirection operators may precede or appear anywhere within a simple  command
or may follow a command.  Redirections are processed in the order they appear, from left to right.

Redirecting Output
    Redirection of output causes the file whose name results from the expansion of  word  to  be  opened  for
    writing  on  file descriptor n, or the standard output (file descriptor 1) if n is not specified.  If the
    file does not exist it is created; if it does exist it is truncated to zero size.

    The general format for redirecting output is:

           [n]>word

    If the redirection operator is >, and the noclobber option to the  set  builtin  has  been  enabled,  the
    redirection  will  fail if the file whose name results from the expansion of word exists and is a regular
    file.  If the redirection operator is >|, or the redirection operator is > and the  noclobber  option  to
    the  set  builtin  command  is  not  enabled, the redirection is attempted even if the file named by word
    exists.
source manpages: git-log