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