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