6 git - the stupid content tracker
12 'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
13 [-p|--paginate|--no-pager] [--no-replace-objects]
14 [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
15 [--help] COMMAND [ARGS]
19 Git is a fast, scalable, distributed revision control system with an
20 unusually rich command set that provides both high-level operations
21 and full access to internals.
23 See linkgit:gittutorial[7] to get started, then see
24 link:everyday.html[Everyday Git] for a useful minimum set of commands, and
25 "man git-commandname" for documentation of each command. CVS users may
26 also want to read linkgit:gitcvs-migration[7]. See
27 the link:user-manual.html[Git User's Manual] for a more in-depth
30 The COMMAND is either a name of a Git command (see below) or an alias
31 as defined in the configuration file (see linkgit:git-config[1]).
33 Formatted and hyperlinked version of the latest git
34 documentation can be viewed at
35 `http://www.kernel.org/pub/software/scm/git/docs/`.
41 You are reading the documentation for the latest (possibly
42 unreleased) version of git, that is available from 'master'
43 branch of the `git.git` repository.
44 Documentation for older releases are available here:
46 * link:v1.7.0.2/git.html[documentation for release 1.7.0.2]
49 link:RelNotes-1.7.0.2.txt[1.7.0.2],
50 link:RelNotes-1.7.0.1.txt[1.7.0.1],
51 link:RelNotes-1.7.0.txt[1.7.0].
53 * link:v1.6.6.2/git.html[documentation for release 1.6.6.2]
56 link:RelNotes-1.6.6.2.txt[1.6.6.2],
57 link:RelNotes-1.6.6.1.txt[1.6.6.1],
58 link:RelNotes-1.6.6.txt[1.6.6].
60 * link:v1.6.5.8/git.html[documentation for release 1.6.5.8]
63 link:RelNotes-1.6.5.8.txt[1.6.5.8],
64 link:RelNotes-1.6.5.7.txt[1.6.5.7],
65 link:RelNotes-1.6.5.6.txt[1.6.5.6],
66 link:RelNotes-1.6.5.5.txt[1.6.5.5],
67 link:RelNotes-1.6.5.4.txt[1.6.5.4],
68 link:RelNotes-1.6.5.3.txt[1.6.5.3],
69 link:RelNotes-1.6.5.2.txt[1.6.5.2],
70 link:RelNotes-1.6.5.1.txt[1.6.5.1],
71 link:RelNotes-1.6.5.txt[1.6.5].
73 * link:v1.6.4.4/git.html[documentation for release 1.6.4.4]
76 link:RelNotes-1.6.4.4.txt[1.6.4.4],
77 link:RelNotes-1.6.4.3.txt[1.6.4.3],
78 link:RelNotes-1.6.4.2.txt[1.6.4.2],
79 link:RelNotes-1.6.4.1.txt[1.6.4.1],
80 link:RelNotes-1.6.4.txt[1.6.4].
82 * link:v1.6.3.4/git.html[documentation for release 1.6.3.4]
85 link:RelNotes-1.6.3.4.txt[1.6.3.4],
86 link:RelNotes-1.6.3.3.txt[1.6.3.3],
87 link:RelNotes-1.6.3.2.txt[1.6.3.2],
88 link:RelNotes-1.6.3.1.txt[1.6.3.1],
89 link:RelNotes-1.6.3.txt[1.6.3].
92 link:RelNotes-1.6.2.5.txt[1.6.2.5],
93 link:RelNotes-1.6.2.4.txt[1.6.2.4],
94 link:RelNotes-1.6.2.3.txt[1.6.2.3],
95 link:RelNotes-1.6.2.2.txt[1.6.2.2],
96 link:RelNotes-1.6.2.1.txt[1.6.2.1],
97 link:RelNotes-1.6.2.txt[1.6.2].
99 * link:v1.6.1.3/git.html[documentation for release 1.6.1.3]
102 link:RelNotes-1.6.1.3.txt[1.6.1.3],
103 link:RelNotes-1.6.1.2.txt[1.6.1.2],
104 link:RelNotes-1.6.1.1.txt[1.6.1.1],
105 link:RelNotes-1.6.1.txt[1.6.1].
107 * link:v1.6.0.6/git.html[documentation for release 1.6.0.6]
110 link:RelNotes-1.6.0.6.txt[1.6.0.6],
111 link:RelNotes-1.6.0.5.txt[1.6.0.5],
112 link:RelNotes-1.6.0.4.txt[1.6.0.4],
113 link:RelNotes-1.6.0.3.txt[1.6.0.3],
114 link:RelNotes-1.6.0.2.txt[1.6.0.2],
115 link:RelNotes-1.6.0.1.txt[1.6.0.1],
116 link:RelNotes-1.6.0.txt[1.6.0].
118 * link:v1.5.6.6/git.html[documentation for release 1.5.6.6]
121 link:RelNotes-1.5.6.6.txt[1.5.6.6],
122 link:RelNotes-1.5.6.5.txt[1.5.6.5],
123 link:RelNotes-1.5.6.4.txt[1.5.6.4],
124 link:RelNotes-1.5.6.3.txt[1.5.6.3],
125 link:RelNotes-1.5.6.2.txt[1.5.6.2],
126 link:RelNotes-1.5.6.1.txt[1.5.6.1],
127 link:RelNotes-1.5.6.txt[1.5.6].
129 * link:v1.5.5.6/git.html[documentation for release 1.5.5.6]
132 link:RelNotes-1.5.5.6.txt[1.5.5.6],
133 link:RelNotes-1.5.5.5.txt[1.5.5.5],
134 link:RelNotes-1.5.5.4.txt[1.5.5.4],
135 link:RelNotes-1.5.5.3.txt[1.5.5.3],
136 link:RelNotes-1.5.5.2.txt[1.5.5.2],
137 link:RelNotes-1.5.5.1.txt[1.5.5.1],
138 link:RelNotes-1.5.5.txt[1.5.5].
140 * link:v1.5.4.7/git.html[documentation for release 1.5.4.7]
143 link:RelNotes-1.5.4.7.txt[1.5.4.7],
144 link:RelNotes-1.5.4.6.txt[1.5.4.6],
145 link:RelNotes-1.5.4.5.txt[1.5.4.5],
146 link:RelNotes-1.5.4.4.txt[1.5.4.4],
147 link:RelNotes-1.5.4.3.txt[1.5.4.3],
148 link:RelNotes-1.5.4.2.txt[1.5.4.2],
149 link:RelNotes-1.5.4.1.txt[1.5.4.1],
150 link:RelNotes-1.5.4.txt[1.5.4].
152 * link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
155 link:RelNotes-1.5.3.8.txt[1.5.3.8],
156 link:RelNotes-1.5.3.7.txt[1.5.3.7],
157 link:RelNotes-1.5.3.6.txt[1.5.3.6],
158 link:RelNotes-1.5.3.5.txt[1.5.3.5],
159 link:RelNotes-1.5.3.4.txt[1.5.3.4],
160 link:RelNotes-1.5.3.3.txt[1.5.3.3],
161 link:RelNotes-1.5.3.2.txt[1.5.3.2],
162 link:RelNotes-1.5.3.1.txt[1.5.3.1],
163 link:RelNotes-1.5.3.txt[1.5.3].
165 * link:v1.5.2.5/git.html[documentation for release 1.5.2.5]
168 link:RelNotes-1.5.2.5.txt[1.5.2.5],
169 link:RelNotes-1.5.2.4.txt[1.5.2.4],
170 link:RelNotes-1.5.2.3.txt[1.5.2.3],
171 link:RelNotes-1.5.2.2.txt[1.5.2.2],
172 link:RelNotes-1.5.2.1.txt[1.5.2.1],
173 link:RelNotes-1.5.2.txt[1.5.2].
175 * link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
178 link:RelNotes-1.5.1.6.txt[1.5.1.6],
179 link:RelNotes-1.5.1.5.txt[1.5.1.5],
180 link:RelNotes-1.5.1.4.txt[1.5.1.4],
181 link:RelNotes-1.5.1.3.txt[1.5.1.3],
182 link:RelNotes-1.5.1.2.txt[1.5.1.2],
183 link:RelNotes-1.5.1.1.txt[1.5.1.1],
184 link:RelNotes-1.5.1.txt[1.5.1].
186 * link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
189 link:RelNotes-1.5.0.7.txt[1.5.0.7],
190 link:RelNotes-1.5.0.6.txt[1.5.0.6],
191 link:RelNotes-1.5.0.5.txt[1.5.0.5],
192 link:RelNotes-1.5.0.3.txt[1.5.0.3],
193 link:RelNotes-1.5.0.2.txt[1.5.0.2],
194 link:RelNotes-1.5.0.1.txt[1.5.0.1],
195 link:RelNotes-1.5.0.txt[1.5.0].
197 * documentation for release link:v1.4.4.4/git.html[1.4.4.4],
198 link:v1.3.3/git.html[1.3.3],
199 link:v1.2.6/git.html[1.2.6],
200 link:v1.0.13/git.html[1.0.13].
209 Prints the git suite version that the 'git' program came from.
212 Prints the synopsis and a list of the most commonly used
213 commands. If the option '--all' or '-a' is given then all
214 available commands are printed. If a git command is named this
215 option will bring up the manual page for that command.
217 Other options are available to control how the manual page is
218 displayed. See linkgit:git-help[1] for more information,
219 because `git --help ...` is converted internally into `git
223 Path to wherever your core git programs are installed.
224 This can also be controlled by setting the GIT_EXEC_PATH
225 environment variable. If no path is given, 'git' will print
226 the current setting and then exit.
229 Print the path to wherever your git HTML documentation is installed
234 Pipe all output into 'less' (or if set, $PAGER) if standard
235 output is a terminal. This overrides the `pager.<cmd>`
236 configuration options (see the "Configuration Mechanism" section
240 Do not pipe git output into a pager.
243 Set the path to the repository. This can also be controlled by
244 setting the GIT_DIR environment variable. It can be an absolute
245 path or relative path to current working directory.
248 Set the path to the working tree. The value will not be
249 used in combination with repositories found automatically in
250 a .git directory (i.e. $GIT_DIR is not set).
251 This can also be controlled by setting the GIT_WORK_TREE
252 environment variable and the core.worktree configuration
253 variable. It can be an absolute path or relative path to
254 the directory specified by --git-dir or GIT_DIR.
255 Note: If --git-dir or GIT_DIR are specified but none of
256 --work-tree, GIT_WORK_TREE and core.worktree is specified,
257 the current working directory is regarded as the top directory
258 of your working tree.
261 Treat the repository as a bare repository. If GIT_DIR
262 environment is not set, it is set to the current working
265 --no-replace-objects::
266 Do not use replacement refs to replace git objects. See
267 linkgit:git-replace[1] for more information.
270 FURTHER DOCUMENTATION
271 ---------------------
273 See the references above to get started using git. The following is
274 probably more detail than necessary for a first-time user.
276 The link:user-manual.html#git-concepts[git concepts chapter of the
277 user-manual] and linkgit:gitcore-tutorial[7] both provide
278 introductions to the underlying git architecture.
280 See linkgit:gitworkflows[7] for an overview of recommended workflows.
282 See also the link:howto-index.html[howto] documents for some useful
285 The internals are documented in the
286 link:technical/api-index.html[GIT API documentation].
291 We divide git into high level ("porcelain") commands and low level
292 ("plumbing") commands.
294 High-level commands (porcelain)
295 -------------------------------
297 We separate the porcelain commands into the main commands and some
298 ancillary user utilities.
300 Main porcelain commands
301 ~~~~~~~~~~~~~~~~~~~~~~~
303 include::cmds-mainporcelain.txt[]
309 include::cmds-ancillarymanipulators.txt[]
313 include::cmds-ancillaryinterrogators.txt[]
316 Interacting with Others
317 ~~~~~~~~~~~~~~~~~~~~~~~
319 These commands are to interact with foreign SCM and with other
320 people via patch over e-mail.
322 include::cmds-foreignscminterface.txt[]
325 Low-level commands (plumbing)
326 -----------------------------
328 Although git includes its
329 own porcelain layer, its low-level commands are sufficient to support
330 development of alternative porcelains. Developers of such porcelains
331 might start by reading about linkgit:git-update-index[1] and
332 linkgit:git-read-tree[1].
334 The interface (input, output, set of options and the semantics)
335 to these low-level commands are meant to be a lot more stable
336 than Porcelain level commands, because these commands are
337 primarily for scripted use. The interface to Porcelain commands
338 on the other hand are subject to change in order to improve the
341 The following description divides
342 the low-level commands into commands that manipulate objects (in
343 the repository, index, and working tree), commands that interrogate and
344 compare objects, and commands that move objects and references between
348 Manipulation commands
349 ~~~~~~~~~~~~~~~~~~~~~
351 include::cmds-plumbingmanipulators.txt[]
354 Interrogation commands
355 ~~~~~~~~~~~~~~~~~~~~~~
357 include::cmds-plumbinginterrogators.txt[]
359 In general, the interrogate commands do not touch the files in
363 Synching repositories
364 ~~~~~~~~~~~~~~~~~~~~~
366 include::cmds-synchingrepositories.txt[]
368 The following are helper commands used by the above; end users
369 typically do not use them directly.
371 include::cmds-synchelpers.txt[]
374 Internal helper commands
375 ~~~~~~~~~~~~~~~~~~~~~~~~
377 These are internal helper commands used by other commands; end
378 users typically do not use them directly.
380 include::cmds-purehelpers.txt[]
383 Configuration Mechanism
384 -----------------------
386 Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
387 is used to hold per-repository configuration options. It is a
388 simple text file modeled after `.ini` format familiar to some
389 people. Here is an example:
393 # A '#' or ';' character indicates a comment.
398 ; Don't trust file modes
403 name = "Junio C Hamano"
404 email = "junkio@twinsun.com"
408 Various commands read from the configuration file and adjust
409 their operation accordingly. See linkgit:git-config[1] for a
413 Identifier Terminology
414 ----------------------
416 Indicates the object name for any type of object.
419 Indicates a blob object name.
422 Indicates a tree object name.
425 Indicates a commit object name.
428 Indicates a tree, commit or tag object name. A
429 command that takes a <tree-ish> argument ultimately wants to
430 operate on a <tree> object but automatically dereferences
431 <commit> and <tag> objects that point at a <tree>.
434 Indicates a commit or tag object name. A
435 command that takes a <commit-ish> argument ultimately wants to
436 operate on a <commit> object but automatically dereferences
437 <tag> objects that point at a <commit>.
440 Indicates that an object type is required.
441 Currently one of: `blob`, `tree`, `commit`, or `tag`.
444 Indicates a filename - almost always relative to the
445 root of the tree structure `GIT_INDEX_FILE` describes.
449 Any git command accepting any <object> can also use the following
453 indicates the head of the current branch (i.e. the
454 contents of `$GIT_DIR/HEAD`).
458 (i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
462 (i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
464 For a more complete list of ways to spell object names, see
465 "SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1].
468 File/Directory Structure
469 ------------------------
471 Please see the linkgit:gitrepository-layout[5] document.
473 Read linkgit:githooks[5] for more details about each hook.
475 Higher level SCMs may provide and manage additional information in the
481 Please see linkgit:gitglossary[7].
484 Environment Variables
485 ---------------------
486 Various git commands use the following environment variables:
490 These environment variables apply to 'all' core git commands. Nb: it
491 is worth noting that they may be used/overridden by SCMS sitting above
492 git so take care if using Cogito etc.
495 This environment allows the specification of an alternate
496 index file. If not specified, the default of `$GIT_DIR/index`
499 'GIT_OBJECT_DIRECTORY'::
500 If the object storage directory is specified via this
501 environment variable then the sha1 directories are created
502 underneath - otherwise the default `$GIT_DIR/objects`
505 'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
506 Due to the immutable nature of git objects, old objects can be
507 archived into shared, read-only directories. This variable
508 specifies a ":" separated (on Windows ";" separated) list
509 of git object directories which can be used to search for git
510 objects. New objects will not be written to these directories.
513 If the 'GIT_DIR' environment variable is set then it
514 specifies a path to use instead of the default `.git`
515 for the base of the repository.
518 Set the path to the working tree. The value will not be
519 used in combination with repositories found automatically in
520 a .git directory (i.e. $GIT_DIR is not set).
521 This can also be controlled by the '--work-tree' command line
522 option and the core.worktree configuration variable.
524 'GIT_CEILING_DIRECTORIES'::
525 This should be a colon-separated list of absolute paths.
526 If set, it is a list of directories that git should not chdir
527 up into while looking for a repository directory.
528 It will not exclude the current working directory or
529 a GIT_DIR set on the command line or in the environment.
530 (Useful for excluding slow-loading network directories.)
537 'GIT_COMMITTER_NAME'::
538 'GIT_COMMITTER_EMAIL'::
539 'GIT_COMMITTER_DATE'::
541 see linkgit:git-commit-tree[1]
546 Only valid setting is "--unified=??" or "-u??" to set the
547 number of context lines shown when a unified diff is created.
548 This takes precedence over any "-U" or "--unified" option
549 value passed on the git diff command line.
551 'GIT_EXTERNAL_DIFF'::
552 When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
553 program named by it is called, instead of the diff invocation
554 described above. For a path that is added, removed, or modified,
555 'GIT_EXTERNAL_DIFF' is called with 7 parameters:
557 path old-file old-hex old-mode new-file new-hex new-mode
561 <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
562 contents of <old|new>,
563 <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
564 <old|new>-mode:: are the octal representation of the file modes.
567 The file parameters can point at the user's working file
568 (e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
569 when a new file is added), or a temporary file (e.g. `old-file` in the
570 index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
571 temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
573 For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
578 'GIT_MERGE_VERBOSITY'::
579 A number controlling the amount of output shown by
580 the recursive merge strategy. Overrides merge.verbosity.
581 See linkgit:git-merge[1]
584 This environment variable overrides `$PAGER`. If it is set
585 to an empty string or to the value "cat", git will not launch
586 a pager. See also the `core.pager` option in
587 linkgit:git-config[1].
590 If this environment variable is set then 'git fetch'
591 and 'git push' will use this command instead
592 of 'ssh' when they need to connect to a remote system.
593 The '$GIT_SSH' command will be given exactly two arguments:
594 the 'username@host' (or just 'host') from the URL and the
595 shell command to execute on that remote system.
597 To pass options to the program that you want to list in GIT_SSH
598 you will need to wrap the program and options into a shell script,
599 then set GIT_SSH to refer to the shell script.
601 Usually it is easier to configure any desired options through your
602 personal `.ssh/config` file. Please consult your ssh documentation
606 If this environment variable is set to "1", then commands such
607 as 'git blame' (in incremental mode), 'git rev-list', 'git log',
608 and 'git whatchanged' will force a flush of the output stream
609 after each commit-oriented record have been flushed. If this
610 variable is set to "0", the output of these commands will be done
611 using completely buffered I/O. If this environment variable is
612 not set, git will choose buffered or record-oriented flushing
613 based on whether stdout appears to be redirected to a file or not.
616 If this variable is set to "1", "2" or "true" (comparison
617 is case insensitive), git will print `trace:` messages on
618 stderr telling about alias expansion, built-in command
619 execution and external command execution.
620 If this variable is set to an integer value greater than 1
621 and lower than 10 (strictly) then git will interpret this
622 value as an open file descriptor and will try to write the
623 trace messages into this file descriptor.
624 Alternatively, if this variable is set to an absolute path
625 (starting with a '/' character), git will interpret this
626 as a file path and will try to write the trace messages
629 Discussion[[Discussion]]
630 ------------------------
632 More detail on the following is available from the
633 link:user-manual.html#git-concepts[git concepts chapter of the
634 user-manual] and linkgit:gitcore-tutorial[7].
636 A git project normally consists of a working directory with a ".git"
637 subdirectory at the top level. The .git directory contains, among other
638 things, a compressed object database representing the complete history
639 of the project, an "index" file which links that history to the current
640 contents of the working tree, and named pointers into that history such
641 as tags and branch heads.
643 The object database contains objects of three main types: blobs, which
644 hold file data; trees, which point to blobs and other trees to build up
645 directory hierarchies; and commits, which each reference a single tree
646 and some number of parent commits.
648 The commit, equivalent to what other systems call a "changeset" or
649 "version", represents a step in the project's history, and each parent
650 represents an immediately preceding step. Commits with more than one
651 parent represent merges of independent lines of development.
653 All objects are named by the SHA1 hash of their contents, normally
654 written as a string of 40 hex digits. Such names are globally unique.
655 The entire history leading up to a commit can be vouched for by signing
656 just that commit. A fourth object type, the tag, is provided for this
659 When first created, objects are stored in individual files, but for
660 efficiency may later be compressed together into "pack files".
662 Named pointers called refs mark interesting points in history. A ref
663 may contain the SHA1 name of an object or the name of another ref. Refs
664 with names beginning `ref/head/` contain the SHA1 name of the most
665 recent commit (or "head") of a branch under development. SHA1 names of
666 tags of interest are stored under `ref/tags/`. A special ref named
667 `HEAD` contains the name of the currently checked-out branch.
669 The index file is initialized with a list of all paths and, for each
670 path, a blob object and a set of attributes. The blob object represents
671 the contents of the file as of the head of the current branch. The
672 attributes (last modified time, size, etc.) are taken from the
673 corresponding file in the working tree. Subsequent changes to the
674 working tree can be found by comparing these attributes. The index may
675 be updated with new content, and new commits may be created from the
676 content stored in the index.
678 The index is also capable of storing multiple entries (called "stages")
679 for a given pathname. These stages are used to hold the various
680 unmerged version of a file when a merge is in progress.
684 * git's founding father is Linus Torvalds <torvalds@osdl.org>.
685 * The current git nurse is Junio C Hamano <gitster@pobox.com>.
686 * The git potty was written by Andreas Ericsson <ae@op5.se>.
687 * General upbringing is handled by the git-list <git@vger.kernel.org>.
691 The documentation for git suite was started by David Greaves
692 <david@dgreaves.com>, and later enhanced greatly by the
693 contributors on the git-list <git@vger.kernel.org>.
697 linkgit:gittutorial[7], linkgit:gittutorial-2[7],
698 link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7],
699 linkgit:gitglossary[7], linkgit:gitcore-tutorial[7],
700 linkgit:gitcli[7], link:user-manual.html[The Git User's Manual],
701 linkgit:gitworkflows[7]
705 Part of the linkgit:git[1] suite