summaryrefslogtreecommitdiff
path: root/Documentation/git-rev-list.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/git-rev-list.txt')
-rw-r--r--Documentation/git-rev-list.txt337
1 files changed, 74 insertions, 263 deletions
diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt
index 4f145eaba4..7b49c85347 100644
--- a/Documentation/git-rev-list.txt
+++ b/Documentation/git-rev-list.txt
@@ -9,53 +9,88 @@ git-rev-list - Lists commit objects in reverse chronological order
SYNOPSIS
--------
[verse]
-'git-rev-list' [ \--max-count=number ]
- [ \--skip=number ]
- [ \--max-age=timestamp ]
- [ \--min-age=timestamp ]
- [ \--sparse ]
- [ \--no-merges ]
- [ \--remove-empty ]
- [ \--not ]
- [ \--all ]
- [ \--stdin ]
- [ \--topo-order ]
- [ \--parents ]
- [ \--encoding[=<encoding>] ]
- [ \--(author|committer|grep)=<pattern> ]
- [ [\--objects | \--objects-edge] [ \--unpacked ] ]
- [ \--pretty | \--header ]
- [ \--bisect ]
- [ \--merge ]
- [ \--reverse ]
- [ \--walk-reflogs ]
+'git rev-list' [ --max-count=<number> ]
+ [ --skip=<number> ]
+ [ --max-age=<timestamp> ]
+ [ --min-age=<timestamp> ]
+ [ --sparse ]
+ [ --merges ]
+ [ --no-merges ]
+ [ --min-parents=<number> ]
+ [ --no-min-parents ]
+ [ --max-parents=<number> ]
+ [ --no-max-parents ]
+ [ --first-parent ]
+ [ --remove-empty ]
+ [ --full-history ]
+ [ --not ]
+ [ --all ]
+ [ --branches[=<pattern>] ]
+ [ --tags[=<pattern>] ]
+ [ --remotes[=<pattern>] ]
+ [ --glob=<glob-pattern> ]
+ [ --ignore-missing ]
+ [ --stdin ]
+ [ --quiet ]
+ [ --topo-order ]
+ [ --parents ]
+ [ --timestamp ]
+ [ --left-right ]
+ [ --left-only ]
+ [ --right-only ]
+ [ --cherry-mark ]
+ [ --cherry-pick ]
+ [ --encoding=<encoding> ]
+ [ --(author|committer|grep)=<pattern> ]
+ [ --regexp-ignore-case | -i ]
+ [ --extended-regexp | -E ]
+ [ --fixed-strings | -F ]
+ [ --date=(local|relative|default|iso|iso-strict|rfc|short) ]
+ [ [ --objects | --objects-edge | --objects-edge-aggressive ]
+ [ --unpacked ] ]
+ [ --pretty | --header ]
+ [ --bisect ]
+ [ --bisect-vars ]
+ [ --bisect-all ]
+ [ --merge ]
+ [ --reverse ]
+ [ --walk-reflogs ]
+ [ --no-walk ] [ --do-walk ]
+ [ --count ]
+ [ --use-bitmap-index ]
<commit>... [ \-- <paths>... ]
DESCRIPTION
-----------
-Lists commit objects in reverse chronological order starting at the
-given commit(s), taking ancestry relationship into account. This is
-useful to produce human-readable log output.
+List commits that are reachable by following the `parent` links from the
+given commit(s), but exclude commits that are reachable from the one(s)
+given with a '{caret}' in front of them. The output is given in reverse
+chronological order by default.
-Commits which are stated with a preceding '{caret}' cause listing to
-stop at that point. Their parents are implied. Thus the following
-command:
+You can think of this as a set operation. Commits given on the command
+line form a set of commits that are reachable from any of them, and then
+commits reachable from any of the ones given with '{caret}' in front are
+subtracted from that set. The remaining commits are what comes out in the
+command's output. Various other options and paths parameters can be used
+to further limit the result.
+
+Thus, the following command:
-----------------------------------------------------------------------
- $ git-rev-list foo bar ^baz
+ $ git rev-list foo bar ^baz
-----------------------------------------------------------------------
-means "list all the commits which are included in 'foo' and 'bar', but
-not in 'baz'".
+means "list all the commits which are reachable from 'foo' or 'bar', but
+not from 'baz'".
A special notation "'<commit1>'..'<commit2>'" can be used as a
short-hand for "{caret}'<commit1>' '<commit2>'". For example, either of
the following may be used interchangeably:
-----------------------------------------------------------------------
- $ git-rev-list origin..HEAD
- $ git-rev-list HEAD ^origin
+ $ git rev-list origin..HEAD
+ $ git rev-list HEAD ^origin
-----------------------------------------------------------------------
Another special notation is "'<commit1>'...'<commit2>'" which is useful
@@ -63,248 +98,24 @@ for merges. The resulting set of commits is the symmetric difference
between the two operands. The following two commands are equivalent:
-----------------------------------------------------------------------
- $ git-rev-list A B --not $(git-merge-base --all A B)
- $ git-rev-list A...B
+ $ git rev-list A B --not $(git merge-base --all A B)
+ $ git rev-list A...B
-----------------------------------------------------------------------
-gitlink:git-rev-list[1] is a very essential git program, since it
+'rev-list' is a very essential Git command, since it
provides the ability to build and traverse commit ancestry graphs. For
this reason, it has a lot of different options that enables it to be
-used by commands as different as gitlink:git-bisect[1] and
-gitlink:git-repack[1].
+used by commands as different as 'git bisect' and
+'git repack'.
OPTIONS
-------
-Commit Formatting
-~~~~~~~~~~~~~~~~~
-
-Using these options, gitlink:git-rev-list[1] will act similar to the
-more specialized family of commit log tools: gitlink:git-log[1],
-gitlink:git-show[1], and gitlink:git-whatchanged[1]
+:git-rev-list: 1
+include::rev-list-options.txt[]
include::pretty-formats.txt[]
---relative-date::
-
- Show dates relative to the current time, e.g. "2 hours ago".
- Only takes effect for dates shown in human-readable format, such
- as when using "--pretty".
-
---header::
-
- Print the contents of the commit in raw-format; each record is
- separated with a NUL character.
-
---parents::
-
- Print the parents of the commit.
-
-Diff Formatting
-~~~~~~~~~~~~~~~
-
-Below are listed options that control the formatting of diff output.
-Some of them are specific to gitlink:git-rev-list[1], however other diff
-options may be given. See gitlink:git-diff-files[1] for more options.
-
--c::
-
- 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.
-
---cc::
-
- 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.
-
--r::
-
- Show recursive diffs.
-
--t::
-
- Show the tree objects in the diff output. This implies '-r'.
-
-Commit Limiting
-~~~~~~~~~~~~~~~
-
-Besides specifying a range of commits that should be listed using the
-special notations explained in the description, additional commit
-limiting may be applied.
-
---
-
--n 'number', --max-count='number'::
-
- Limit the number of commits output.
-
---skip='number'::
-
- Skip 'number' commits before starting to show the commit output.
-
---since='date', --after='date'::
-
- Show commits more recent than a specific date.
-
---until='date', --before='date'::
-
- Show commits older than a specific date.
-
---max-age='timestamp', --min-age='timestamp'::
-
- Limit the commits output to specified time range.
-
---author='pattern', --committer='pattern'::
-
- Limit the commits output to ones with author/committer
- header lines that match the specified pattern.
-
---grep='pattern'::
-
- Limit the commits output to ones with log message that
- matches the specified pattern.
-
---remove-empty::
-
- Stop when a given path disappears from the tree.
-
---no-merges::
-
- Do not print commits with more than one parent.
-
---not::
-
- Reverses the meaning of the '{caret}' prefix (or lack thereof)
- for all following revision specifiers, up to the next '--not'.
-
---all::
-
- Pretend as if all the refs in `$GIT_DIR/refs/` are listed on the
- command line as '<commit>'.
-
---stdin::
-
- In addition to the '<commit>' listed on the command
- line, read them from the standard input.
-
--g, --walk-reflogs::
-
- 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, '{caret}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
-'commit@{now}', output also uses 'commit@{timestamp}' notation
-instead. Under '\--pretty=oneline', the commit message is
-prefixed with this information on the same line.
-
---merge::
-
- After a failed merge, show refs that touch files having a
- conflict and don't exist on all heads to merge.
-
---boundary::
-
- Output uninteresting commits at the boundary, which are usually
- not shown.
-
---dense, --sparse::
-
-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.
-
---bisect::
-
-Limit output to the one commit object which is roughly halfway between
-the included and excluded commits. Thus, if
-
------------------------------------------------------------------------
- $ git-rev-list --bisect foo ^bar ^baz
------------------------------------------------------------------------
-
-outputs 'midpoint', the output of the two commands
-
------------------------------------------------------------------------
- $ git-rev-list foo ^midpoint
- $ git-rev-list midpoint ^bar ^baz
------------------------------------------------------------------------
-
-would be of roughly the same length. Finding the change which
-introduces a regression is thus reduced to a binary search: repeatedly
-generate and test new 'midpoint's until the commit chain is of length
-one.
-
---
-
-Commit Ordering
-~~~~~~~~~~~~~~~
-
-By default, the commits are shown in reverse chronological order.
-
---topo-order::
-
- This option makes them appear in topological order (i.e.
- descendant commits are shown before their parents).
-
---date-order::
-
- 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.
-
---reverse::
-
- Output the commits in reverse order.
-
-Object Traversal
-~~~~~~~~~~~~~~~~
-
-These options are mostly targeted for packing of git repositories.
-
---objects::
-
- Print the object IDs of any object referenced by the listed
- commits. 'git-rev-list --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'".
-
---objects-edge::
-
- Similar to '--objects', but also print the IDs of excluded
- commits prefixed with a "-" character. This is used by
- gitlink: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.
-
---unpacked::
-
- Only useful with '--objects'; print the object IDs that are not
- in packs.
-
-Author
-------
-Written by Linus Torvalds <torvalds@osdl.org>
-
-Documentation
---------------
-Documentation by David Greaves, Junio C Hamano, Jonas Fonseca
-and the git-list <git@vger.kernel.org>.
-
GIT
---
-Part of the gitlink:git[7] suite
+Part of the linkgit:git[1] suite