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