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