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