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