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