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