mirror of
https://github.com/git/git
synced 2024-08-25 02:35:46 +00:00
![Philippe Blain](/assets/img/avatar_default.png)
The `git log` synopsis mentions `<revision range>`, and the description of this option links to gitrevisions(7), but a nice explanation of how a revision range can be constructed from individual commits, optionnally prefixed with `^`, also exists in `rev-list-description.txt`. Include this description in the man page for `git log`. Add Asciidoc 'ifdef's to `rev-list-description.txt` so that either `git rev-list` or `git log` appears in the respective man pages. Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
62 lines
2.5 KiB
Plaintext
62 lines
2.5 KiB
Plaintext
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.
|
|
|
|
You can think of this as a set operation. Commits reachable from any of
|
|
the commits given on the command line form a set, 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:
|
|
|
|
ifdef::git-rev-list[]
|
|
-----------------------------------------------------------------------
|
|
$ git rev-list foo bar ^baz
|
|
-----------------------------------------------------------------------
|
|
endif::git-rev-list[]
|
|
ifdef::git-log[]
|
|
-----------------------------------------------------------------------
|
|
$ git log foo bar ^baz
|
|
-----------------------------------------------------------------------
|
|
endif::git-log[]
|
|
|
|
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 "^'<commit1>' '<commit2>'". For example, either of
|
|
the following may be used interchangeably:
|
|
|
|
ifdef::git-rev-list[]
|
|
-----------------------------------------------------------------------
|
|
$ git rev-list origin..HEAD
|
|
$ git rev-list HEAD ^origin
|
|
-----------------------------------------------------------------------
|
|
endif::git-rev-list[]
|
|
ifdef::git-log[]
|
|
-----------------------------------------------------------------------
|
|
$ git log origin..HEAD
|
|
$ git log HEAD ^origin
|
|
-----------------------------------------------------------------------
|
|
endif::git-log[]
|
|
|
|
Another special notation is "'<commit1>'...'<commit2>'" which is useful
|
|
for merges. The resulting set of commits is the symmetric difference
|
|
between the two operands. The following two commands are equivalent:
|
|
|
|
ifdef::git-rev-list[]
|
|
-----------------------------------------------------------------------
|
|
$ git rev-list A B --not $(git merge-base --all A B)
|
|
$ git rev-list A...B
|
|
-----------------------------------------------------------------------
|
|
endif::git-rev-list[]
|
|
ifdef::git-log[]
|
|
-----------------------------------------------------------------------
|
|
$ git log A B --not $(git merge-base --all A B)
|
|
$ git log A...B
|
|
-----------------------------------------------------------------------
|
|
endif::git-log[]
|