]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git.txt
Documentation: sync example output with git output
[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]
463a849d
MM
12'git' [--version] [--exec-path[=GIT_EXEC_PATH]]
13 [-p|--paginate|--no-pager]
892c41b9
ML
14 [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
15 [--help] COMMAND [ARGS]
2cf565c5
DG
16
17DESCRIPTION
18-----------
23091e95
BF
19Git is a fast, scalable, distributed revision control system with an
20unusually rich command set that provides both high-level operations
21and full access to internals.
22
6998e4db 23See linkgit:gittutorial[7] to get started, then see
23091e95
BF
24link:everyday.html[Everyday Git] for a useful minimum set of commands, and
25"man git-commandname" for documentation of each command. CVS users may
6998e4db
JN
26also want to read linkgit:gitcvs-migration[7]. See
27the link:user-manual.html[Git User's Manual] for a more in-depth
a1dc34fa 28introduction.
cb22bc44 29
4514ad4f 30The COMMAND is either a name of a Git command (see below) or an alias
5162e697 31as defined in the configuration file (see linkgit:git-config[1]).
4514ad4f 32
34b604af
JA
33Formatted and hyperlinked version of the latest git
34documentation can be viewed at
35`http://www.kernel.org/pub/software/scm/git/docs/`.
36
26cfcfbf
JH
37ifdef::stalenotes[]
38[NOTE]
39============
26cfcfbf 40
2ff3f61a
JH
41You are reading the documentation for the latest (possibly
42unreleased) version of git, that is available from 'master'
43branch of the `git.git` repository.
44Documentation for older releases are available here:
43a8e4fe 45
f371d3ea 46* link:v1.6.0.5/git.html[documentation for release 1.6.0.5]
ea02eef0
JH
47
48* release notes for
f371d3ea 49 link:RelNotes-1.6.0.5.txt[1.6.0.5],
171d7661
JH
50 link:RelNotes-1.6.0.4.txt[1.6.0.4],
51 link:RelNotes-1.6.0.3.txt[1.6.0.3],
97a7a82f
JH
52 link:RelNotes-1.6.0.2.txt[1.6.0.2],
53 link:RelNotes-1.6.0.1.txt[1.6.0.1],
ea02eef0
JH
54 link:RelNotes-1.6.0.txt[1.6.0].
55
781c1834 56* link:v1.5.6.5/git.html[documentation for release 1.5.6.5]
e449f105
JH
57
58* release notes for
781c1834 59 link:RelNotes-1.5.6.5.txt[1.5.6.5],
09651dd8
JH
60 link:RelNotes-1.5.6.4.txt[1.5.6.4],
61 link:RelNotes-1.5.6.3.txt[1.5.6.3],
62 link:RelNotes-1.5.6.2.txt[1.5.6.2],
63 link:RelNotes-1.5.6.1.txt[1.5.6.1],
e636106c 64 link:RelNotes-1.5.6.txt[1.5.6].
e449f105 65
e636106c 66* link:v1.5.5.4/git.html[documentation for release 1.5.5.4]
1d2375dd
JH
67
68* release notes for
7064ca51 69 link:RelNotes-1.5.5.4.txt[1.5.5.4],
28bc3022 70 link:RelNotes-1.5.5.3.txt[1.5.5.3],
2d3922dc 71 link:RelNotes-1.5.5.2.txt[1.5.5.2],
66aaa2fc 72 link:RelNotes-1.5.5.1.txt[1.5.5.1],
1d2375dd
JH
73 link:RelNotes-1.5.5.txt[1.5.5].
74
803d5158 75* link:v1.5.4.5/git.html[documentation for release 1.5.4.5]
6ce8e44a
JH
76
77* release notes for
803d5158 78 link:RelNotes-1.5.4.5.txt[1.5.4.5],
ad416ed4 79 link:RelNotes-1.5.4.4.txt[1.5.4.4],
923d44ae 80 link:RelNotes-1.5.4.3.txt[1.5.4.3],
cf5c51ef 81 link:RelNotes-1.5.4.2.txt[1.5.4.2],
ecb879f8 82 link:RelNotes-1.5.4.1.txt[1.5.4.1],
6ce8e44a
JH
83 link:RelNotes-1.5.4.txt[1.5.4].
84
e708af6e 85* link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
5587cac2
JH
86
87* release notes for
e708af6e 88 link:RelNotes-1.5.3.8.txt[1.5.3.8],
b52e985a 89 link:RelNotes-1.5.3.7.txt[1.5.3.7],
4a44b9ea 90 link:RelNotes-1.5.3.6.txt[1.5.3.6],
afc05f9f 91 link:RelNotes-1.5.3.5.txt[1.5.3.5],
58ba4f6a 92 link:RelNotes-1.5.3.4.txt[1.5.3.4],
326df26d 93 link:RelNotes-1.5.3.3.txt[1.5.3.3],
077d6f72 94 link:RelNotes-1.5.3.2.txt[1.5.3.2],
8d863c98
JH
95 link:RelNotes-1.5.3.1.txt[1.5.3.1],
96 link:RelNotes-1.5.3.txt[1.5.3].
b6e4db6a 97
e636106c
JH
98* link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
99
aba170cd 100* release notes for
da899deb 101 link:RelNotes-1.5.2.5.txt[1.5.2.5],
baafd6e7 102 link:RelNotes-1.5.2.4.txt[1.5.2.4],
444649e5 103 link:RelNotes-1.5.2.3.txt[1.5.2.3],
3e48af38
JH
104 link:RelNotes-1.5.2.2.txt[1.5.2.2],
105 link:RelNotes-1.5.2.1.txt[1.5.2.1],
aba170cd
JH
106 link:RelNotes-1.5.2.txt[1.5.2].
107
108* link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
109
110* release notes for
111 link:RelNotes-1.5.1.6.txt[1.5.1.6],
112 link:RelNotes-1.5.1.5.txt[1.5.1.5],
2ff3f61a
JH
113 link:RelNotes-1.5.1.4.txt[1.5.1.4],
114 link:RelNotes-1.5.1.3.txt[1.5.1.3],
115 link:RelNotes-1.5.1.2.txt[1.5.1.2],
116 link:RelNotes-1.5.1.1.txt[1.5.1.1],
117 link:RelNotes-1.5.1.txt[1.5.1].
118
119* link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
120
aba170cd
JH
121* release notes for
122 link:RelNotes-1.5.0.7.txt[1.5.0.7],
2ff3f61a
JH
123 link:RelNotes-1.5.0.6.txt[1.5.0.6],
124 link:RelNotes-1.5.0.5.txt[1.5.0.5],
125 link:RelNotes-1.5.0.3.txt[1.5.0.3],
126 link:RelNotes-1.5.0.2.txt[1.5.0.2],
127 link:RelNotes-1.5.0.1.txt[1.5.0.1],
128 link:RelNotes-1.5.0.txt[1.5.0].
129
130* documentation for release link:v1.4.4.4/git.html[1.4.4.4],
131 link:v1.3.3/git.html[1.3.3],
132 link:v1.2.6/git.html[1.2.6],
133 link:v1.0.13/git.html[1.0.13].
26cfcfbf
JH
134
135============
136
137endif::stalenotes[]
138
cb22bc44
AE
139OPTIONS
140-------
141--version::
a87cd02c 142 Prints the git suite version that the 'git' program came from.
cb22bc44
AE
143
144--help::
a87cd02c 145 Prints the synopsis and a list of the most commonly used
0f6f195b
CC
146 commands. If the option '--all' or '-a' is given then all
147 available commands are printed. If a git command is named this
148 option will bring up the manual page for that command.
45533d26
CC
149+
150Other options are available to control how the manual page is
5162e697 151displayed. See linkgit:git-help[1] for more information,
db5d6666
JN
152because `git --help ...` is converted internally into `git
153help ...`.
cb22bc44
AE
154
155--exec-path::
a87cd02c 156 Path to wherever your core git programs are installed.
cb22bc44 157 This can also be controlled by setting the GIT_EXEC_PATH
56992f76 158 environment variable. If no path is given, 'git' will print
cb22bc44
AE
159 the current setting and then exit.
160
3240240f
SB
161-p::
162--paginate::
6acbcb92
JS
163 Pipe all output into 'less' (or if set, $PAGER).
164
463a849d
MM
165--no-pager::
166 Do not pipe git output into a pager.
167
6acbcb92
JS
168--git-dir=<path>::
169 Set the path to the repository. This can also be controlled by
302cc11a
LY
170 setting the GIT_DIR environment variable. It can be an absolute
171 path or relative path to current working directory.
6acbcb92 172
892c41b9
ML
173--work-tree=<path>::
174 Set the path to the working tree. The value will not be
175 used in combination with repositories found automatically in
176 a .git directory (i.e. $GIT_DIR is not set).
177 This can also be controlled by setting the GIT_WORK_TREE
178 environment variable and the core.worktree configuration
302cc11a
LY
179 variable. It can be an absolute path or relative path to
180 the directory specified by --git-dir or GIT_DIR.
181 Note: If --git-dir or GIT_DIR are specified but none of
182 --work-tree, GIT_WORK_TREE and core.worktree is specified,
183 the current working directory is regarded as the top directory
184 of your working tree.
892c41b9 185
6acbcb92 186--bare::
9277d602
JH
187 Treat the repository as a bare repository. If GIT_DIR
188 environment is not set, it is set to the current working
189 directory.
190
9755afbd 191
23091e95
BF
192FURTHER DOCUMENTATION
193---------------------
9755afbd 194
23091e95
BF
195See the references above to get started using git. The following is
196probably more detail than necessary for a first-time user.
8db9307c 197
40dac517 198The link:user-manual.html#git-concepts[git concepts chapter of the
6998e4db 199user-manual] and linkgit:gitcore-tutorial[7] both provide
40dac517 200introductions to the underlying git architecture.
e6fc2346 201
23091e95
BF
202See also the link:howto-index.html[howto] documents for some useful
203examples.
9755afbd 204
6998e4db
JN
205The internals are documented in the
206link:technical/api-index.html[GIT API documentation].
530e741c 207
23091e95
BF
208GIT COMMANDS
209------------
9755afbd 210
23091e95
BF
211We divide git into high level ("porcelain") commands and low level
212("plumbing") commands.
8b15e2fb 213
23091e95
BF
214High-level commands (porcelain)
215-------------------------------
216
217We separate the porcelain commands into the main commands and some
218ancillary user utilities.
219
220Main porcelain commands
221~~~~~~~~~~~~~~~~~~~~~~~
905197de 222
377e8139 223include::cmds-mainporcelain.txt[]
e31bb3bb 224
90933efb 225Ancillary Commands
23091e95 226~~~~~~~~~~~~~~~~~~
2f2de9b4
JH
227Manipulators:
228
377e8139 229include::cmds-ancillarymanipulators.txt[]
204ee6a9 230
90933efb 231Interrogators:
204ee6a9 232
377e8139 233include::cmds-ancillaryinterrogators.txt[]
7fc9d69f 234
89bf2077
JH
235
236Interacting with Others
237~~~~~~~~~~~~~~~~~~~~~~~
238
239These commands are to interact with foreign SCM and with other
240people via patch over e-mail.
241
242include::cmds-foreignscminterface.txt[]
243
244
b1f33d62
RR
245Low-level commands (plumbing)
246-----------------------------
247
248Although git includes its
249own porcelain layer, its low-level commands are sufficient to support
250development of alternative porcelains. Developers of such porcelains
5162e697
DM
251might start by reading about linkgit:git-update-index[1] and
252linkgit:git-read-tree[1].
b1f33d62 253
89bf2077
JH
254The interface (input, output, set of options and the semantics)
255to these low-level commands are meant to be a lot more stable
256than Porcelain level commands, because these commands are
257primarily for scripted use. The interface to Porcelain commands
258on the other hand are subject to change in order to improve the
259end user experience.
260
261The following description divides
262the low-level commands into commands that manipulate objects (in
b1f33d62
RR
263the repository, index, and working tree), commands that interrogate and
264compare objects, and commands that move objects and references between
265repositories.
266
89bf2077 267
b1f33d62
RR
268Manipulation commands
269~~~~~~~~~~~~~~~~~~~~~
b1f33d62 270
377e8139 271include::cmds-plumbingmanipulators.txt[]
b1f33d62
RR
272
273
274Interrogation commands
275~~~~~~~~~~~~~~~~~~~~~~
276
377e8139 277include::cmds-plumbinginterrogators.txt[]
b1f33d62
RR
278
279In general, the interrogate commands do not touch the files in
280the working tree.
281
282
283Synching repositories
284~~~~~~~~~~~~~~~~~~~~~
285
377e8139 286include::cmds-synchingrepositories.txt[]
b1f33d62 287
89bf2077
JH
288The following are helper programs used by the above; end users
289typically do not use them directly.
290
291include::cmds-synchelpers.txt[]
292
293
294Internal helper commands
295~~~~~~~~~~~~~~~~~~~~~~~~
296
297These are internal helper commands used by other commands; end
298users typically do not use them directly.
299
300include::cmds-purehelpers.txt[]
301
b1f33d62 302
5773c9f2
JH
303Configuration Mechanism
304-----------------------
305
2fa090b6 306Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
5773c9f2 307is used to hold per-repository configuration options. It is a
addf88e4 308simple text file modeled after `.ini` format familiar to some
5773c9f2
JH
309people. Here is an example:
310
311------------
312#
2fa090b6 313# A '#' or ';' character indicates a comment.
5773c9f2
JH
314#
315
316; core variables
317[core]
318 ; Don't trust file modes
319 filemode = false
320
321; user identity
322[user]
323 name = "Junio C Hamano"
324 email = "junkio@twinsun.com"
325
326------------
327
328Various commands read from the configuration file and adjust
329their operation accordingly.
330
331
6c84e2e0 332Identifier Terminology
2cf565c5
DG
333----------------------
334<object>::
2fa090b6 335 Indicates the object name for any type of object.
2cf565c5
DG
336
337<blob>::
2fa090b6 338 Indicates a blob object name.
2cf565c5
DG
339
340<tree>::
2fa090b6 341 Indicates a tree object name.
2cf565c5
DG
342
343<commit>::
2fa090b6 344 Indicates a commit object name.
2cf565c5
DG
345
346<tree-ish>::
2fa090b6 347 Indicates a tree, commit or tag object name. A
6c84e2e0
DG
348 command that takes a <tree-ish> argument ultimately wants to
349 operate on a <tree> object but automatically dereferences
350 <commit> and <tag> objects that point at a <tree>.
2cf565c5 351
043d7605
TT
352<commit-ish>::
353 Indicates a commit or tag object name. A
354 command that takes a <commit-ish> argument ultimately wants to
355 operate on a <commit> object but automatically dereferences
356 <tag> objects that point at a <commit>.
357
2cf565c5
DG
358<type>::
359 Indicates that an object type is required.
2fa090b6 360 Currently one of: `blob`, `tree`, `commit`, or `tag`.
2cf565c5
DG
361
362<file>::
2fa090b6
JH
363 Indicates a filename - almost always relative to the
364 root of the tree structure `GIT_INDEX_FILE` describes.
2cf565c5 365
c1bdacf9
DG
366Symbolic Identifiers
367--------------------
90933efb 368Any git command accepting any <object> can also use the following
6c84e2e0 369symbolic notation:
c1bdacf9
DG
370
371HEAD::
2fa090b6
JH
372 indicates the head of the current branch (i.e. the
373 contents of `$GIT_DIR/HEAD`).
374
c1bdacf9 375<tag>::
2fa090b6
JH
376 a valid tag 'name'
377 (i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
378
c1bdacf9 379<head>::
2fa090b6
JH
380 a valid head 'name'
381 (i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
382
d47107d8 383For a more complete list of ways to spell object names, see
5162e697 384"SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1].
d47107d8 385
c1bdacf9
DG
386
387File/Directory Structure
388------------------------
c1bdacf9 389
6998e4db 390Please see the linkgit:gitrepository-layout[5] document.
c1bdacf9 391
6998e4db 392Read linkgit:githooks[5] for more details about each hook.
6250ad1e 393
c1bdacf9 394Higher level SCMs may provide and manage additional information in the
2fa090b6 395`$GIT_DIR`.
c1bdacf9 396
a1d4aa74 397
2cf565c5
DG
398Terminology
399-----------
6998e4db 400Please see linkgit:gitglossary[7].
2cf565c5
DG
401
402
403Environment Variables
404---------------------
405Various git commands use the following environment variables:
406
c1bdacf9
DG
407The git Repository
408~~~~~~~~~~~~~~~~~~
409These environment variables apply to 'all' core git commands. Nb: it
410is worth noting that they may be used/overridden by SCMS sitting above
2fa090b6 411git so take care if using Cogito etc.
c1bdacf9
DG
412
413'GIT_INDEX_FILE'::
414 This environment allows the specification of an alternate
5f3aa197
LS
415 index file. If not specified, the default of `$GIT_DIR/index`
416 is used.
c1bdacf9
DG
417
418'GIT_OBJECT_DIRECTORY'::
419 If the object storage directory is specified via this
420 environment variable then the sha1 directories are created
421 underneath - otherwise the default `$GIT_DIR/objects`
422 directory is used.
423
424'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
425 Due to the immutable nature of git objects, old objects can be
426 archived into shared, read-only directories. This variable
80ba074f
JS
427 specifies a ":" separated (on Windows ";" separated) list
428 of git object directories which can be used to search for git
429 objects. New objects will not be written to these directories.
c1bdacf9
DG
430
431'GIT_DIR'::
2fa090b6
JH
432 If the 'GIT_DIR' environment variable is set then it
433 specifies a path to use instead of the default `.git`
434 for the base of the repository.
c1bdacf9 435
892c41b9
ML
436'GIT_WORK_TREE'::
437 Set the path to the working tree. The value will not be
438 used in combination with repositories found automatically in
439 a .git directory (i.e. $GIT_DIR is not set).
440 This can also be controlled by the '--work-tree' command line
441 option and the core.worktree configuration variable.
442
0454dd93
DR
443'GIT_CEILING_DIRECTORIES'::
444 This should be a colon-separated list of absolute paths.
445 If set, it is a list of directories that git should not chdir
446 up into while looking for a repository directory.
447 It will not exclude the current working directory or
448 a GIT_DIR set on the command line or in the environment.
449 (Useful for excluding slow-loading network directories.)
450
c1bdacf9
DG
451git Commits
452~~~~~~~~~~~
453'GIT_AUTHOR_NAME'::
454'GIT_AUTHOR_EMAIL'::
455'GIT_AUTHOR_DATE'::
456'GIT_COMMITTER_NAME'::
457'GIT_COMMITTER_EMAIL'::
4e58bf97 458'GIT_COMMITTER_DATE'::
28a94f88 459'EMAIL'::
5162e697 460 see linkgit:git-commit-tree[1]
c1bdacf9
DG
461
462git Diffs
463~~~~~~~~~
d81ed1b5 464'GIT_DIFF_OPTS'::
fde97d8a
SE
465 Only valid setting is "--unified=??" or "-u??" to set the
466 number of context lines shown when a unified diff is created.
467 This takes precedence over any "-U" or "--unified" option
468 value passed on the git diff command line.
469
d81ed1b5 470'GIT_EXTERNAL_DIFF'::
fde97d8a
SE
471 When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
472 program named by it is called, instead of the diff invocation
473 described above. For a path that is added, removed, or modified,
474 'GIT_EXTERNAL_DIFF' is called with 7 parameters:
475
476 path old-file old-hex old-mode new-file new-hex new-mode
477+
478where:
479
480 <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
481 contents of <old|new>,
482 <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
483 <old|new>-mode:: are the octal representation of the file modes.
484
485+
486The file parameters can point at the user's working file
487(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
488when a new file is added), or a temporary file (e.g. `old-file` in the
489index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
490temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
491+
492For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
493parameter, <path>.
2cf565c5 494
575ba9d6
ML
495other
496~~~~~
dbddb714
JN
497'GIT_MERGE_VERBOSITY'::
498 A number controlling the amount of output shown by
499 the recursive merge strategy. Overrides merge.verbosity.
5162e697 500 See linkgit:git-merge[1]
dbddb714 501
c27d205a 502'GIT_PAGER'::
a7738c77
SG
503 This environment variable overrides `$PAGER`. If it is set
504 to an empty string or to the value "cat", git will not launch
ab54cd6c
JN
505 a pager. See also the `core.pager` option in
506 linkgit:git-config[1].
c27d205a 507
d5538b41 508'GIT_SSH'::
ba020ef5
JN
509 If this environment variable is set then 'git-fetch'
510 and 'git-push' will use this command instead
2fd02c92 511 of 'ssh' when they need to connect to a remote system.
483bc4f0 512 The '$GIT_SSH' command will be given exactly two arguments:
d5538b41
SP
513 the 'username@host' (or just 'host') from the URL and the
514 shell command to execute on that remote system.
515+
516To pass options to the program that you want to list in GIT_SSH
517you will need to wrap the program and options into a shell script,
518then set GIT_SSH to refer to the shell script.
519+
520Usually it is easier to configure any desired options through your
521personal `.ssh/config` file. Please consult your ssh documentation
522for further details.
523
06f59e9f
TT
524'GIT_FLUSH'::
525 If this environment variable is set to "1", then commands such
ba020ef5
JN
526 as 'git-blame' (in incremental mode), 'git-rev-list', 'git-log',
527 and 'git-whatchanged' will force a flush of the output stream
06f59e9f
TT
528 after each commit-oriented record have been flushed. If this
529 variable is set to "0", the output of these commands will be done
530 using completely buffered I/O. If this environment variable is
531 not set, git will choose buffered or record-oriented flushing
532 based on whether stdout appears to be redirected to a file or not.
533
575ba9d6 534'GIT_TRACE'::
2886bdb1
CC
535 If this variable is set to "1", "2" or "true" (comparison
536 is case insensitive), git will print `trace:` messages on
575ba9d6
ML
537 stderr telling about alias expansion, built-in command
538 execution and external command execution.
2886bdb1
CC
539 If this variable is set to an integer value greater than 1
540 and lower than 10 (strictly) then git will interpret this
541 value as an open file descriptor and will try to write the
542 trace messages into this file descriptor.
543 Alternatively, if this variable is set to an absolute path
544 (starting with a '/' character), git will interpret this
545 as a file path and will try to write the trace messages
546 into it.
575ba9d6 547
8db9307c
JH
548Discussion[[Discussion]]
549------------------------
40dac517
BF
550
551More detail on the following is available from the
552link:user-manual.html#git-concepts[git concepts chapter of the
6998e4db 553user-manual] and linkgit:gitcore-tutorial[7].
40dac517
BF
554
555A git project normally consists of a working directory with a ".git"
556subdirectory at the top level. The .git directory contains, among other
557things, a compressed object database representing the complete history
558of the project, an "index" file which links that history to the current
559contents of the working tree, and named pointers into that history such
560as tags and branch heads.
561
562The object database contains objects of three main types: blobs, which
563hold file data; trees, which point to blobs and other trees to build up
02ff6250 564directory hierarchies; and commits, which each reference a single tree
40dac517
BF
565and some number of parent commits.
566
567The commit, equivalent to what other systems call a "changeset" or
568"version", represents a step in the project's history, and each parent
569represents an immediately preceding step. Commits with more than one
570parent represent merges of independent lines of development.
571
572All objects are named by the SHA1 hash of their contents, normally
573written as a string of 40 hex digits. Such names are globally unique.
574The entire history leading up to a commit can be vouched for by signing
575just that commit. A fourth object type, the tag, is provided for this
576purpose.
577
578When first created, objects are stored in individual files, but for
579efficiency may later be compressed together into "pack files".
580
581Named pointers called refs mark interesting points in history. A ref
582may contain the SHA1 name of an object or the name of another ref. Refs
583with names beginning `ref/head/` contain the SHA1 name of the most
02ff6250 584recent commit (or "head") of a branch under development. SHA1 names of
40dac517
BF
585tags of interest are stored under `ref/tags/`. A special ref named
586`HEAD` contains the name of the currently checked-out branch.
587
588The index file is initialized with a list of all paths and, for each
589path, a blob object and a set of attributes. The blob object represents
590the contents of the file as of the head of the current branch. The
591attributes (last modified time, size, etc.) are taken from the
592corresponding file in the working tree. Subsequent changes to the
593working tree can be found by comparing these attributes. The index may
594be updated with new content, and new commits may be created from the
595content stored in the index.
596
597The index is also capable of storing multiple entries (called "stages")
598for a given pathname. These stages are used to hold the various
599unmerged version of a file when a merge is in progress.
6c84e2e0 600
cb22bc44
AE
601Authors
602-------
9755afbd 603* git's founding father is Linus Torvalds <torvalds@osdl.org>.
947ad2e1 604* The current git nurse is Junio C Hamano <gitster@pobox.com>.
0240e21a 605* The git potty was written by Andreas Ericsson <ae@op5.se>.
9755afbd 606* General upbringing is handled by the git-list <git@vger.kernel.org>.
2cf565c5
DG
607
608Documentation
609--------------
9755afbd
JH
610The documentation for git suite was started by David Greaves
611<david@dgreaves.com>, and later enhanced greatly by the
612contributors on the git-list <git@vger.kernel.org>.
2cf565c5 613
497c8331
CC
614SEE ALSO
615--------
616linkgit:gittutorial[7], linkgit:gittutorial-2[7],
5cbef01a 617link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
497c8331 618linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
dc493084 619linkgit:gitcli[7], link:user-manual.html[The Git User's Manual]
497c8331 620
2cf565c5
DG
621GIT
622---
9e1f0a85 623Part of the linkgit:git[1] suite