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