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