Skip to content

Commit 7e3ead1

Browse files
committed
Merge branch 'mg/doc-revisions-txt'
* mg/doc-revisions-txt: revisions.txt: language improvements revisions.txt: structure with a labelled list revisions.txt: consistent use of quotes
2 parents fa38cfc + b62c769 commit 7e3ead1

File tree

1 file changed

+107
-91
lines changed

1 file changed

+107
-91
lines changed

Documentation/revisions.txt

Lines changed: 107 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,147 +1,163 @@
11
SPECIFYING REVISIONS
22
--------------------
33

4-
A revision parameter typically, but not necessarily, names a
5-
commit object. They use what is called an 'extended SHA1'
4+
A revision parameter '<rev>' typically, but not necessarily, names a
5+
commit object. It uses what is called an 'extended SHA1'
66
syntax. Here are various ways to spell object names. The
7-
ones listed near the end of this list are to name trees and
7+
ones listed near the end of this list name trees and
88
blobs contained in a commit.
99

10-
* The full SHA1 object name (40-byte hexadecimal string), or
11-
a substring of such that is unique within the repository.
10+
'<sha1>', e.g. 'dae86e1950b1277e545cee180551750029cfe735', 'dae86e'::
11+
The full SHA1 object name (40-byte hexadecimal string), or
12+
a leading substring that is unique within the repository.
1213
E.g. dae86e1950b1277e545cee180551750029cfe735 and dae86e both
13-
name the same commit object if there are no other object in
14+
name the same commit object if there is no other object in
1415
your repository whose object name starts with dae86e.
1516

16-
* An output from 'git describe'; i.e. a closest tag, optionally
17+
'<describeOutput>', e.g. 'v1.7.4.2-679-g3bee7fb'::
18+
Output from `git describe`; i.e. a closest tag, optionally
1719
followed by a dash and a number of commits, followed by a dash, a
18-
`g`, and an abbreviated object name.
20+
'g', and an abbreviated object name.
1921

20-
* A symbolic ref name. E.g. 'master' typically means the commit
21-
object referenced by refs/heads/master. If you
22-
happen to have both heads/master and tags/master, you can
22+
'<refname>', e.g. 'master', 'heads/master', 'refs/heads/master'::
23+
A symbolic ref name. E.g. 'master' typically means the commit
24+
object referenced by 'refs/heads/master'. If you
25+
happen to have both 'heads/master' and 'tags/master', you can
2326
explicitly say 'heads/master' to tell git which one you mean.
24-
When ambiguous, a `<name>` is disambiguated by taking the
27+
When ambiguous, a '<name>' is disambiguated by taking the
2528
first match in the following rules:
2629

27-
. if `$GIT_DIR/<name>` exists, that is what you mean (this is usually
28-
useful only for `HEAD`, `FETCH_HEAD`, `ORIG_HEAD`, `MERGE_HEAD`
29-
and `CHERRY_PICK_HEAD`);
30+
. If '$GIT_DIR/<name>' exists, that is what you mean (this is usually
31+
useful only for 'HEAD', 'FETCH_HEAD', 'ORIG_HEAD', 'MERGE_HEAD'
32+
and 'CHERRY_PICK_HEAD');
3033

31-
. otherwise, `refs/<name>` if exists;
34+
. otherwise, 'refs/<name>' if it exists;
3235

33-
. otherwise, `refs/tags/<name>` if exists;
36+
. otherwise, 'refs/tags/<refname>' if it exists;
3437

35-
. otherwise, `refs/heads/<name>` if exists;
38+
. otherwise, 'refs/heads/<name>' if it exists;
3639

37-
. otherwise, `refs/remotes/<name>` if exists;
40+
. otherwise, 'refs/remotes/<name>' if it exists;
3841

