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