1git(7) 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 this link:tutorial.html[tutorial] 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 link:cvs-migration.html[CVS migration]. See 27link: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 gitlink: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.5.2.5/git.html[documentation for release 1.5.2.5] 47 48* release notes for 49 link:RelNotes-1.5.2.5.txt[1.5.2.5], 50 link:RelNotes-1.5.2.4.txt[1.5.2.4], 51 link:RelNotes-1.5.2.3.txt[1.5.2.3], 52 link:RelNotes-1.5.2.2.txt[1.5.2.2], 53 link:RelNotes-1.5.2.1.txt[1.5.2.1], 54 link:RelNotes-1.5.2.txt[1.5.2]. 55 56* link:v1.5.1.6/git.html[documentation for release 1.5.1.6] 57 58* release notes for 59 link:RelNotes-1.5.1.6.txt[1.5.1.6], 60 link:RelNotes-1.5.1.5.txt[1.5.1.5], 61 link:RelNotes-1.5.1.4.txt[1.5.1.4], 62 link:RelNotes-1.5.1.3.txt[1.5.1.3], 63 link:RelNotes-1.5.1.2.txt[1.5.1.2], 64 link:RelNotes-1.5.1.1.txt[1.5.1.1], 65 link:RelNotes-1.5.1.txt[1.5.1]. 66 67* link:v1.5.0.7/git.html[documentation for release 1.5.0.7] 68 69* release notes for 70 link:RelNotes-1.5.0.7.txt[1.5.0.7], 71 link:RelNotes-1.5.0.6.txt[1.5.0.6], 72 link:RelNotes-1.5.0.5.txt[1.5.0.5], 73 link:RelNotes-1.5.0.3.txt[1.5.0.3], 74 link:RelNotes-1.5.0.2.txt[1.5.0.2], 75 link:RelNotes-1.5.0.1.txt[1.5.0.1], 76 link:RelNotes-1.5.0.txt[1.5.0]. 77 78* documentation for release link:v1.4.4.4/git.html[1.4.4.4], 79 link:v1.3.3/git.html[1.3.3], 80 link:v1.2.6/git.html[1.2.6], 81 link:v1.0.13/git.html[1.0.13]. 82 83============ 84 85endif::stalenotes[] 86 87OPTIONS 88------- 89--version:: 90 Prints the git suite version that the 'git' program came from. 91 92--help:: 93 Prints the synopsis and a list of the most commonly used 94 commands. If a git command is named this option will bring up 95 the man-page for that command. If the option '--all' or '-a' is 96 given then all available commands are printed. 97 98--exec-path:: 99 Path to wherever your core git programs are installed. 100 This can also be controlled by setting the GIT_EXEC_PATH 101 environment variable. If no path is given 'git' will print 102 the current setting and then exit. 103 104-p|--paginate:: 105 Pipe all output into 'less' (or if set, $PAGER). 106 107--no-pager:: 108 Do not pipe git output into a pager. 109 110--git-dir=<path>:: 111 Set the path to the repository. This can also be controlled by 112 setting the GIT_DIR environment variable. 113 114--work-tree=<path>:: 115 Set the path to the working tree. The value will not be 116 used in combination with repositories found automatically in 117 a .git directory (i.e. $GIT_DIR is not set). 118 This can also be controlled by setting the GIT_WORK_TREE 119 environment variable and the core.worktree configuration 120 variable. 121 122--bare:: 123 Same as --git-dir=`pwd`. 124 125FURTHER DOCUMENTATION 126--------------------- 127 128See the references above to get started using git. The following is 129probably more detail than necessary for a first-time user. 130 131The <<Discussion,Discussion>> section below and the 132link:core-tutorial.html[Core tutorial] both provide introductions to the 133underlying git architecture. 134 135See also the link:howto-index.html[howto] documents for some useful 136examples. 137 138GIT COMMANDS 139------------ 140 141We divide git into high level ("porcelain") commands and low level 142("plumbing") commands. 143 144High-level commands (porcelain) 145------------------------------- 146 147We separate the porcelain commands into the main commands and some 148ancillary user utilities. 149 150Main porcelain commands 151~~~~~~~~~~~~~~~~~~~~~~~ 152 153include::cmds-mainporcelain.txt[] 154 155Ancillary Commands 156~~~~~~~~~~~~~~~~~~ 157Manipulators: 158 159include::cmds-ancillarymanipulators.txt[] 160 161Interrogators: 162 163include::cmds-ancillaryinterrogators.txt[] 164 165 166Interacting with Others 167~~~~~~~~~~~~~~~~~~~~~~~ 168 169These commands are to interact with foreign SCM and with other 170people via patch over e-mail. 171 172include::cmds-foreignscminterface.txt[] 173 174 175Low-level commands (plumbing) 176----------------------------- 177 178Although git includes its 179own porcelain layer, its low-level commands are sufficient to support 180development of alternative porcelains. Developers of such porcelains 181might start by reading about gitlink:git-update-index[1] and 182gitlink:git-read-tree[1]. 183 184The interface (input, output, set of options and the semantics) 185to these low-level commands are meant to be a lot more stable 186than Porcelain level commands, because these commands are 187primarily for scripted use. The interface to Porcelain commands 188on the other hand are subject to change in order to improve the 189end user experience. 190 191The following description divides 192the low-level commands into commands that manipulate objects (in 193the repository, index, and working tree), commands that interrogate and 194compare objects, and commands that move objects and references between 195repositories. 196 197 198Manipulation commands 199~~~~~~~~~~~~~~~~~~~~~ 200 201include::cmds-plumbingmanipulators.txt[] 202 203 204Interrogation commands 205~~~~~~~~~~~~~~~~~~~~~~ 206 207include::cmds-plumbinginterrogators.txt[] 208 209In general, the interrogate commands do not touch the files in 210the working tree. 211 212 213Synching repositories 214~~~~~~~~~~~~~~~~~~~~~ 215 216include::cmds-synchingrepositories.txt[] 217 218The following are helper programs used by the above; end users 219typically do not use them directly. 220 221include::cmds-synchelpers.txt[] 222 223 224Internal helper commands 225~~~~~~~~~~~~~~~~~~~~~~~~ 226 227These are internal helper commands used by other commands; end 228users typically do not use them directly. 229 230include::cmds-purehelpers.txt[] 231 232 233Configuration Mechanism 234----------------------- 235 236Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file 237is used to hold per-repository configuration options. It is a 238simple text file modeled after `.ini` format familiar to some 239people. Here is an example: 240 241------------ 242# 243# A '#' or ';' character indicates a comment. 244# 245 246; core variables 247[core] 248 ; Don't trust file modes 249 filemode = false 250 251; user identity 252[user] 253 name = "Junio C Hamano" 254 email = "junkio@twinsun.com" 255 256------------ 257 258Various commands read from the configuration file and adjust 259their operation accordingly. 260 261 262Identifier Terminology 263---------------------- 264<object>:: 265 Indicates the object name for any type of object. 266 267<blob>:: 268 Indicates a blob object name. 269 270<tree>:: 271 Indicates a tree object name. 272 273<commit>:: 274 Indicates a commit object name. 275 276<tree-ish>:: 277 Indicates a tree, commit or tag object name. A 278 command that takes a <tree-ish> argument ultimately wants to 279 operate on a <tree> object but automatically dereferences 280 <commit> and <tag> objects that point at a <tree>. 281 282<commit-ish>:: 283 Indicates a commit or tag object name. A 284 command that takes a <commit-ish> argument ultimately wants to 285 operate on a <commit> object but automatically dereferences 286 <tag> objects that point at a <commit>. 287 288<type>:: 289 Indicates that an object type is required. 290 Currently one of: `blob`, `tree`, `commit`, or `tag`. 291 292<file>:: 293 Indicates a filename - almost always relative to the 294 root of the tree structure `GIT_INDEX_FILE` describes. 295 296Symbolic Identifiers 297-------------------- 298Any git command accepting any <object> can also use the following 299symbolic notation: 300 301HEAD:: 302 indicates the head of the current branch (i.e. the 303 contents of `$GIT_DIR/HEAD`). 304 305<tag>:: 306 a valid tag 'name' 307 (i.e. the contents of `$GIT_DIR/refs/tags/<tag>`). 308 309<head>:: 310 a valid head 'name' 311 (i.e. the contents of `$GIT_DIR/refs/heads/<head>`). 312 313For a more complete list of ways to spell object names, see 314"SPECIFYING REVISIONS" section in gitlink:git-rev-parse[1]. 315 316 317File/Directory Structure 318------------------------ 319 320Please see link:repository-layout.html[repository layout] document. 321 322Read link:hooks.html[hooks] for more details about each hook. 323 324Higher level SCMs may provide and manage additional information in the 325`$GIT_DIR`. 326 327 328Terminology 329----------- 330Please see link:glossary.html[glossary] document. 331 332 333Environment Variables 334--------------------- 335Various git commands use the following environment variables: 336 337The git Repository 338~~~~~~~~~~~~~~~~~~ 339These environment variables apply to 'all' core git commands. Nb: it 340is worth noting that they may be used/overridden by SCMS sitting above 341git so take care if using Cogito etc. 342 343'GIT_INDEX_FILE':: 344 This environment allows the specification of an alternate 345 index file. If not specified, the default of `$GIT_DIR/index` 346 is used. 347 348'GIT_OBJECT_DIRECTORY':: 349 If the object storage directory is specified via this 350 environment variable then the sha1 directories are created 351 underneath - otherwise the default `$GIT_DIR/objects` 352 directory is used. 353 354'GIT_ALTERNATE_OBJECT_DIRECTORIES':: 355 Due to the immutable nature of git objects, old objects can be 356 archived into shared, read-only directories. This variable 357 specifies a ":" separated list of git object directories which 358 can be used to search for git objects. New objects will not be 359 written to these directories. 360 361'GIT_DIR':: 362 If the 'GIT_DIR' environment variable is set then it 363 specifies a path to use instead of the default `.git` 364 for the base of the repository. 365 366'GIT_WORK_TREE':: 367 Set the path to the working tree. The value will not be 368 used in combination with repositories found automatically in 369 a .git directory (i.e. $GIT_DIR is not set). 370 This can also be controlled by the '--work-tree' command line 371 option and the core.worktree configuration variable. 372 373git Commits 374~~~~~~~~~~~ 375'GIT_AUTHOR_NAME':: 376'GIT_AUTHOR_EMAIL':: 377'GIT_AUTHOR_DATE':: 378'GIT_COMMITTER_NAME':: 379'GIT_COMMITTER_EMAIL':: 380'GIT_COMMITTER_DATE':: 381'EMAIL':: 382 see gitlink:git-commit-tree[1] 383 384git Diffs 385~~~~~~~~~ 386'GIT_DIFF_OPTS':: 387 Only valid setting is "--unified=??" or "-u??" to set the 388 number of context lines shown when a unified diff is created. 389 This takes precedence over any "-U" or "--unified" option 390 value passed on the git diff command line. 391 392'GIT_EXTERNAL_DIFF':: 393 When the environment variable 'GIT_EXTERNAL_DIFF' is set, the 394 program named by it is called, instead of the diff invocation 395 described above. For a path that is added, removed, or modified, 396 'GIT_EXTERNAL_DIFF' is called with 7 parameters: 397 398 path old-file old-hex old-mode new-file new-hex new-mode 399+ 400where: 401 402 <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the 403 contents of <old|new>, 404 <old|new>-hex:: are the 40-hexdigit SHA1 hashes, 405 <old|new>-mode:: are the octal representation of the file modes. 406 407+ 408The file parameters can point at the user's working file 409(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file` 410when a new file is added), or a temporary file (e.g. `old-file` in the 411index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the 412temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits. 413+ 414For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1 415parameter, <path>. 416 417other 418~~~~~ 419'GIT_MERGE_VERBOSITY':: 420 A number controlling the amount of output shown by 421 the recursive merge strategy. Overrides merge.verbosity. 422 See gitlink:git-merge[1] 423 424'GIT_PAGER':: 425 This environment variable overrides `$PAGER`. If it is set 426 to an empty string or to the value "cat", git will not launch 427 a pager. 428 429'GIT_SSH':: 430 If this environment variable is set then gitlink:git-fetch[1] 431 and gitlink:git-push[1] will use this command instead 432 of `ssh` when they need to connect to a remote system. 433 The 'GIT_SSH' command will be given exactly two arguments: 434 the 'username@host' (or just 'host') from the URL and the 435 shell command to execute on that remote system. 436+ 437To pass options to the program that you want to list in GIT_SSH 438you will need to wrap the program and options into a shell script, 439then set GIT_SSH to refer to the shell script. 440+ 441Usually it is easier to configure any desired options through your 442personal `.ssh/config` file. Please consult your ssh documentation 443for further details. 444 445'GIT_FLUSH':: 446 If this environment variable is set to "1", then commands such 447 as git-blame (in incremental mode), git-rev-list, git-log, 448 git-whatchanged, etc., will force a flush of the output stream 449 after each commit-oriented record have been flushed. If this 450 variable is set to "0", the output of these commands will be done 451 using completely buffered I/O. If this environment variable is 452 not set, git will choose buffered or record-oriented flushing 453 based on whether stdout appears to be redirected to a file or not. 454 455'GIT_TRACE':: 456 If this variable is set to "1", "2" or "true" (comparison 457 is case insensitive), git will print `trace:` messages on 458 stderr telling about alias expansion, built-in command 459 execution and external command execution. 460 If this variable is set to an integer value greater than 1 461 and lower than 10 (strictly) then git will interpret this 462 value as an open file descriptor and will try to write the 463 trace messages into this file descriptor. 464 Alternatively, if this variable is set to an absolute path 465 (starting with a '/' character), git will interpret this 466 as a file path and will try to write the trace messages 467 into it. 468 469Discussion[[Discussion]] 470------------------------ 471include::core-intro.txt[] 472 473Authors 474------- 475* git's founding father is Linus Torvalds <torvalds@osdl.org>. 476* The current git nurse is Junio C Hamano <junkio@cox.net>. 477* The git potty was written by Andres Ericsson <ae@op5.se>. 478* General upbringing is handled by the git-list <git@vger.kernel.org>. 479 480Documentation 481-------------- 482The documentation for git suite was started by David Greaves 483<david@dgreaves.com>, and later enhanced greatly by the 484contributors on the git-list <git@vger.kernel.org>. 485 486GIT 487--- 488Part of the gitlink:git[7] suite