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