39-
. otherwise, `refs/remotes/<name>/HEAD` if exists.
42+
. otherwise, 'refs/remotes/<name>/HEAD' if it exists.
4043
+
41-
HEAD names the commit your changes in the working tree is based on.
42-
FETCH_HEAD records the branch you fetched from a remote repository
43-
with your last 'git fetch' invocation.
44-
ORIG_HEAD is created by commands that moves your HEAD in a drastic
45-
way, to record the position of the HEAD before their operation, so that
46-
you can change the tip of the branch back to the state before you ran
47-
them easily.
48-
MERGE_HEAD records the commit(s) you are merging into your branch
49-
when you run 'git merge'.
50-
CHERRY_PICK_HEAD records the commit you are cherry-picking
51-
when you run 'git cherry-pick'.
44+
'HEAD' names the commit on which you based the changes in the working tree.
45+
'FETCH_HEAD' records the branch which you fetched from a remote repository
46+
with your last `git fetch` invocation.
47+
'ORIG_HEAD' is created by commands that move your 'HEAD' in a drastic
48+
way, to record the position of the 'HEAD' before their operation, so that
49+
you can easily change the tip of the branch back to the state before you ran
50+
them.
51+
'MERGE_HEAD' records the commit(s) which you are merging into your branch
52+
when you run `git merge`.
53+
'CHERRY_PICK_HEAD' records the commit which you are cherry-picking
54+
when you run `git cherry-pick`.
5255
+
53-
Note that any of the `refs/*` cases above may come either from
54-
the `$GIT_DIR/refs` directory or from the `$GIT_DIR/packed-refs` file.
56+
Note that any of the 'refs/*' cases above may come either from
57+
the '$GIT_DIR/refs' directory or from the '$GIT_DIR/packed-refs' file.
5558

56-
* A ref followed by the suffix '@' with a date specification
59+
'<refname>@\{<date>\}', e.g. 'master@\{yesterday\}', 'HEAD@\{5 minutes ago\}'::
60+
A ref followed by the suffix '@' with a date specification
5761
enclosed in a brace
5862
pair (e.g. '\{yesterday\}', '\{1 month 2 weeks 3 days 1 hour 1
59-
second ago\}' or '\{1979-02-26 18:30:00\}') to specify the value
63+
second ago\}' or '\{1979-02-26 18:30:00\}') specifies the value
6064
of the ref at a prior point in time. This suffix may only be
6165
used immediately following a ref name and the ref must have an
62-
existing log ($GIT_DIR/logs/<ref>). Note that this looks up the state
66+
existing log ('$GIT_DIR/logs/<ref>'). Note that this looks up the state
6367
of your *local* ref at a given time; e.g., what was in your local
64-
`master` branch last week. If you want to look at commits made during
65-
certain times, see `--since` and `--until`.
68+
'master' branch last week. If you want to look at commits made during
69+
certain times, see '--since' and '--until'.
6670

67-
* A ref followed by the suffix '@' with an ordinal specification
68-
enclosed in a brace pair (e.g. '\{1\}', '\{15\}') to specify
71+
'<refname>@\{<n>\}', e.g. 'master@\{1\}'::
72+
A ref followed by the suffix '@' with an ordinal specification
73+
enclosed in a brace pair (e.g. '\{1\}', '\{15\}') specifies
6974
the n-th prior value of that ref. For example 'master@\{1\}'
7075
is the immediate prior value of 'master' while 'master@\{5\}'
7176
is the 5th prior value of 'master'. This suffix may only be used
7277
immediately following a ref name and the ref must have an existing
73-
log ($GIT_DIR/logs/<ref>).
78+
log ('$GIT_DIR/logs/<refname>').
7479

75-
* You can use the '@' construct with an empty ref part to get at a
76-
reflog of the current branch. For example, if you are on the
77-
branch 'blabla', then '@\{1\}' means the same as 'blabla@\{1\}'.
80+
'@\{<n>\}', e.g. '@\{1\}'::
81+
You can use the '@' construct with an empty ref part to get at a
82+
reflog entry of the current branch. For example, if you are on
83+
branch 'blabla' then '@\{1\}' means the same as 'blabla@\{1\}'.
7884

79-
* The special construct '@\{-<n>\}' means the <n>th branch checked out
85+
'@\{-<n>\}', e.g. '@\{-1\}'::
86+
The construct '@\{-<n>\}' means the <n>th branch checked out
8087
before the current one.
8188

82-
* The suffix '@\{upstream\}' to a ref (short form 'ref@\{u\}') refers to
83-
the branch the ref is set to build on top of. Missing ref defaults
89+
'<refname>@\{upstream\}', e.g. 'master@\{upstream\}', '@\{u\}'::
90+
The suffix '@\{upstream\}' to a ref (short form '<refname>@\{u\}') refers to
91+
the branch the ref is set to build on top of. A missing ref defaults
8492
to the current branch.
8593

