y---b---b branch B + / \ / + / . + / / \ + o---x---a---a branch A+
From: Junio C Hamano
This manual page describes only the most frequently used options.
- 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. -
-- Instead of showing the full 40-byte hexadecimal commit object - name, show only handful hexdigits 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.
-- 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. -
-+ Print out the ref names of any commits that are shown. +
++ Without this flag, "git log -p <paths>…" shows commits that + touch the specified paths, and diffs about the same specified + paths. With this, the full diff is shown for commits that touch + the specified paths; this means that "<paths>…" limits only + commits, and doesn't limit diff for those commits. +
++ Continue listing the history of a file beyond renames. +
++ Before the log message print out its size in bytes. Intended + mainly for porcelain tools consumption. If git is unable to + produce a valid value size is set to zero. + Note that only message is considered, if also a diff is shown + its size is not included. +
++ Show only commits that affect the specified paths. +
++ 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. +
++ Instead of showing the full 40-byte hexadecimal commit object + name, show only handful hexdigits 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.
++ 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. +
++ Synonym for --date=relative. +
++ Only takes effect for dates shown in human-readable format, such + as when using "--pretty". +
+--date=relative shows dates relative to the current time, +e.g. "2 hours ago".
+--date=local shows timestamps in user's local timezone.
+--date=iso (or --date=iso8601) shows timestamps in ISO 8601 format.
+--date=rfc (or --date=rfc2822) shows timestamps in RFC 2822 +format, often found in E-mail messages.
+--date=short shows only date but not time, in YYYY-MM-DD format.
+--date=default shows timestamps in the original timezone +(either committer's or author's).
++ Print the contents of the commit in raw-format; each record is + separated with a NUL character. +
++ Print the parents of the commit. +
++ Print the raw commit timestamp. +
++ Mark which side of a symmetric diff a commit is reachable from. + Commits from the left side are prefixed with < and those from + the right with >. If combined with --boundary, those + commits are prefixed with -. +
+For example, if you have this topology:
+y---b---b branch B + / \ / + / . + / / \ + o---x---a---a branch A+
you would get an output line this:
+$ git rev-list --left-right --boundary --pretty=oneline A...B + + >bbbbbbb... 3rd on b + >bbbbbbb... 2nd on b + <aaaaaaa... 3rd on a + <aaaaaaa... 2nd on a + -yyyyyyy... 1st on b + -xxxxxxx... 1st on a+
Below are listed options that control the formatting of diff output. +Some of them are specific to git-rev-list(1), however other diff +options may be given. See git-diff-files(1) for more options.
++ This flag changes the way a merge commit is displayed. It shows + the differences from each of the parents to the merge result + simultaneously instead of showing pairwise diff between a parent + and the result one at a time. Furthermore, it lists only files + which were modified from all parents. +
++ This flag implies the -c options and further compresses the + patch output by omitting hunks that show differences from only + one parent, or show the same change from all but one parent for + an Octopus merge. +
++ Show recursive diffs. +
++ Show the tree objects in the diff output. This implies -r. +
+Besides specifying a range of commits that should be listed using the +special notations explained in the description, additional commit +limiting may be applied.
++ Limit the number of commits output. +
++ Skip number commits before starting to show the commit output. +
++ Show commits more recent than a specific date. +
++ Show commits older than a specific date. +
++ Limit the commits output to specified time range. +
++ Limit the commits output to ones with author/committer + header lines that match the specified pattern (regular expression). +
++ Limit the commits output to ones with log message that + matches the specified pattern (regular expression). +
++ Match the regexp limiting patterns without regard to letters case. +
++ Consider the limiting patterns to be extended regular expressions + instead of the default basic regular expressions. +
++ Stop when a given path disappears from the tree. +
++ Show also parts of history irrelevant to current state of a given + path. This turns off history simplification, which removed merges + which didn't change anything at all at some child. It will still actually + simplify away merges that didn't change anything at all into either + child. +
++ Do not print commits with more than one parent. +
++ Reverses the meaning of the ^ prefix (or lack thereof) + for all following revision specifiers, up to the next --not. +
++ Pretend as if all the refs in $GIT_DIR/refs/ are listed on the + command line as <commit>. +
++ In addition to the <commit> listed on the command + line, read them from the standard input. +
++ Don't print anything to standard output. This form + is primarily meant to allow the caller to + test the exit status to see if a range of objects is fully + connected (or not). It is faster than redirecting stdout + to /dev/null as the output does not have to be formatted. +
+
+ Omit any commit that introduces the same change as
+ another commit on the "other side" when the set of
+ commits are limited with symmetric difference.
+For example, if you have two branches, A and B, a usual way
+to list all commits on only one side of them is with
+--left-right, like the example above in the description of
+that option. It however shows the commits that were cherry-picked
+from the other branch (for example, "3rd on b" may be cherry-picked
+from branch A). With this option, such pairs of commits are
+excluded from the output.
+
- Show commits as they were recorded in the reflog. The log contains
- a record about how the tip of a reference was changed.
- Cannot be combined with --reverse.
- See also git-reflog(1).
+ Instead of walking the commit ancestry chain, walk
+ reflog entries from the most recent one to older ones.
+ When this option is used you cannot specify commits to
+ exclude (that is, ^commit, commit1..commit2,
+ nor commit1…commit2 notations cannot be used).
+With --pretty format other than oneline (for obvious reasons),
+this causes the output to have two extra lines of information
+taken from the reflog. By default, commit@{Nth} notation is
+used in the output. When the starting commit is specified as
+instead. Under --pretty=oneline, the commit message is
+prefixed with this information on the same line.
Cannot be combined with --reverse. +See also git-reflog(1).
- Print out the ref names of any commits that are shown. + After a failed merge, show refs that touch files having a + conflict and don't exist on all heads to merge.
- Without this flag, "git log -p <paths>…" shows commits that - touch the specified paths, and diffs about the same specified - paths. With this, the full diff is shown for commits that touch - the specified paths; this means that "<paths>…" limits only - commits, and doesn't limit diff for those commits. + Output uninteresting commits at the boundary, which are usually + not shown.
- Continue listing the history of a file beyond renames. +When optional paths are given, the default behaviour (--dense) is to +only output commits that changes at least one of them, and also ignore +merges that do not touch the given paths.
+Use the --sparse flag to makes the command output all eligible commits +(still subject to count and age limitation), but apply merge +simplification nevertheless.
By default, the commits are shown in reverse chronological order.
+- Before the log message print out its size in bytes. Intended - mainly for porcelain tools consumption. If git is unable to - produce a valid value size is set to zero. - Note that only message is considered, if also a diff is shown - its size is not included. + This option makes them appear in topological order (i.e. + descendant commits are shown before their parents).
- Show only commits that affect the specified paths. + This option is similar to --topo-order in the sense that no + parent comes before all of its children, but otherwise things + are still ordered in the commit timestamp order. +
++ Output the commits in reverse order. + Cannot be combined with --walk-reflogs. +
+These options are mostly targeted for packing of git repositories.
++ Print the object IDs of any object referenced by the listed + commits. --objects foo ^bar thus means "send me + all object IDs which I need to download if I have the commit + object bar, but not foo". +
++ Similar to --objects, but also print the IDs of excluded + commits prefixed with a "-" character. This is used by + git-pack-objects(1) to build "thin" pack, which records + objects in deltified form based on objects contained in these + excluded commits to reduce network traffic. +
++ Only useful with --objects; print the object IDs that are not + in packs. +
++ Only show the given revs, but do not traverse their ancestors. +
++ Overrides a previous --no-walk.