6 git - the stupid content tracker
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]
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 this link:tutorial.html[tutorial] 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 link:cvs-migration.html[CVS migration]. See
27 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.5.4.2/git.html[documentation for release 1.5.4.2]
49 link:RelNotes-1.5.4.2.txt[1.5.4.2],
50 link:RelNotes-1.5.4.1.txt[1.5.4.1],
51 link:RelNotes-1.5.4.txt[1.5.4].
53 * link:v1.5.3.8/git.html[documentation for release 1.5.3.8]
56 link:RelNotes-1.5.3.8.txt[1.5.3.8],
57 link:RelNotes-1.5.3.7.txt[1.5.3.7],
58 link:RelNotes-1.5.3.6.txt[1.5.3.6],
59 link:RelNotes-1.5.3.5.txt[1.5.3.5],
60 link:RelNotes-1.5.3.4.txt[1.5.3.4],
61 link:RelNotes-1.5.3.3.txt[1.5.3.3],
62 link:RelNotes-1.5.3.2.txt[1.5.3.2],
63 link:RelNotes-1.5.3.1.txt[1.5.3.1],
64 link:RelNotes-1.5.3.txt[1.5.3].
67 link:RelNotes-1.5.2.5.txt[1.5.2.5],
68 link:RelNotes-1.5.2.4.txt[1.5.2.4],
69 link:RelNotes-1.5.2.3.txt[1.5.2.3],
70 link:RelNotes-1.5.2.2.txt[1.5.2.2],
71 link:RelNotes-1.5.2.1.txt[1.5.2.1],
72 link:RelNotes-1.5.2.txt[1.5.2].
74 * link:v1.5.1.6/git.html[documentation for release 1.5.1.6]
77 link:RelNotes-1.5.1.6.txt[1.5.1.6],
78 link:RelNotes-1.5.1.5.txt[1.5.1.5],
79 link:RelNotes-1.5.1.4.txt[1.5.1.4],
80 link:RelNotes-1.5.1.3.txt[1.5.1.3],
81 link:RelNotes-1.5.1.2.txt[1.5.1.2],
82 link:RelNotes-1.5.1.1.txt[1.5.1.1],
83 link:RelNotes-1.5.1.txt[1.5.1].
85 * link:v1.5.0.7/git.html[documentation for release 1.5.0.7]
88 link:RelNotes-1.5.0.7.txt[1.5.0.7],
89 link:RelNotes-1.5.0.6.txt[1.5.0.6],
90 link:RelNotes-1.5.0.5.txt[1.5.0.5],
91 link:RelNotes-1.5.0.3.txt[1.5.0.3],
92 link:RelNotes-1.5.0.2.txt[1.5.0.2],
93 link:RelNotes-1.5.0.1.txt[1.5.0.1],
94 link:RelNotes-1.5.0.txt[1.5.0].
96 * documentation for release link:v1.4.4.4/git.html[1.4.4.4],
97 link:v1.3.3/git.html[1.3.3],
98 link:v1.2.6/git.html[1.2.6],
99 link:v1.0.13/git.html[1.0.13].
108 Prints the git suite version that the 'git' program came from.
111 Prints the synopsis and a list of the most commonly used
112 commands. If the option '--all' or '-a' is given then all
113 available commands are printed. If a git command is named this
114 option will bring up the manual page for that command.
116 Other options are available to control how the manual page is
117 displayed. See linkgit:git-help[1] for more information,
118 because 'git --help ...' is converted internally into 'git
122 Path to wherever your core git programs are installed.
123 This can also be controlled by setting the GIT_EXEC_PATH
124 environment variable. If no path is given 'git' will print
125 the current setting and then exit.
128 Pipe all output into 'less' (or if set, $PAGER).
131 Do not pipe git output into a pager.
134 Set the path to the repository. This can also be controlled by
135 setting the GIT_DIR environment variable.
138 Set the path to the working tree. The value will not be
139 used in combination with repositories found automatically in
140 a .git directory (i.e. $GIT_DIR is not set).
141 This can also be controlled by setting the GIT_WORK_TREE
142 environment variable and the core.worktree configuration
146 Treat the repository as a bare repository. If GIT_DIR
147 environment is not set, it is set to the current working
151 FURTHER DOCUMENTATION
152 ---------------------
154 See the references above to get started using git. The following is
155 probably more detail than necessary for a first-time user.
157 The link:user-manual.html#git-concepts[git concepts chapter of the
158 user-manual] and the link:core-tutorial.html[Core tutorial] both provide
159 introductions to the underlying git architecture.
161 See also the link:howto-index.html[howto] documents for some useful
164 The internals are documented link:technical/api-index.html[here].
169 We divide git into high level ("porcelain") commands and low level
170 ("plumbing") commands.
172 High-level commands (porcelain)
173 -------------------------------
175 We separate the porcelain commands into the main commands and some
176 ancillary user utilities.
178 Main porcelain commands
179 ~~~~~~~~~~~~~~~~~~~~~~~
181 include::cmds-mainporcelain.txt[]
187 include::cmds-ancillarymanipulators.txt[]
191 include::cmds-ancillaryinterrogators.txt[]
194 Interacting with Others
195 ~~~~~~~~~~~~~~~~~~~~~~~
197 These commands are to interact with foreign SCM and with other
198 people via patch over e-mail.
200 include::cmds-foreignscminterface.txt[]
203 Low-level commands (plumbing)
204 -----------------------------
206 Although git includes its
207 own porcelain layer, its low-level commands are sufficient to support
208 development of alternative porcelains. Developers of such porcelains
209 might start by reading about linkgit:git-update-index[1] and
210 linkgit:git-read-tree[1].
212 The interface (input, output, set of options and the semantics)
213 to these low-level commands are meant to be a lot more stable
214 than Porcelain level commands, because these commands are
215 primarily for scripted use. The interface to Porcelain commands
216 on the other hand are subject to change in order to improve the
219 The following description divides
220 the low-level commands into commands that manipulate objects (in
221 the repository, index, and working tree), commands that interrogate and
222 compare objects, and commands that move objects and references between
226 Manipulation commands
227 ~~~~~~~~~~~~~~~~~~~~~
229 include::cmds-plumbingmanipulators.txt[]
232 Interrogation commands
233 ~~~~~~~~~~~~~~~~~~~~~~
235 include::cmds-plumbinginterrogators.txt[]
237 In general, the interrogate commands do not touch the files in
241 Synching repositories
242 ~~~~~~~~~~~~~~~~~~~~~
244 include::cmds-synchingrepositories.txt[]
246 The following are helper programs used by the above; end users
247 typically do not use them directly.
249 include::cmds-synchelpers.txt[]
252 Internal helper commands
253 ~~~~~~~~~~~~~~~~~~~~~~~~
255 These are internal helper commands used by other commands; end
256 users typically do not use them directly.
258 include::cmds-purehelpers.txt[]
261 Configuration Mechanism
262 -----------------------
264 Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
265 is used to hold per-repository configuration options. It is a
266 simple text file modeled after `.ini` format familiar to some
267 people. Here is an example:
271 # A '#' or ';' character indicates a comment.
276 ; Don't trust file modes
281 name = "Junio C Hamano"
282 email = "junkio@twinsun.com"
286 Various commands read from the configuration file and adjust
287 their operation accordingly.
290 Identifier Terminology
291 ----------------------
293 Indicates the object name for any type of object.
296 Indicates a blob object name.
299 Indicates a tree object name.
302 Indicates a commit object name.
305 Indicates a tree, commit or tag object name. A
306 command that takes a <tree-ish> argument ultimately wants to
307 operate on a <tree> object but automatically dereferences
308 <commit> and <tag> objects that point at a <tree>.
311 Indicates a commit or tag object name. A
312 command that takes a <commit-ish> argument ultimately wants to
313 operate on a <commit> object but automatically dereferences
314 <tag> objects that point at a <commit>.
317 Indicates that an object type is required.
318 Currently one of: `blob`, `tree`, `commit`, or `tag`.
321 Indicates a filename - almost always relative to the
322 root of the tree structure `GIT_INDEX_FILE` describes.
326 Any git command accepting any <object> can also use the following
330 indicates the head of the current branch (i.e. the
331 contents of `$GIT_DIR/HEAD`).
335 (i.e. the contents of `$GIT_DIR/refs/tags/<tag>`).
339 (i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
341 For a more complete list of ways to spell object names, see
342 "SPECIFYING REVISIONS" section in linkgit:git-rev-parse[1].
345 File/Directory Structure
346 ------------------------
348 Please see the link:repository-layout.html[repository layout] document.
350 Read link:hooks.html[hooks] for more details about each hook.
352 Higher level SCMs may provide and manage additional information in the
358 Please see the link:glossary.html[glossary] document.
361 Environment Variables
362 ---------------------
363 Various git commands use the following environment variables:
367 These environment variables apply to 'all' core git commands. Nb: it
368 is worth noting that they may be used/overridden by SCMS sitting above
369 git so take care if using Cogito etc.
372 This environment allows the specification of an alternate
373 index file. If not specified, the default of `$GIT_DIR/index`
376 'GIT_OBJECT_DIRECTORY'::
377 If the object storage directory is specified via this
378 environment variable then the sha1 directories are created
379 underneath - otherwise the default `$GIT_DIR/objects`
382 'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
383 Due to the immutable nature of git objects, old objects can be
384 archived into shared, read-only directories. This variable
385 specifies a ":" separated list of git object directories which
386 can be used to search for git objects. New objects will not be
387 written to these directories.
390 If the 'GIT_DIR' environment variable is set then it
391 specifies a path to use instead of the default `.git`
392 for the base of the repository.
395 Set the path to the working tree. The value will not be
396 used in combination with repositories found automatically in
397 a .git directory (i.e. $GIT_DIR is not set).
398 This can also be controlled by the '--work-tree' command line
399 option and the core.worktree configuration variable.
406 'GIT_COMMITTER_NAME'::
407 'GIT_COMMITTER_EMAIL'::
408 'GIT_COMMITTER_DATE'::
410 see linkgit:git-commit-tree[1]
415 Only valid setting is "--unified=??" or "-u??" to set the
416 number of context lines shown when a unified diff is created.
417 This takes precedence over any "-U" or "--unified" option
418 value passed on the git diff command line.
420 'GIT_EXTERNAL_DIFF'::
421 When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
422 program named by it is called, instead of the diff invocation
423 described above. For a path that is added, removed, or modified,
424 'GIT_EXTERNAL_DIFF' is called with 7 parameters:
426 path old-file old-hex old-mode new-file new-hex new-mode
430 <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
431 contents of <old|new>,
432 <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
433 <old|new>-mode:: are the octal representation of the file modes.
436 The file parameters can point at the user's working file
437 (e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
438 when a new file is added), or a temporary file (e.g. `old-file` in the
439 index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
440 temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
442 For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
447 'GIT_MERGE_VERBOSITY'::
448 A number controlling the amount of output shown by
449 the recursive merge strategy. Overrides merge.verbosity.
450 See linkgit:git-merge[1]
453 This environment variable overrides `$PAGER`. If it is set
454 to an empty string or to the value "cat", git will not launch
458 If this environment variable is set then linkgit:git-fetch[1]
459 and linkgit:git-push[1] will use this command instead
460 of `ssh` when they need to connect to a remote system.
461 The 'GIT_SSH' command will be given exactly two arguments:
462 the 'username@host' (or just 'host') from the URL and the
463 shell command to execute on that remote system.
465 To pass options to the program that you want to list in GIT_SSH
466 you will need to wrap the program and options into a shell script,
467 then set GIT_SSH to refer to the shell script.
469 Usually it is easier to configure any desired options through your
470 personal `.ssh/config` file. Please consult your ssh documentation
474 If this environment variable is set to "1", then commands such
475 as git-blame (in incremental mode), git-rev-list, git-log,
476 git-whatchanged, etc., will force a flush of the output stream
477 after each commit-oriented record have been flushed. If this
478 variable is set to "0", the output of these commands will be done
479 using completely buffered I/O. If this environment variable is
480 not set, git will choose buffered or record-oriented flushing
481 based on whether stdout appears to be redirected to a file or not.
484 If this variable is set to "1", "2" or "true" (comparison
485 is case insensitive), git will print `trace:` messages on
486 stderr telling about alias expansion, built-in command
487 execution and external command execution.
488 If this variable is set to an integer value greater than 1
489 and lower than 10 (strictly) then git will interpret this
490 value as an open file descriptor and will try to write the
491 trace messages into this file descriptor.
492 Alternatively, if this variable is set to an absolute path
493 (starting with a '/' character), git will interpret this
494 as a file path and will try to write the trace messages
497 Discussion[[Discussion]]
498 ------------------------
500 More detail on the following is available from the
501 link:user-manual.html#git-concepts[git concepts chapter of the
502 user-manual] and the link:core-tutorial.html[Core tutorial].
504 A git project normally consists of a working directory with a ".git"
505 subdirectory at the top level. The .git directory contains, among other
506 things, a compressed object database representing the complete history
507 of the project, an "index" file which links that history to the current
508 contents of the working tree, and named pointers into that history such
509 as tags and branch heads.
511 The object database contains objects of three main types: blobs, which
512 hold file data; trees, which point to blobs and other trees to build up
513 directory hierarchies; and commits, which each reference a single tree
514 and some number of parent commits.
516 The commit, equivalent to what other systems call a "changeset" or
517 "version", represents a step in the project's history, and each parent
518 represents an immediately preceding step. Commits with more than one
519 parent represent merges of independent lines of development.
521 All objects are named by the SHA1 hash of their contents, normally
522 written as a string of 40 hex digits. Such names are globally unique.
523 The entire history leading up to a commit can be vouched for by signing
524 just that commit. A fourth object type, the tag, is provided for this
527 When first created, objects are stored in individual files, but for
528 efficiency may later be compressed together into "pack files".
530 Named pointers called refs mark interesting points in history. A ref
531 may contain the SHA1 name of an object or the name of another ref. Refs
532 with names beginning `ref/head/` contain the SHA1 name of the most
533 recent commit (or "head") of a branch under development. SHA1 names of
534 tags of interest are stored under `ref/tags/`. A special ref named
535 `HEAD` contains the name of the currently checked-out branch.
537 The index file is initialized with a list of all paths and, for each
538 path, a blob object and a set of attributes. The blob object represents
539 the contents of the file as of the head of the current branch. The
540 attributes (last modified time, size, etc.) are taken from the
541 corresponding file in the working tree. Subsequent changes to the
542 working tree can be found by comparing these attributes. The index may
543 be updated with new content, and new commits may be created from the
544 content stored in the index.
546 The index is also capable of storing multiple entries (called "stages")
547 for a given pathname. These stages are used to hold the various
548 unmerged version of a file when a merge is in progress.
552 * git's founding father is Linus Torvalds <torvalds@osdl.org>.
553 * The current git nurse is Junio C Hamano <gitster@pobox.com>.
554 * The git potty was written by Andreas Ericsson <ae@op5.se>.
555 * General upbringing is handled by the git-list <git@vger.kernel.org>.
559 The documentation for git suite was started by David Greaves
560 <david@dgreaves.com>, and later enhanced greatly by the
561 contributors on the git-list <git@vger.kernel.org>.
565 Part of the linkgit:git[7] suite