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