зеркало из https://github.com/microsoft/git.git
62 строки
2.5 KiB
Plaintext
62 строки
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[]
|