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