git-whatchanged
(1)
Name
git-whatchanged - Show logs with difference each commit
introduces
Synopsis
git whatchanged <option>...
Description
Git Manual GIT-WHATCHANGED(1)
NAME
git-whatchanged - Show logs with difference each commit
introduces
SYNOPSIS
git whatchanged <option>...
DESCRIPTION
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.
OPTIONS
-p
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.
-<n>
Limit output to <n> commits.
<since>..<until>
Limit output to between the two named commits (bottom
exclusive, top inclusive).
-r
Show git internal diff output, but for the whole tree,
not just the top level.
-m
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 1.7.9.2 Last change: 02/22/2012 1
Git Manual GIT-WHATCHANGED(1)
--abbrev-commit
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.
--no-abbrev-commit
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.
--oneline
This is a shorthand for "--pretty=oneline
--abbrev-commit" used together.
--encoding[=<encoding>]
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.
--notes[=<ref>]
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).
--no-notes
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 1.7.9.2 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
"refs/notes/bar".
--show-notes[=<ref>], --[no-]standard-notes
These options are deprecated. Use the above
--notes/--no-notes options instead.
PRETTY FORMATS
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 1.7.9.2 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 1.7.9.2 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-
log(1)
o %e: encoding
Git 1.7.9.2 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).
Note
Some placeholders may depend on other options given to
the revision traversal engine. For example, the %g*
Git 1.7.9.2 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
string.
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
example:
$ git log -2 --pretty=format:%h 4da45bef \
| perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
4da45be
7134973 -- NO NEWLINE
$ git log -2 --pretty=tformat:%h 4da45bef \
| perl -pe '$_ .= " -- NO NEWLINE\n" unless /\n/'
4da45be
7134973
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
EXAMPLES
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 1.7.9.2 Last change: 02/22/2012 7
Git Manual GIT-WHATCHANGED(1)
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
GIT
Part of the git(1) suite
ATTRIBUTES
See attributes(5) for descriptions of the following
attributes:
+---------------+--------------------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+--------------------------+
|Availability | developer/versioning/git |
+---------------+--------------------------+
|Stability | Uncommitted |
+---------------+--------------------------+
NOTES
This software was built from source available at
https://java.net/projects/solaris-userland. The original
community source was downloaded from http://git-
core.googlecode.com/files/git-1.7.9.2.tar.gz
Further information about this software can be found on the
open source community website at http://git-scm.com/.
Git 1.7.9.2 Last change: 02/22/2012 8