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