86-
* A suffix '{caret}' to a revision parameter (e.g. 'HEAD{caret}') means the first parent of
94+
'<rev>{caret}', e.g. 'HEAD{caret}, v1.5.1{caret}0'::
95+
A suffix '{caret}' to a revision parameter means the first parent of
8796
that commit object. '{caret}<n>' means the <n>th parent (i.e.
88-
'rev{caret}'
89-
is equivalent to 'rev{caret}1'). As a special rule,
90-
'rev{caret}0' means the commit itself and is used when 'rev' is the
97+
'<rev>{caret}'
98+
is equivalent to '<rev>{caret}1'). As a special rule,
99+
'<rev>{caret}0' means the commit itself and is used when '<rev>' is the
91100
object name of a tag object that refers to a commit object.
92101

93-
* A suffix '{tilde}<n>' to a revision parameter means the commit
102+
'<rev>{tilde}<n>', e.g. 'master{tilde}3'::
103+
A suffix '{tilde}<n>' to a revision parameter means the commit
94104
object that is the <n>th generation grand-parent of the named
95-
commit object, following only the first parent. I.e. rev~3 is
96-
equivalent to rev{caret}{caret}{caret} which is equivalent to
97-
rev{caret}1{caret}1{caret}1. See below for a illustration of
105+
commit object, following only the first parents. I.e. '<rev>{tilde}3' is
106+
equivalent to '<rev>{caret}{caret}{caret}' which is equivalent to
107+
'<rev>{caret}1{caret}1{caret}1'. See below for an illustration of
98108
the usage of this form.
99109

100-
* A suffix '{caret}' followed by an object type name enclosed in
101-
brace pair (e.g. `v0.99.8{caret}\{commit\}`) means the object
110+
'<rev>{caret}\{<type>\}', e.g. 'v0.99.8{caret}\{commit\}'::
111+
A suffix '{caret}' followed by an object type name enclosed in
112+
brace pair means the object
102113
could be a tag, and dereference the tag recursively until an
103114
object of that type is found or the object cannot be
104-
dereferenced anymore (in which case, barf). `rev{caret}0`
105-
introduced earlier is a short-hand for `rev{caret}\{commit\}`.
115+
dereferenced anymore (in which case, barf). '<rev>{caret}0'
116+
is a short-hand for '<rev>{caret}\{commit\}'.
106117

107-
* A suffix '{caret}' followed by an empty brace pair
108-
(e.g. `v0.99.8{caret}\{\}`) means the object could be a tag,
118+
'<rev>{caret}\{\}', e.g. 'v0.99.8{caret}\{\}'::
119+
A suffix '{caret}' followed by an empty brace pair
120+
means the object could be a tag,
109121
and dereference the tag recursively until a non-tag object is
110122
found.
111123

112-
* A suffix '{caret}' to a revision parameter followed by a brace
113-
pair that contains a text led by a slash (e.g. `HEAD^{/fix nasty bug}`):
114-
this is the same as `:/fix nasty bug` syntax below except that
124+
'<rev>{caret}\{/<text>\}', e.g. 'HEAD^{/fix nasty bug}'::
125+
A suffix '{caret}' to a revision parameter, followed by a brace
126+
pair that contains a text led by a slash,
127+
is the same as the ':/fix nasty bug' syntax below except that
115128
it returns the youngest matching commit which is reachable from
116-
the ref before '{caret}'.
129+
the '<rev>' before '{caret}'.
117130

118-
* A colon, followed by a slash, followed by a text (e.g. `:/fix nasty bug`): this names
131+
':/<text>', e.g. ':/fix nasty bug'::
132+
A colon, followed by a slash, followed by a text, names
119133
a commit whose commit message matches the specified regular expression.
120134
This name returns the youngest matching commit which is
121135
reachable from any ref. If the commit message starts with a
122-
'!', you have to repeat that; the special sequence ':/!',
123-
followed by something else than '!' is reserved for now.
136+
'!' you have to repeat that; the special sequence ':/!',
137+
followed by something else than '!', is reserved for now.
124138
The regular expression can match any part of the commit message. To
125-
match messages starting with a string, one can use e.g. `:/^foo`.
139+
match messages starting with a string, one can use e.g. ':/^foo'.
126140

