You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.5 KiB
61 lines
2.5 KiB
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[]
|
|
|