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