man pages section 1: User Commands

Exit Print View

Updated: July 2014

git-whatchanged (1)


git-whatchanged - Show logs with difference each commit introduces


git whatchanged <option>...


Git Manual                                     GIT-WHATCHANGED(1)

     git-whatchanged - Show logs with difference each commit

     git whatchanged <option>...

     Shows commit logs and diff output each commit introduces.
     The command internally invokes git rev-list piped to git
     diff-tree, and takes command line options for both of these

     This manual page describes only the most frequently used

         Show textual diffs, instead of the git internal diff
         output format that is useful only to tell the changed
         paths and their nature of changes.

         Limit output to <n> commits.

         Limit output to between the two named commits (bottom
         exclusive, top inclusive).

         Show git internal diff output, but for the whole tree,
         not just the top level.

         By default, differences for merge commits are not shown.
         With this flag, show differences to that commit from all
         of its parents.

         However, it is not very useful in general, although it
         is useful on a file-by-file basis.

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

Git          Last change: 02/22/2012                    1

Git Manual                                     GIT-WHATCHANGED(1)

         Instead of showing the full 40-byte hexadecimal commit
         object name, show only a partial prefix. Non default
         number of digits can be specified with "--abbrev=<n>"
         (which also modifies diff output, if it is displayed).

         This should make "--pretty=oneline" a whole lot more
         readable for people using 80-column terminals.

         Show the full 40-byte hexadecimal commit object name.
         This negates --abbrev-commit and those options which
         imply it such as "--oneline". It also overrides the
         log.abbrevCommit variable.

         This is a shorthand for "--pretty=oneline
         --abbrev-commit" used together.

         The commit objects record the encoding used for the log
         message in their encoding header; this option can be
         used to tell the command to re-code the commit log
         message in the encoding preferred by the user. For non
         plumbing commands this defaults to UTF-8.

         Show the notes (see git-notes(1)) that annotate the
         commit, when showing the commit log message. This is the
         default for git log, git show and git whatchanged
         commands when there is no --pretty, --format nor
         --oneline option given on the command line.

         By default, the notes shown are from the notes refs
         listed in the core.notesRef and notes.displayRef
         variables (or corresponding environment overrides). See
         git-config(1) for more details.

         With an optional <ref> argument, show this notes ref
         instead of the default notes ref(s). The ref is taken to
         be in refs/notes/ if it is not qualified.

         Multiple --notes options can be combined to control
         which notes are being displayed. Examples: "--notes=foo"
         will show only notes from "refs/notes/foo"; "--notes=foo
         --notes" will show both notes from "refs/notes/foo" and
         from the default notes ref(s).

         Do not show notes. This negates the above --notes
         option, by resetting the list of notes refs from which
         notes are shown. Options are parsed in the order given

Git          Last change: 02/22/2012                    2

Git Manual                                     GIT-WHATCHANGED(1)

         on the command line, so e.g. "--notes --notes=foo
         --no-notes --notes=bar" will only show notes from

     --show-notes[=<ref>], --[no-]standard-notes
         These options are deprecated. Use the above
         --notes/--no-notes options instead.

     If the commit is a merge, and if the pretty-format is not
     oneline, email or raw, an additional line is inserted before
     the Author: line. This line begins with "Merge: " and the
     sha1s of ancestral commits are printed, separated by spaces.
     Note that the listed commits may not necessarily be the list
     of the direct parent commits if you have limited your view
     of history: for example, if you are only interested in
     changes related to a certain directory or file.

     There are several built-in formats, and you can define
     additional formats by setting a pretty.<name> config option
     to either another format name, or a format: string, as
     described below (see git-config(1)). Here are the details of
     the built-in formats:

     o    oneline

             <sha1> <title line>

         This is designed to be as compact as possible.

     o    short

             commit <sha1>
             Author: <author>

             <title line>

     o    medium

             commit <sha1>
             Author: <author>
             Date:   <author date>

             <title line>

             <full commit message>

     o    full

             commit <sha1>
             Author: <author>
             Commit: <committer>

Git          Last change: 02/22/2012                    3

Git Manual                                     GIT-WHATCHANGED(1)

             <title line>

             <full commit message>

     o    fuller

             commit <sha1>
             Author:     <author>
             AuthorDate: <author date>
             Commit:     <committer>
             CommitDate: <committer date>

             <title line>

             <full commit message>

     o    email

             From <sha1> <date>
             From: <author>
             Date: <author date>
             Subject: [PATCH] <title line>

             <full commit message>

     o    raw

         The raw format shows the entire commit exactly as stored
         in the commit object. Notably, the SHA1s are displayed
         in full, regardless of whether --abbrev or --no-abbrev
         are used, and parents information show the true parent
         commits, without taking grafts nor history
         simplification into account.

     o    format:<string>

         The format:<string> format allows you to specify which
         information you want to show. It works a little bit like
         printf format, with the notable exception that you get a
         newline with %n instead of \n.

         E.g, format:"The author of %h was %an, %ar%nThe title
         was >>%s<<%n" would show something like this:

             The author of fe6e0ee was Junio C Hamano, 23 hours ago
             The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<

         The placeholders are:

         o    %H: commit hash

         o    %h: abbreviated commit hash