127-
* A suffix ':' followed by a path (e.g. `HEAD:README`); this names the blob or tree
141+
'<rev>:<path>', e.g. 'HEAD:README', ':README', 'master:./README'::
142+
A suffix ':' followed by a path names the blob or tree
128143
at the given path in the tree-ish object named by the part
129144
before the colon.
130-
':path' (with an empty part before the colon, e.g. `:README`)
145+
':path' (with an empty part before the colon)
131146
is a special case of the syntax described next: content
132147
recorded in the index at the given path.
133-
A path starting with './' or '../' is relative to current working directory.
134-
The given path will be converted to be relative to working tree's root directory.
148+
A path starting with './' or '../' is relative to the current working directory.
149+
The given path will be converted to be relative to the working tree's root directory.
135150
This is most useful to address a blob or tree from a commit or tree that has
136-
the same tree structure with the working tree.
151+
the same tree structure as the working tree.
137152

138-
* A colon, optionally followed by a stage number (0 to 3) and a
139-
colon, followed by a path (e.g. `:0:README`); this names a blob object in the
140-
index at the given path. Missing stage number (and the colon
141-
that follows it, e.g. `:README`) names a stage 0 entry. During a merge, stage
153+
':<n>:<path>', e.g. ':0:README', ':README'::
154+
A colon, optionally followed by a stage number (0 to 3) and a
155+
colon, followed by a path, names a blob object in the
156+
index at the given path. A missing stage number (and the colon
157+
that follows it) names a stage 0 entry. During a merge, stage
142158
1 is the common ancestor, stage 2 is the target branch's version
143159
(typically the current branch), and stage 3 is the version from
144-
the branch being merged.
160+
the branch which is being merged.
145161

146162
Here is an illustration, by Jon Loeliger. Both commit nodes B
147163
and C are parents of commit node A. Parent commits are ordered
@@ -175,31 +191,31 @@ G H I J
175191
SPECIFYING RANGES
176192
-----------------
177193

178-
History traversing commands such as 'git log' operate on a set
194+
History traversing commands such as `git log` operate on a set
179195
of commits, not just a single commit. To these commands,
180196
specifying a single revision with the notation described in the
181197
previous section means the set of commits reachable from that
182198
commit, following the commit ancestry chain.
183199

184-
To exclude commits reachable from a commit, a prefix `{caret}`
185-
notation is used. E.g. `{caret}r1 r2` means commits reachable
186-
from `r2` but exclude the ones reachable from `r1`.
200+
To exclude commits reachable from a commit, a prefix '{caret}'
201+
notation is used. E.g. '{caret}r1 r2' means commits reachable
202+
from 'r2' but exclude the ones reachable from 'r1'.
187203

188204
This set operation appears so often that there is a shorthand
189-
for it. When you have two commits `r1` and `r2` (named according
205+
for it. When you have two commits 'r1' and 'r2' (named according
190206
to the syntax explained in SPECIFYING REVISIONS above), you can ask
191207
for commits that are reachable from r2 excluding those that are reachable
192-
from r1 by `{caret}r1 r2` and it can be written as `r1..r2`.
208+
from r1 by '{caret}r1 r2' and it can be written as 'r1..r2'.
193209

194-
A similar notation `r1\...r2` is called symmetric difference
195-
of `r1` and `r2` and is defined as
196-
`r1 r2 --not $(git merge-base --all r1 r2)`.
210+
A similar notation 'r1\...r2' is called symmetric difference
211+
of 'r1' and 'r2' and is defined as
212+
'r1 r2 --not $(git merge-base --all r1 r2)'.
197213
It is the set of commits that are reachable from either one of
198-
`r1` or `r2` but not from both.
214+
'r1' or 'r2' but not from both.
199215

200216
Two other shorthands for naming a set that is formed by a commit
201-
and its parent commits exist. The `r1{caret}@` notation means all
202-
parents of `r1`. `r1{caret}!` includes commit `r1` but excludes
217+
and its parent commits exist. The 'r1{caret}@' notation means all
218+
parents of 'r1'. 'r1{caret}!' includes commit 'r1' but excludes
203219
all of its parents.
204220

205221
Here are a handful of examples:

0 commit comments

Comments
 (0)