Documentation: avoid poor-man's small caps GIT
[git/git.git] / Documentation / git.txt
CommitLineData
9e1f0a85 1git(1)
2cf565c5 2======
2cf565c5
DG
3
4NAME
5----
6git - the stupid content tracker
7
8
9SYNOPSIS
10--------
8b70004b 11[verse]
68e4b552
ZJS
12'git' [--version] [--help] [-c <name>=<value>]
13 [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
d49483f0
JT
14 [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
15 [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
68e4b552 16 <command> [<args>]
2cf565c5
DG
17
18DESCRIPTION
19-----------
23091e95
BF
20Git is a fast, scalable, distributed revision control system with an
21unusually rich command set that provides both high-level operations
22and full access to internals.
23
6998e4db 24See linkgit:gittutorial[7] to get started, then see
7687ae98
JH
25link:everyday.html[Everyday Git] for a useful minimum set of
26commands. The link:user-manual.html[Git User's Manual] has a more
27in-depth introduction.
cb22bc44 28
7687ae98
JH
29After you mastered the basic concepts, you can come back to this
30page to learn what commands git offers. You can learn more about
31individual git commands with "git help command". linkgit:gitcli[7]
32manual page gives you an overview of the command line command syntax.
4514ad4f 33
7687ae98
JH
34Formatted and hyperlinked version of the latest git documentation
35can be viewed at `http://git-htmldocs.googlecode.com/git/git.html`.
34b604af 36
26cfcfbf
JH
37ifdef::stalenotes[]
38[NOTE]
39============
26cfcfbf 40
2ff3f61a
JH
41You are reading the documentation for the latest (possibly
42unreleased) version of git, that is available from 'master'
43branch of the `git.git` repository.
44Documentation for older releases are available here:
43a8e4fe 45
e4f59a32 46* link:v1.8.1.1/git.html[documentation for release 1.8.1.1]
5d417842
JH
47
48* release notes for
e4f59a32 49 link:RelNotes/1.8.1.1.txt[1.8.1.1],
5d417842
JH
50 link:RelNotes/1.8.1.txt[1.8.1].
51
15999998 52* link:v1.8.0.3/git.html[documentation for release 1.8.0.3]
8c7a786b
JH
53
54* release notes for
15999998 55 link:RelNotes/1.8.0.3.txt[1.8.0.3],
3e53891f 56 link:RelNotes/1.8.0.2.txt[1.8.0.2],
ed9fe755
JH
57 link:RelNotes/1.8.0.1.txt[1.8.0.1],
58 link:RelNotes/1.8.0.txt[1.8.0].
8c7a786b 59
7e201053 60* link:v1.7.12.4/git.html[documentation for release 1.7.12.4]
889d3589
JH
61
62* release notes for
7e201053 63 link:RelNotes/1.7.12.4.txt[1.7.12.4],
234cd456 64 link:RelNotes/1.7.12.3.txt[1.7.12.3],
d8cf053d 65 link:RelNotes/1.7.12.2.txt[1.7.12.2],
304b7d99 66 link:RelNotes/1.7.12.1.txt[1.7.12.1],
889d3589
JH
67 link:RelNotes/1.7.12.txt[1.7.12].
68
bafc478f 69* link:v1.7.11.7/git.html[documentation for release 1.7.11.7]
0ce2e396
JH
70
71* release notes for
bafc478f 72 link:RelNotes/1.7.11.7.txt[1.7.11.7],
e09e4024 73 link:RelNotes/1.7.11.6.txt[1.7.11.6],
cd7c0be1 74 link:RelNotes/1.7.11.5.txt[1.7.11.5],
0e4c8822 75 link:RelNotes/1.7.11.4.txt[1.7.11.4],
e6dfbcf1 76 link:RelNotes/1.7.11.3.txt[1.7.11.3],
8d141a1d 77 link:RelNotes/1.7.11.2.txt[1.7.11.2],
0e64a95a 78 link:RelNotes/1.7.11.1.txt[1.7.11.1],
0ce2e396
JH
79 link:RelNotes/1.7.11.txt[1.7.11].
80
785ee496 81* link:v1.7.10.5/git.html[documentation for release 1.7.10.5]
e8dde3e5
JH
82
83* release notes for
785ee496 84 link:RelNotes/1.7.10.5.txt[1.7.10.5],
121f71f0 85 link:RelNotes/1.7.10.4.txt[1.7.10.4],
6a6d72b1 86 link:RelNotes/1.7.10.3.txt[1.7.10.3],
b6555d73 87 link:RelNotes/1.7.10.2.txt[1.7.10.2],
bf505158 88 link:RelNotes/1.7.10.1.txt[1.7.10.1],
e8dde3e5
JH
89 link:RelNotes/1.7.10.txt[1.7.10].
90
d0f1ea60 91* link:v1.7.9.7/git.html[documentation for release 1.7.9.7]
828ea97d
JH
92
93* release notes for
d0f1ea60 94 link:RelNotes/1.7.9.7.txt[1.7.9.7],
cb2ed324 95 link:RelNotes/1.7.9.6.txt[1.7.9.6],
8ced9c90 96 link:RelNotes/1.7.9.5.txt[1.7.9.5],
a4603481 97 link:RelNotes/1.7.9.4.txt[1.7.9.4],
69f4e08f 98 link:RelNotes/1.7.9.3.txt[1.7.9.3],
78f4c9f6 99 link:RelNotes/1.7.9.2.txt[1.7.9.2],
90020e3b 100 link:RelNotes/1.7.9.1.txt[1.7.9.1],
828ea97d
JH
101 link:RelNotes/1.7.9.txt[1.7.9].
102
d9f5ef7a 103* link:v1.7.8.6/git.html[documentation for release 1.7.8.6]
406da780
JH
104
105* release notes for
d9f5ef7a 106 link:RelNotes/1.7.8.6.txt[1.7.8.6],
cb2ed324 107 link:RelNotes/1.7.8.5.txt[1.7.8.5],
c572f491 108 link:RelNotes/1.7.8.4.txt[1.7.8.4],
5f4d133f
JH
109 link:RelNotes/1.7.8.3.txt[1.7.8.3],
110 link:RelNotes/1.7.8.2.txt[1.7.8.2],
111 link:RelNotes/1.7.8.1.txt[1.7.8.1],
406da780
JH
112 link:RelNotes/1.7.8.txt[1.7.8].
113
82588584 114* link:v1.7.7.7/git.html[documentation for release 1.7.7.7]
703f05ad
JH
115
116* release notes for
82588584 117 link:RelNotes/1.7.7.7.txt[1.7.7.7],
c572f491 118 link:RelNotes/1.7.7.6.txt[1.7.7.6],
66c11f02
JH
119 link:RelNotes/1.7.7.5.txt[1.7.7.5],
120 link:RelNotes/1.7.7.4.txt[1.7.7.4],
121 link:RelNotes/1.7.7.3.txt[1.7.7.3],
122 link:RelNotes/1.7.7.2.txt[1.7.7.2],
f7d958df 123 link:RelNotes/1.7.7.1.txt[1.7.7.1],
703f05ad
JH
124 link:RelNotes/1.7.7.txt[1.7.7].
125
f174a258 126* link:v1.7.6.6/git.html[documentation for release 1.7.6.6]
f696543d
JH
127
128* release notes for
f174a258 129 link:RelNotes/1.7.6.6.txt[1.7.6.6],
15b7898c 130 link:RelNotes/1.7.6.5.txt[1.7.6.5],
63205264 131 link:RelNotes/1.7.6.4.txt[1.7.6.4],
740a8fc2 132 link:RelNotes/1.7.6.3.txt[1.7.6.3],
509d5970
JH
133 link:RelNotes/1.7.6.2.txt[1.7.6.2],
134 link:RelNotes/1.7.6.1.txt[1.7.6.1],
f696543d
JH
135 link:RelNotes/1.7.6.txt[1.7.6].
136
e5af0de2 137* link:v1.7.5.4/git.html[documentation for release 1.7.5.4]
ec014eac
JH
138
139* release notes for
e5af0de2 140 link:RelNotes/1.7.5.4.txt[1.7.5.4],
3c3e0b3c 141 link:RelNotes/1.7.5.3.txt[1.7.5.3],
3d5ae435 142 link:RelNotes/1.7.5.2.txt[1.7.5.2],
2f312e88 143 link:RelNotes/1.7.5.1.txt[1.7.5.1],
ec014eac
JH
144 link:RelNotes/1.7.5.txt[1.7.5].
145
6ceb270c 146* link:v1.7.4.5/git.html[documentation for release 1.7.4.5]
7ed863a8
JH
147
148* release notes for
6ceb270c 149 link:RelNotes/1.7.4.5.txt[1.7.4.5],
6be05591 150 link:RelNotes/1.7.4.4.txt[1.7.4.4],
cb35c064
JH
151 link:RelNotes/1.7.4.3.txt[1.7.4.3],
152 link:RelNotes/1.7.4.2.txt[1.7.4.2],
9971d6d5 153 link:RelNotes/1.7.4.1.txt[1.7.4.1],
7ed863a8
JH
154 link:RelNotes/1.7.4.txt[1.7.4].
155
685e9d91 156* link:v1.7.3.5/git.html[documentation for release 1.7.3.5]
87b50542
JH
157
158* release notes for
685e9d91 159 link:RelNotes/1.7.3.5.txt[1.7.3.5],
15368e18 160 link:RelNotes/1.7.3.4.txt[1.7.3.4],
ed94cc76 161 link:RelNotes/1.7.3.3.txt[1.7.3.3],
8a904385 162 link:RelNotes/1.7.3.2.txt[1.7.3.2],
92c1e717 163 link:RelNotes/1.7.3.1.txt[1.7.3.1],
87b50542
JH
164 link:RelNotes/1.7.3.txt[1.7.3].
165
1b974346 166* link:v1.7.2.5/git.html[documentation for release 1.7.2.5]
64fdc08d
JH
167
168* release notes for
1b974346 169 link:RelNotes/1.7.2.5.txt[1.7.2.5],
ed94cc76 170 link:RelNotes/1.7.2.4.txt[1.7.2.4],
761e742d
NP
171 link:RelNotes/1.7.2.3.txt[1.7.2.3],
172 link:RelNotes/1.7.2.2.txt[1.7.2.2],
173 link:RelNotes/1.7.2.1.txt[1.7.2.1],
174 link:RelNotes/1.7.2.txt[1.7.2].
64fdc08d 175
1b974346 176* link:v1.7.1.4/git.html[documentation for release 1.7.1.4]
d599e048
JH
177
178* release notes for
1b974346 179 link:RelNotes/1.7.1.4.txt[1.7.1.4],
ed94cc76 180 link:RelNotes/1.7.1.3.txt[1.7.1.3],
761e742d
NP
181 link:RelNotes/1.7.1.2.txt[1.7.1.2],
182 link:RelNotes/1.7.1.1.txt[1.7.1.1],
183 link:RelNotes/1.7.1.txt[1.7.1].
d599e048 184
1b974346 185* link:v1.7.0.9/git.html[documentation for release 1.7.0.9]
e923eaeb
JH
186
187* release notes for
1b974346 188 link:RelNotes/1.7.0.9.txt[1.7.0.9],
ed94cc76 189 link:RelNotes/1.7.0.8.txt[1.7.0.8],
761e742d
NP
190 link:RelNotes/1.7.0.7.txt[1.7.0.7],
191 link:RelNotes/1.7.0.6.txt[1.7.0.6],
192 link:RelNotes/1.7.0.5.txt[1.7.0.5],
193 link:RelNotes/1.7.0.4.txt[1.7.0.4],
194 link:RelNotes/1.7.0.3.txt[1.7.0.3],
195 link:RelNotes/1.7.0.2.txt[1.7.0.2],
196 link:RelNotes/1.7.0.1.txt[1.7.0.1],
197 link:RelNotes/1.7.0.txt[1.7.0].
e923eaeb 198
1b974346 199* link:v1.6.6.3/git.html[documentation for release 1.6.6.3]
902f2353
JH
200
201* release notes for
1b974346 202 link:RelNotes/1.6.6.3.txt[1.6.6.3],
761e742d
NP
203 link:RelNotes/1.6.6.2.txt[1.6.6.2],
204 link:RelNotes/1.6.6.1.txt[1.6.6.1],
205 link:RelNotes/1.6.6.txt[1.6.6].
902f2353 206
1b974346 207* link:v1.6.5.9/git.html[documentation for release 1.6.5.9]
78d553b7
JH
208
209* release notes for
1b974346 210 link:RelNotes/1.6.5.9.txt[1.6.5.9],
761e742d
NP
211 link:RelNotes/1.6.5.8.txt[1.6.5.8],
212 link:RelNotes/1.6.5.7.txt[1.6.5.7],
213 link:RelNotes/1.6.5.6.txt[1.6.5.6],
214 link:RelNotes/1.6.5.5.txt[1.6.5.5],
215 link:RelNotes/1.6.5.4.txt[1.6.5.4],
216 link:RelNotes/1.6.5.3.txt[1.6.5.3],
217 link:RelNotes/1.6.5.2.txt[1.6.5.2],
218 link:RelNotes/1.6.5.1.txt[1.6.5.1],
219 link:RelNotes/1.6.5.txt[1.6.5].
78d553b7 220
1b974346 221* link:v1.6.4.5/git.html[documentation for release 1.6.4.5]
0a53e9dd
JH
222
223* release notes for
1b974346 224 link:RelNotes/1.6.4.5.txt[1.6.4.5],
761e742d
NP
225 link:RelNotes/1.6.4.4.txt[1.6.4.4],
226 link:RelNotes/1.6.4.3.txt[1.6.4.3],
227 link:RelNotes/1.6.4.2.txt[1.6.4.2],
228 link:RelNotes/1.6.4.1.txt[1.6.4.1],
229 link:RelNotes/1.6.4.txt[1.6.4].
0a53e9dd 230
441b40d8 231* link:v1.6.3.4/git.html[documentation for release 1.6.3.4]
6096d759
JH
232
233* release notes for
761e742d
NP
234 link:RelNotes/1.6.3.4.txt[1.6.3.4],
235 link:RelNotes/1.6.3.3.txt[1.6.3.3],
236 link:RelNotes/1.6.3.2.txt[1.6.3.2],
237 link:RelNotes/1.6.3.1.txt[1.6.3.1],
238 link:RelNotes/1.6.3.txt[1.6.3].
a95148de
JH
239
240* release notes for
761e742d
NP
241 link:RelNotes/1.6.2.5.txt[1.6.2.5],
242 link:RelNotes/1.6.2.4.txt[1.6.2.4],
243 link:RelNotes/1.6.2.3.txt[1.6.2.3],
244 link:RelNotes/1.6.2.2.txt[1.6.2.2],
245 link:RelNotes/1.6.2.1.txt[1.6.2.1],
246 link:RelNotes/1.6.2.txt[1.6.2].
a95148de 247
621f1b4b 248* link:v1.6.1.3/git.html[documentation for release 1.6.1.3]
8104ebfe
JH
249
250* release notes for
761e742d
NP
251 link:RelNotes/1.6.1.3.txt[1.6.1.3],
252 link:RelNotes/1.6.1.2.txt[1.6.1.2],
253 link:RelNotes/1.6.1.1.txt[1.6.1.1],
254 link:RelNotes/1.6.1.txt[1.6.1].
8104ebfe 255
efe05b01 256* link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
ea02eef0
JH
257
258* release notes for
761e742d
NP
259 link:RelNotes/1.6.0.6.txt[1.6.0.6],
260 link:RelNotes/1.6.0.5.txt[1.6.0.5],
261 link:RelNotes/1.6.0.4.txt[1.6.0.4],
262 link:RelNotes/1.6.0.3.txt[1.6.0.3],
263 link:RelNotes/1.6.0.2.txt[1.6.0.2],
264 link:RelNotes/1.6.0.1.txt[1.6.0.1],
265 link:RelNotes/1.6.0.txt[1.6.0].
ea02eef0 266
efe05b01 267* link:v1.5.6.6/git.html[documentation for release 1.5.6.6]
e449f105
JH
268
269* release notes for
761e742d
NP
270 link:RelNotes/1.5.6.6.txt[1.5.6.6],
271 link:RelNotes/1.5.6.5.txt[1.5.6.5],
272 link:RelNotes/1.5.6.4.txt[1.5.6.4],
273 link:RelNotes/1.5.6.3.txt[1.5.6.3],
274 link:RelNotes/1.5.6.2.txt[1.5.6.2],
275 link:RelNotes/1.5.6.1.txt[1.5.6.1],
276 link:RelNotes/1.5.6.txt[1.5.6].
e449f105 277
efe05b01 278* link:v1.5.5.6/git.html[documentation for release 1.5.5.6]
1d2375dd
JH
279
280* release notes for
761e742d
NP
281 link:RelNotes/1.5.5.6.txt[1.5.5.6],
282 link:RelNotes/1.5.5.5.txt[1.5.5.5],
283 link:RelNotes/1.5.5.4.txt[1.5.5.4],
284 link:RelNotes/1.5.5.3.txt[1.5.5.3],
285 link:RelNotes/1.5.5.2.txt[1.5.5.2],
286 link:RelNotes/1.5.5.1.txt[1.5.5.1],
287 link:RelNotes/1.5.5.txt[1.5.5].
1d2375dd 288
efe05b01 289* link:v1.5.4.7/git.html[documentation for release 1.5.4.7]
6ce8e44a
JH
290
291* release notes for
761e742d
NP
292 link:RelNotes/1.5.4.7.txt[1.5.4.7],
293 link:RelNotes/1.5.4.6.txt[1.5.4.6],
294 link:RelNotes/1.5.4.5.txt[1.5.4.5],
295 link:RelNotes/1.5.4.4.txt[1.5.4.4],
296 link:RelNotes/1.5.4.3.txt[1.5.4.3],
297 link:RelNotes/1.5.4.2.txt[1.5.4.2],
298 link:RelNotes/1.5.4.1.txt[1.5.4.1],
299 link:RelNotes/1.5.4.txt[1.5.4].
6ce8e44a 300
e708af6e 301* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
5587cac2
JH
302
303* release notes for
761e742d
NP
304 link:RelNotes/1.5.3.8.txt[1.5.3.8],
305 link:RelNotes/1.5.3.7.txt[1.5.3.7],
306 link:RelNotes/1.5.3.6.txt[1.5.3.6],
307 link:RelNotes/1.5.3.5.txt[1.5.3.5],
308 link:RelNotes/1.5.3.4.txt[1.5.3.4],
309 link:RelNotes/1.5.3.3.txt[1.5.3.3],
310 link:RelNotes/1.5.3.2.txt[1.5.3.2],
311 link:RelNotes/1.5.3.1.txt[1.5.3.1],
312 link:RelNotes/1.5.3.txt[1.5.3].
b6e4db6a 313
e636106c
JH
314* link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
315
aba170cd 316* release notes for
761e742d
NP
317 link:RelNotes/1.5.2.5.txt[1.5.2.5],
318 link:RelNotes/1.5.2.4.txt[1.5.2.4],
319 link:RelNotes/1.5.2.3.txt[1.5.2.3],
320 link:RelNotes/1.5.2.2.txt[1.5.2.2],
321 link:RelNotes/1.5.2.1.txt[1.5.2.1],
322 link:RelNotes/1.5.2.txt[1.5.2].
aba170cd
JH
323
324* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
325
326* release notes for
761e742d
NP
327 link:RelNotes/1.5.1.6.txt[1.5.1.6],
328 link:RelNotes/1.5.1.5.txt[1.5.1.5],
329 link:RelNotes/1.5.1.4.txt[1.5.1.4],
330 link:RelNotes/1.5.1.3.txt[1.5.1.3],
331 link:RelNotes/1.5.1.2.txt[1.5.1.2],
332 link:RelNotes/1.5.1.1.txt[1.5.1.1],
333 link:RelNotes/1.5.1.txt[1.5.1].
2ff3f61a
JH
334
335* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
336
aba170cd 337* release notes for
761e742d
NP
338 link:RelNotes/1.5.0.7.txt[1.5.0.7],
339 link:RelNotes/1.5.0.6.txt[1.5.0.6],
340 link:RelNotes/1.5.0.5.txt[1.5.0.5],
341 link:RelNotes/1.5.0.3.txt[1.5.0.3],
342 link:RelNotes/1.5.0.2.txt[1.5.0.2],
343 link:RelNotes/1.5.0.1.txt[1.5.0.1],
344 link:RelNotes/1.5.0.txt[1.5.0].
2ff3f61a
JH
345
346* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
347 link:v1.3.3/git.html[1.3.3],
348 link:v1.2.6/git.html[1.2.6],
349 link:v1.0.13/git.html[1.0.13].
26cfcfbf
JH
350
351============
352
353endif::stalenotes[]
354
cb22bc44
AE
355OPTIONS
356-------
357--version::
a87cd02c 358 Prints the git suite version that the 'git' program came from.
cb22bc44
AE
359
360--help::
a87cd02c 361 Prints the synopsis and a list of the most commonly used
0f6f195b
CC
362 commands. If the option '--all' or '-a' is given then all
363 available commands are printed. If a git command is named this
364 option will bring up the manual page for that command.
45533d26
CC
365+
366Other options are available to control how the manual page is
5162e697 367displayed. See linkgit:git-help[1] for more information,
db5d6666
JN
368because `git --help ...` is converted internally into `git
369help ...`.
cb22bc44 370
8b1fa778
AR
371-c <name>=<value>::
372 Pass a configuration parameter to the command. The value
373 given will override values from configuration files.
374 The <name> is expected in the same format as listed by
375 'git config' (subkeys separated by dots).
376
62b4698e 377--exec-path[=<path>]::
a87cd02c 378 Path to wherever your core git programs are installed.
cb22bc44 379 This can also be controlled by setting the GIT_EXEC_PATH
56992f76 380 environment variable. If no path is given, 'git' will print
cb22bc44
AE
381 the current setting and then exit.
382
89a56bfb 383--html-path::
239b5ed9
JN
384 Print the path, without trailing slash, where git's HTML
385 documentation is installed and exit.
89a56bfb 386
f2dd8c37 387--man-path::
239b5ed9
JN
388 Print the manpath (see `man(1)`) for the man pages for
389 this version of git and exit.
f2dd8c37
JS
390
391--info-path::
239b5ed9
JN
392 Print the path where the Info files documenting this
393 version of git are installed and exit.
89a56bfb 394
3240240f
SB
395-p::
396--paginate::
06300d97
JN
397 Pipe all output into 'less' (or if set, $PAGER) if standard
398 output is a terminal. This overrides the `pager.<cmd>`
399 configuration options (see the "Configuration Mechanism" section
400 below).
6acbcb92 401
463a849d
MM
402--no-pager::
403 Do not pipe git output into a pager.
404
6acbcb92
JS
405--git-dir=<path>::
406 Set the path to the repository. This can also be controlled by
302cc11a
LY
407 setting the GIT_DIR environment variable. It can be an absolute
408 path or relative path to current working directory.
6acbcb92 409
892c41b9 410--work-tree=<path>::
ea472c1e
JH
411 Set the path to the working tree. It can be an absolute path
412 or a path relative to the current working directory.
892c41b9
ML
413 This can also be controlled by setting the GIT_WORK_TREE
414 environment variable and the core.worktree configuration
ea472c1e
JH
415 variable (see core.worktree in linkgit:git-config[1] for a
416 more detailed discussion).
892c41b9 417
d49483f0
JT
418--namespace=<path>::
419 Set the git namespace. See linkgit:gitnamespaces[7] for more
420 details. Equivalent to setting the `GIT_NAMESPACE` environment
421 variable.
422
6acbcb92 423--bare::
9277d602
JH
424 Treat the repository as a bare repository. If GIT_DIR
425 environment is not set, it is set to the current working
426 directory.
427
b0fa7ab5
CC
428--no-replace-objects::
429 Do not use replacement refs to replace git objects. See
430 linkgit:git-replace[1] for more information.
431
823ab40f
JK
432--literal-pathspecs::
433 Treat pathspecs literally, rather than as glob patterns. This is
434 equivalent to setting the `GIT_LITERAL_PATHSPECS` environment
435 variable to `1`.
436
9755afbd 437
23091e95
BF
438GIT COMMANDS
439------------
9755afbd 440
23091e95
BF
441We divide git into high level ("porcelain") commands and low level
442("plumbing") commands.
8b15e2fb 443
23091e95
BF
444High-level commands (porcelain)
445-------------------------------
446
447We separate the porcelain commands into the main commands and some
448ancillary user utilities.
449
450Main porcelain commands
451~~~~~~~~~~~~~~~~~~~~~~~
905197de 452
377e8139 453include::cmds-mainporcelain.txt[]
e31bb3bb 454
90933efb 455Ancillary Commands
23091e95 456~~~~~~~~~~~~~~~~~~
2f2de9b4
JH
457Manipulators:
458
377e8139 459include::cmds-ancillarymanipulators.txt[]
204ee6a9 460
90933efb 461Interrogators:
204ee6a9 462
377e8139 463include::cmds-ancillaryinterrogators.txt[]
7fc9d69f 464
89bf2077
JH
465
466Interacting with Others
467~~~~~~~~~~~~~~~~~~~~~~~
468
469These commands are to interact with foreign SCM and with other
470people via patch over e-mail.
471
472include::cmds-foreignscminterface.txt[]
473
474
b1f33d62
RR
475Low-level commands (plumbing)
476-----------------------------
477
478Although git includes its
479own porcelain layer, its low-level commands are sufficient to support
480development of alternative porcelains. Developers of such porcelains
5162e697
DM
481might start by reading about linkgit:git-update-index[1] and
482linkgit:git-read-tree[1].
b1f33d62 483
89bf2077
JH
484The interface (input, output, set of options and the semantics)
485to these low-level commands are meant to be a lot more stable
486than Porcelain level commands, because these commands are
487primarily for scripted use. The interface to Porcelain commands
488on the other hand are subject to change in order to improve the
489end user experience.
490
491The following description divides
492the low-level commands into commands that manipulate objects (in
b1f33d62
RR
493the repository, index, and working tree), commands that interrogate and
494compare objects, and commands that move objects and references between
495repositories.
496
89bf2077 497
b1f33d62
RR
498Manipulation commands
499~~~~~~~~~~~~~~~~~~~~~
b1f33d62 500
377e8139 501include::cmds-plumbingmanipulators.txt[]
b1f33d62
RR
502
503
504Interrogation commands
505~~~~~~~~~~~~~~~~~~~~~~
506
377e8139 507include::cmds-plumbinginterrogators.txt[]
b1f33d62
RR
508
509In general, the interrogate commands do not touch the files in
510the working tree.
511
512
513Synching repositories
514~~~~~~~~~~~~~~~~~~~~~
515
377e8139 516include::cmds-synchingrepositories.txt[]
b1f33d62 517
57f6ec02 518The following are helper commands used by the above; end users
89bf2077
JH
519typically do not use them directly.
520
521include::cmds-synchelpers.txt[]
522
523
524Internal helper commands
525~~~~~~~~~~~~~~~~~~~~~~~~
526
527These are internal helper commands used by other commands; end
528users typically do not use them directly.
529
530include::cmds-purehelpers.txt[]
531
b1f33d62 532
5773c9f2
JH
533Configuration Mechanism
534-----------------------
535
2fa090b6 536Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
5773c9f2 537is used to hold per-repository configuration options. It is a
addf88e4 538simple text file modeled after `.ini` format familiar to some
5773c9f2
JH
539people. Here is an example:
540
541------------
542#
2fa090b6 543# A '#' or ';' character indicates a comment.
5773c9f2
JH
544#
545
546; core variables
547[core]
548 ; Don't trust file modes
549 filemode = false
550
551; user identity
552[user]
553 name = "Junio C Hamano"
554 email = "junkio@twinsun.com"
555
556------------
557
558Various commands read from the configuration file and adjust
06300d97
JN
559their operation accordingly. See linkgit:git-config[1] for a
560list.
5773c9f2
JH
561
562
6c84e2e0 563Identifier Terminology
2cf565c5
DG
564----------------------
565<object>::
2fa090b6 566 Indicates the object name for any type of object.
2cf565c5
DG
567
568<blob>::
2fa090b6 569 Indicates a blob object name.
2cf565c5
DG
570
571<tree>::
2fa090b6 572 Indicates a tree object name.
2cf565c5
DG
573
574<commit>::
2fa090b6 575 Indicates a commit object name.
2cf565c5
DG
576
577<tree-ish>::
2fa090b6 578 Indicates a tree, commit or tag object name. A
6c84e2e0
DG
579 command that takes a <tree-ish> argument ultimately wants to
580 operate on a <tree> object but automatically dereferences
581 <commit> and <tag> objects that point at a <tree>.
2cf565c5 582
043d7605
TT
583<commit-ish>::
584 Indicates a commit or tag object name. A
585 command that takes a <commit-ish> argument ultimately wants to
586 operate on a <commit> object but automatically dereferences
587 <tag> objects that point at a <commit>.
588
2cf565c5
DG
589<type>::
590 Indicates that an object type is required.
2fa090b6 591 Currently one of: `blob`, `tree`, `commit`, or `tag`.
2cf565c5
DG
592
593<file>::
2fa090b6
JH
594 Indicates a filename - almost always relative to the
595 root of the tree structure `GIT_INDEX_FILE` describes.
2cf565c5 596
c1bdacf9
DG
597Symbolic Identifiers
598--------------------
90933efb 599Any git command accepting any <object> can also use the following
6c84e2e0 600symbolic notation:
c1bdacf9
DG
601
602HEAD::
0abcfbff 603 indicates the head of the current branch.
2fa090b6 604
c1bdacf9 605<tag>::
2fa090b6 606 a valid tag 'name'
0abcfbff 607 (i.e. a `refs/tags/<tag>` reference).
2fa090b6 608
c1bdacf9 609<head>::
2fa090b6 610 a valid head 'name'
0abcfbff 611 (i.e. a `refs/heads/<head>` reference).
2fa090b6 612
d47107d8 613For a more complete list of ways to spell object names, see
9d83e382 614"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
d47107d8 615
c1bdacf9
DG
616
617File/Directory Structure
618------------------------
c1bdacf9 619
6998e4db 620Please see the linkgit:gitrepository-layout[5] document.
c1bdacf9 621
6998e4db 622Read linkgit:githooks[5] for more details about each hook.
6250ad1e 623
c1bdacf9 624Higher level SCMs may provide and manage additional information in the
2fa090b6 625`$GIT_DIR`.
c1bdacf9 626
a1d4aa74 627
2cf565c5
DG
628Terminology
629-----------
6998e4db 630Please see linkgit:gitglossary[7].
2cf565c5
DG
631
632
633Environment Variables
634---------------------
635Various git commands use the following environment variables:
636
c1bdacf9
DG
637The git Repository
638~~~~~~~~~~~~~~~~~~
639These environment variables apply to 'all' core git commands. Nb: it
640is worth noting that they may be used/overridden by SCMS sitting above
2fa090b6 641git so take care if using Cogito etc.
c1bdacf9
DG
642
643'GIT_INDEX_FILE'::
644 This environment allows the specification of an alternate
5f3aa197
LS
645 index file. If not specified, the default of `$GIT_DIR/index`
646 is used.
c1bdacf9
DG
647
648'GIT_OBJECT_DIRECTORY'::
649 If the object storage directory is specified via this
650 environment variable then the sha1 directories are created
651 underneath - otherwise the default `$GIT_DIR/objects`
652 directory is used.
653
654'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
655 Due to the immutable nature of git objects, old objects can be
656 archived into shared, read-only directories. This variable
80ba074f
JS
657 specifies a ":" separated (on Windows ";" separated) list
658 of git object directories which can be used to search for git
659 objects. New objects will not be written to these directories.
c1bdacf9
DG
660
661'GIT_DIR'::
2fa090b6
JH
662 If the 'GIT_DIR' environment variable is set then it
663 specifies a path to use instead of the default `.git`
664 for the base of the repository.
75940a00 665 The '--git-dir' command-line option also sets this value.
c1bdacf9 666
892c41b9
ML
667'GIT_WORK_TREE'::
668 Set the path to the working tree. The value will not be
669 used in combination with repositories found automatically in
670 a .git directory (i.e. $GIT_DIR is not set).
671 This can also be controlled by the '--work-tree' command line
672 option and the core.worktree configuration variable.
673
d49483f0
JT
674'GIT_NAMESPACE'::
675 Set the git namespace; see linkgit:gitnamespaces[7] for details.
676 The '--namespace' command-line option also sets this value.
677
0454dd93
DR
678'GIT_CEILING_DIRECTORIES'::
679 This should be a colon-separated list of absolute paths.
680 If set, it is a list of directories that git should not chdir
681 up into while looking for a repository directory.
682 It will not exclude the current working directory or
683 a GIT_DIR set on the command line or in the environment.
684 (Useful for excluding slow-loading network directories.)
685
cf87463e 686'GIT_DISCOVERY_ACROSS_FILESYSTEM'::
e6405517
JH
687 When run in a directory that does not have ".git" repository
688 directory, git tries to find such a directory in the parent
689 directories to find the top of the working tree, but by default it
690 does not cross filesystem boundaries. This environment variable
cf87463e
JH
691 can be set to true to tell git not to stop at filesystem
692 boundaries. Like 'GIT_CEILING_DIRECTORIES', this will not affect
693 an explicit repository directory set via 'GIT_DIR' or on the
694 command line.
8030e442 695
c1bdacf9
DG
696git Commits
697~~~~~~~~~~~
698'GIT_AUTHOR_NAME'::
699'GIT_AUTHOR_EMAIL'::
700'GIT_AUTHOR_DATE'::
701'GIT_COMMITTER_NAME'::
702'GIT_COMMITTER_EMAIL'::
4e58bf97 703'GIT_COMMITTER_DATE'::
28a94f88 704'EMAIL'::
5162e697 705 see linkgit:git-commit-tree[1]
c1bdacf9
DG
706
707git Diffs
708~~~~~~~~~
d81ed1b5 709'GIT_DIFF_OPTS'::
fde97d8a
SE
710 Only valid setting is "--unified=??" or "-u??" to set the
711 number of context lines shown when a unified diff is created.
712 This takes precedence over any "-U" or "--unified" option
713 value passed on the git diff command line.
714
d81ed1b5 715'GIT_EXTERNAL_DIFF'::
fde97d8a
SE
716 When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
717 program named by it is called, instead of the diff invocation
718 described above. For a path that is added, removed, or modified,
719 'GIT_EXTERNAL_DIFF' is called with 7 parameters:
720
721 path old-file old-hex old-mode new-file new-hex new-mode
722+
723where:
724
725 <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
726 contents of <old|new>,
727 <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
728 <old|new>-mode:: are the octal representation of the file modes.
fde97d8a
SE
729+
730The file parameters can point at the user's working file
731(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
732when a new file is added), or a temporary file (e.g. `old-file` in the
733index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
734temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
735+
736For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
737parameter, <path>.
2cf565c5 738
575ba9d6
ML
739other
740~~~~~
dbddb714
JN
741'GIT_MERGE_VERBOSITY'::
742 A number controlling the amount of output shown by
743 the recursive merge strategy. Overrides merge.verbosity.
5162e697 744 See linkgit:git-merge[1]
dbddb714 745
c27d205a 746'GIT_PAGER'::
a7738c77
SG
747 This environment variable overrides `$PAGER`. If it is set
748 to an empty string or to the value "cat", git will not launch
ab54cd6c
JN
749 a pager. See also the `core.pager` option in
750 linkgit:git-config[1].
c27d205a 751
36384c97
RSM
752'GIT_EDITOR'::
753 This environment variable overrides `$EDITOR` and `$VISUAL`.
b4ab1980 754 It is used by several git commands when, on interactive mode,
36384c97
RSM
755 an editor is to be launched. See also linkgit:git-var[1]
756 and the `core.editor` option in linkgit:git-config[1].
757
d5538b41 758'GIT_SSH'::
0b444cdb
TR
759 If this environment variable is set then 'git fetch'
760 and 'git push' will use this command instead
2fd02c92 761 of 'ssh' when they need to connect to a remote system.
483bc4f0 762 The '$GIT_SSH' command will be given exactly two arguments:
d5538b41
SP
763 the 'username@host' (or just 'host') from the URL and the
764 shell command to execute on that remote system.
765+
766To pass options to the program that you want to list in GIT_SSH
767you will need to wrap the program and options into a shell script,
768then set GIT_SSH to refer to the shell script.
769+
770Usually it is easier to configure any desired options through your
771personal `.ssh/config` file. Please consult your ssh documentation
772for further details.
773
453842c9
KF
774'GIT_ASKPASS'::
775 If this environment variable is set, then git commands which need to
776 acquire passwords or passphrases (e.g. for HTTP or IMAP authentication)
777 will call this program with a suitable prompt as command line argument
778 and read the password from its STDOUT. See also the 'core.askpass'
779 option in linkgit:git-config[1].
780
e8ef401c
JN
781'GIT_CONFIG_NOSYSTEM'::
782 Whether to skip reading settings from the system-wide
783 `$(prefix)/etc/gitconfig` file. This environment variable can
784 be used along with `$HOME` and `$XDG_CONFIG_HOME` to create a
785 predictable environment for a picky script, or you can set it
786 temporarily to avoid using a buggy `/etc/gitconfig` file while
787 waiting for someone with sufficient permissions to fix it.
788
06f59e9f
TT
789'GIT_FLUSH'::
790 If this environment variable is set to "1", then commands such
0b444cdb
TR
791 as 'git blame' (in incremental mode), 'git rev-list', 'git log',
792 and 'git whatchanged' will force a flush of the output stream
06f59e9f
TT
793 after each commit-oriented record have been flushed. If this
794 variable is set to "0", the output of these commands will be done
795 using completely buffered I/O. If this environment variable is
796 not set, git will choose buffered or record-oriented flushing
797 based on whether stdout appears to be redirected to a file or not.
798
575ba9d6 799'GIT_TRACE'::
2886bdb1
CC
800 If this variable is set to "1", "2" or "true" (comparison
801 is case insensitive), git will print `trace:` messages on
575ba9d6
ML
802 stderr telling about alias expansion, built-in command
803 execution and external command execution.
2886bdb1
CC
804 If this variable is set to an integer value greater than 1
805 and lower than 10 (strictly) then git will interpret this
806 value as an open file descriptor and will try to write the
807 trace messages into this file descriptor.
808 Alternatively, if this variable is set to an absolute path
809 (starting with a '/' character), git will interpret this
810 as a file path and will try to write the trace messages
811 into it.
575ba9d6 812
823ab40f
JK
813GIT_LITERAL_PATHSPECS::
814 Setting this variable to `1` will cause git to treat all
815 pathspecs literally, rather than as glob patterns. For example,
816 running `GIT_LITERAL_PATHSPECS=1 git log -- '*.c'` will search
817 for commits that touch the path `*.c`, not any paths that the
818 glob `*.c` matches. You might want this if you are feeding
819 literal paths to git (e.g., paths previously given to you by
820 `git ls-tree`, `--raw` diff output, etc).
821
822
8db9307c
JH
823Discussion[[Discussion]]
824------------------------
40dac517
BF
825
826More detail on the following is available from the
827link:user-manual.html#git-concepts[git concepts chapter of the
6998e4db 828user-manual] and linkgit:gitcore-tutorial[7].
40dac517
BF
829
830A git project normally consists of a working directory with a ".git"
831subdirectory at the top level. The .git directory contains, among other
832things, a compressed object database representing the complete history
833of the project, an "index" file which links that history to the current
834contents of the working tree, and named pointers into that history such
835as tags and branch heads.
836
837The object database contains objects of three main types: blobs, which
838hold file data; trees, which point to blobs and other trees to build up
02ff6250 839directory hierarchies; and commits, which each reference a single tree
40dac517
BF
840and some number of parent commits.
841
842The commit, equivalent to what other systems call a "changeset" or
843"version", represents a step in the project's history, and each parent
844represents an immediately preceding step. Commits with more than one
845parent represent merges of independent lines of development.
846
847All objects are named by the SHA1 hash of their contents, normally
848written as a string of 40 hex digits. Such names are globally unique.
849The entire history leading up to a commit can be vouched for by signing
850just that commit. A fourth object type, the tag, is provided for this
851purpose.
852
853When first created, objects are stored in individual files, but for
854efficiency may later be compressed together into "pack files".
855
856Named pointers called refs mark interesting points in history. A ref
857may contain the SHA1 name of an object or the name of another ref. Refs
858with names beginning `ref/head/` contain the SHA1 name of the most
02ff6250 859recent commit (or "head") of a branch under development. SHA1 names of
40dac517
BF
860tags of interest are stored under `ref/tags/`. A special ref named
861`HEAD` contains the name of the currently checked-out branch.
862
863The index file is initialized with a list of all paths and, for each
864path, a blob object and a set of attributes. The blob object represents
865the contents of the file as of the head of the current branch. The
866attributes (last modified time, size, etc.) are taken from the
867corresponding file in the working tree. Subsequent changes to the
868working tree can be found by comparing these attributes. The index may
869be updated with new content, and new commits may be created from the
870content stored in the index.
871
872The index is also capable of storing multiple entries (called "stages")
873for a given pathname. These stages are used to hold the various
874unmerged version of a file when a merge is in progress.
6c84e2e0 875
7687ae98
JH
876FURTHER DOCUMENTATION
877---------------------
878
879See the references in the "description" section to get started
880using git. The following is probably more detail than necessary
881for a first-time user.
882
883The link:user-manual.html#git-concepts[git concepts chapter of the
884user-manual] and linkgit:gitcore-tutorial[7] both provide
885introductions to the underlying git architecture.
886
887See linkgit:gitworkflows[7] for an overview of recommended workflows.
888
889See also the link:howto-index.html[howto] documents for some useful
890examples.
891
892The internals are documented in the
48a8c26c 893link:technical/api-index.html[Git API documentation].
7687ae98
JH
894
895Users migrating from CVS may also want to
896read linkgit:gitcvs-migration[7].
897
898
cb22bc44
AE
899Authors
900-------
48bb914e
JK
901Git was started by Linus Torvalds, and is currently maintained by Junio
902C Hamano. Numerous contributions have come from the git mailing list
6ecc01f2
JH
903<git@vger.kernel.org>. http://www.ohloh.net/p/git/contributors/summary
904gives you a more complete list of contributors.
905
906If you have a clone of git.git itself, the
d8f708f8
JK
907output of linkgit:git-shortlog[1] and linkgit:git-blame[1] can show you
908the authors for specific parts of the project.
2cf565c5 909
c97ca277
JH
910Reporting Bugs
911--------------
912
913Report bugs to the Git mailing list <git@vger.kernel.org> where the
914development and maintenance is primarily done. You do not have to be
915subscribed to the list to send a message there.
916
497c8331
CC
917SEE ALSO
918--------
919linkgit:gittutorial[7], linkgit:gittutorial-2[7],
5cbef01a 920link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
497c8331 921linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
801a011d
TR
922linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
923linkgit:gitworkflows[7]
497c8331 924
2cf565c5
DG
925GIT
926---
9e1f0a85 927Part of the linkgit:git[1] suite