Git          Last change: 02/22/2012                    4

Git Manual                                     GIT-WHATCHANGED(1)

         o    %T: tree hash

         o    %t: abbreviated tree hash

         o    %P: parent hashes

         o    %p: abbreviated parent hashes

         o    %an: author name

         o    %aN: author name (respecting .mailmap, see git-
             shortlog(1) or git-blame(1))

         o    %ae: author email

         o    %aE: author email (respecting .mailmap, see git-
             shortlog(1) or git-blame(1))

         o    %ad: author date (format respects --date= option)

         o    %aD: author date, RFC2822 style

         o    %ar: author date, relative

         o    %at: author date, UNIX timestamp

         o    %ai: author date, ISO 8601 format

         o    %cn: committer name

         o    %cN: committer name (respecting .mailmap, see git-
             shortlog(1) or git-blame(1))

         o    %ce: committer email

         o    %cE: committer email (respecting .mailmap, see git-
             shortlog(1) or git-blame(1))

         o    %cd: committer date

         o    %cD: committer date, RFC2822 style

         o    %cr: committer date, relative

         o    %ct: committer date, UNIX timestamp

         o    %ci: committer date, ISO 8601 format

         o    %d: ref names, like the --decorate option of git-

         o    %e: encoding

Git          Last change: 02/22/2012                    5

Git Manual                                     GIT-WHATCHANGED(1)

         o    %s: subject

         o    %f: sanitized subject line, suitable for a filename

         o    %b: body

         o    %B: raw body (unwrapped subject and body)

         o    %N: commit notes

         o    %gD: reflog selector, e.g., refs/stash@{1}

         o    %gd: shortened reflog selector, e.g., stash@{1}

         o    %gn: reflog identity name

         o    %gN: reflog identity name (respecting .mailmap, see
             git-shortlog(1) or git-blame(1))

         o    %ge: reflog identity email

         o    %gE: reflog identity email (respecting .mailmap,
             see git-shortlog(1) or git-blame(1))

         o    %gs: reflog subject

         o    %Cred: switch color to red

         o    %Cgreen: switch color to green

         o    %Cblue: switch color to blue

         o    %Creset: reset color

         o    %C(...): color specification, as described in
             color.branch.* config option

         o    %m: left, right or boundary mark

         o    %n: newline

         o    %%: a raw %

         o    %x00: print a byte from a hex code

         o    %w([<w>[,<i1>[,<i2>]]]): switch line wrapping, like
             the -w option of git-shortlog(1).


         Some placeholders may depend on other options given to
         the revision traversal engine. For example, the %g*

Git          Last change: 02/22/2012                    6

Git Manual                                     GIT-WHATCHANGED(1)

         reflog options will insert an empty string unless we are
         traversing reflog entries (e.g., by git log -g). The %d
         placeholder will use the "short" decoration format if
         --decorate was not already provided on the command line.

     If you add a + (plus sign) after % of a placeholder, a
     line-feed is inserted immediately before the expansion if
     and only if the placeholder expands to a non-empty string.

     If you add a - (minus sign) after % of a placeholder,
     line-feeds that immediately precede the expansion are
     deleted if and only if the placeholder expands to an empty

     If you add a ` ` (space) after % of a placeholder, a space
     is inserted immediately before the expansion if and only if
     the placeholder expands to a non-empty string.

     o    tformat:

         The tformat: format works exactly like format:, except
         that it provides "terminator" semantics instead of
         "separator" semantics. In other words, each commit has
         the message terminator character (usually a newline)
         appended, rather than a separator placed between
         entries. This means that the final entry of a
         single-line format will be properly terminated with a
         new line, just as the "oneline" format does. For

             $ git log -2 --pretty=format:%h 4da45bef \
               | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
             7134973 -- NO NEWLINE

             $ git log -2 --pretty=tformat:%h 4da45bef \
               | perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'

         In addition, any unrecognized string that has a % in it
         is interpreted as if it has tformat: in front of it. For
         example, these two are equivalent:

             $ git log -2 --pretty=tformat:%h 4da45bef
             $ git log -2 --pretty=%h 4da45bef

     git whatchanged -p v2.6.12.. include/scsi drivers/scsi
         Show as patches the commits since version v2.6.12 that
         changed any file in the include/scsi or drivers/scsi

Git          Last change: 02/22/2012                    7

Git Manual                                     GIT-WHATCHANGED(1)


     git whatchanged --since="2 weeks ago" -- gitk
         Show the changes during the last two weeks to the file
         gitk. The "--" is necessary to avoid confusion with the
         branch named gitk

     Part of the git(1) suite

     See attributes(5) for descriptions of the following

     |Availability   | developer/versioning/git |
     |Stability      | Uncommitted              |
     This software was built from source available at  The original
     community source was downloaded from  http://git-

     Further information about this software can be found on the
     open source community website at

Git          Last change: 02/22/2012                    8