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

This manual page describes only the most frequently used options.



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-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>. When omitted, the format defaults to medium.

Note: you can specify the default pretty format in the repository configuration (see git-config(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.


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.


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.

Here are some additional details for each format:


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 subdirectories

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


Written by Linus Torvalds <> and Junio C Hamano <>


Documentation by David Greaves, Junio C Hamano and the git-list <>.


Part of the git(1) suite