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