Code

Document rev-list's option --merge
[git.git] / Documentation / git.txt
index 8610d36c4927fe198604189e68b131cc58be7f4d..bcf187a11cfaf754ecb93a2210139dd88f6a9d32 100644 (file)
@@ -8,14 +8,22 @@ git - the stupid content tracker
 
 SYNOPSIS
 --------
 
 SYNOPSIS
 --------
-'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [--help] COMMAND [ARGS]
+'git' [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate]
+       [--bare] [--git-dir=GIT_DIR] [--help] COMMAND [ARGS]
 
 DESCRIPTION
 -----------
 
 DESCRIPTION
 -----------
-'git' is both a program and a directory content tracker system.
-The program 'git' is just a wrapper to reach the core git programs
-(or a potty if you like, as it's not exactly porcelain but still
-brings your stuff to the plumbing).
+Git is a fast, scalable, distributed revision control system with an
+unusually rich command set that provides both high-level operations
+and full access to internals.
+
+See this link:tutorial.html[tutorial] to get started, then see
+link:everyday.html[Everyday Git] for a useful minimum set of commands, and
+"man git-commandname" for documentation of each command.  CVS users may
+also want to read link:cvs-migration.html[CVS migration].
+
+The COMMAND is either a name of a Git command (see below) or an alias
+as defined in the configuration file (see gitlink:git-repo-config[1]).
 
 OPTIONS
 -------
 
 OPTIONS
 -------
@@ -34,56 +42,48 @@ OPTIONS
        environment variable. If no path is given 'git' will print
        the current setting and then exit.
 
        environment variable. If no path is given 'git' will print
        the current setting and then exit.
 
+-p|--paginate::
+       Pipe all output into 'less' (or if set, $PAGER).
 
 
-NOT LEARNING CORE GIT COMMANDS
-------------------------------
-
-This manual is intended to give complete background information
-and internal workings of git, which may be too much for most
-people.  The <<Discussion>> section below contains much useful
-definition and clarification - read that first.
-
-If you are interested in using git to manage (version control)
-projects, use link:tutorial.html[The Tutorial] to get you started,
-and then link:everyday.html[Everyday GIT] as a guide to the
-minimum set of commands you need to know for day-to-day work.
-Most likely, that will get you started, and you can go a long
-way without knowing the low level details too much.
+--git-dir=<path>::
+       Set the path to the repository. This can also be controlled by
+       setting the GIT_DIR environment variable.
 
 
-The link:core-tutorial.html[Core tutorial] document covers how things
-internally work.
+--bare::
+       Same as --git-dir=`pwd`.
 
 
-If you are migrating from CVS, link:cvs-migration.html[cvs
-migration] document may be helpful after you finish the
-tutorial.
+FURTHER DOCUMENTATION
+---------------------
 
 
-After you get the general feel from the tutorial and this
-overview page, you may want to take a look at the
-link:howto-index.html[howto] documents.
+See the references above to get started using git.  The following is
+probably more detail than necessary for a first-time user.
 
 
+The <<Discussion,Discussion>> section below and the
+link:core-tutorial.html[Core tutorial] both provide introductions to the
+underlying git architecture.
 
 
-CORE GIT COMMANDS
------------------
+See also the link:howto-index.html[howto] documents for some useful
+examples.
 
 
-If you are writing your own Porcelain, you need to be familiar
-with most of the low level commands --- I suggest starting from
-gitlink:git-update-index[1] and gitlink:git-read-tree[1].
+GIT COMMANDS
+------------
 
 
+We divide git into high level ("porcelain") commands and low level
+("plumbing") commands.
 
 
-Commands Overview
------------------
-The git commands can helpfully be split into those that manipulate
-the repository, the index and the files in the working tree, those that
-interrogate and compare them, and those that moves objects and
-references between repositories.
+Low-level commands (plumbing)
+-----------------------------
 
 
-In addition, git itself comes with a spartan set of porcelain
-commands.  They are usable but are not meant to compete with real
-Porcelains.
+Although git includes its
+own porcelain layer, its low-level commands are sufficient to support
+development of alternative porcelains.  Developers of such porcelains
+might start by reading about gitlink:git-update-index[1] and
+gitlink:git-read-tree[1].
 
 
-There are also some ancillary programs that can be viewed as useful
-aids for using the core commands but which are unlikely to be used by
-SCMs layered over git.
+We divide the low-level commands into commands that manipulate objects (in
+the repository, index, and working tree), commands that interrogate and
+compare objects, and commands that move objects and references between
+repositories.
 
 Manipulation commands
 ~~~~~~~~~~~~~~~~~~~~~
 
 Manipulation commands
 ~~~~~~~~~~~~~~~~~~~~~
@@ -113,6 +113,9 @@ gitlink:git-merge-index[1]::
 gitlink:git-mktag[1]::
        Creates a tag object.
 
 gitlink:git-mktag[1]::
        Creates a tag object.
 
+gitlink:git-mktree[1]::
+       Build a tree-object from ls-tree formatted text.
+
 gitlink:git-pack-objects[1]::
        Creates a packed archive of objects.
 
 gitlink:git-pack-objects[1]::
        Creates a packed archive of objects.
 
@@ -199,10 +202,6 @@ the working tree.
 Synching repositories
 ~~~~~~~~~~~~~~~~~~~~~
 
 Synching repositories
 ~~~~~~~~~~~~~~~~~~~~~
 
-gitlink:git-clone-pack[1]::
-       Clones a repository into the current repository (engine
-       for ssh and local transport).
-
 gitlink:git-fetch-pack[1]::
        Updates from a remote repository (engine for ssh and
        local transport).
 gitlink:git-fetch-pack[1]::
        Updates from a remote repository (engine for ssh and
        local transport).
@@ -244,12 +243,22 @@ gitlink:git-update-server-info[1]::
        clients discover references and packs on it.
 
 gitlink:git-upload-pack[1]::
        clients discover references and packs on it.
 
 gitlink:git-upload-pack[1]::
-       Invoked by 'git-clone-pack' and 'git-fetch-pack' to push
+       Invoked by 'git-fetch-pack' to push
        what are asked for.
 
        what are asked for.
 
+gitlink:git-upload-tar[1]::
+       Invoked by 'git-tar-tree --remote' to return the tar
+       archive the other end asked for.
 
 
-Porcelain-ish Commands
-----------------------
+
+High-level commands (porcelain)
+-------------------------------
+
+We separate the porcelain commands into the main commands and some
+ancillary user utilities.
+
+Main porcelain commands
+~~~~~~~~~~~~~~~~~~~~~~~
 
 gitlink:git-add[1]::
        Add paths to the index.
 
 gitlink:git-add[1]::
        Add paths to the index.
@@ -272,6 +281,9 @@ gitlink:git-checkout[1]::
 gitlink:git-cherry-pick[1]::
        Cherry-pick the effect of an existing commit.
 
 gitlink:git-cherry-pick[1]::
        Cherry-pick the effect of an existing commit.
 
+gitlink:git-clean[1]::
+       Remove untracked files from the working tree.
+
 gitlink:git-clone[1]::
        Clones a repository into a new directory.
 
 gitlink:git-clone[1]::
        Clones a repository into a new directory.
 
@@ -326,9 +338,15 @@ gitlink:git-resolve[1]::
 gitlink:git-revert[1]::
        Revert an existing commit.
 
 gitlink:git-revert[1]::
        Revert an existing commit.
 
+gitlink:git-rm[1]::
+       Remove files from the working tree and from the index.
+
 gitlink:git-shortlog[1]::
        Summarizes 'git log' output.
 
 gitlink:git-shortlog[1]::
        Summarizes 'git log' output.
 
+gitlink:git-show[1]::
+       Show one commit log and its diff.
+
 gitlink:git-show-branch[1]::
        Show branches and their commits.
 
 gitlink:git-show-branch[1]::
        Show branches and their commits.
 
@@ -343,7 +361,7 @@ gitlink:git-whatchanged[1]::
 
 
 Ancillary Commands
 
 
 Ancillary Commands
-------------------
+~~~~~~~~~~~~~~~~~~
 Manipulators:
 
 gitlink:git-applypatch[1]::
 Manipulators:
 
 gitlink:git-applypatch[1]::
@@ -361,6 +379,9 @@ gitlink:git-cvsimport[1]::
 gitlink:git-cvsexportcommit[1]::
        Export a single commit to a CVS checkout.
 
 gitlink:git-cvsexportcommit[1]::
        Export a single commit to a CVS checkout.
 
+gitlink:git-cvsserver[1]::
+       A CVS server emulator for git.
+
 gitlink:git-lost-found[1]::
        Recover lost refs that luckily have not yet been pruned.
 
 gitlink:git-lost-found[1]::
        Recover lost refs that luckily have not yet been pruned.
 
@@ -370,9 +391,15 @@ gitlink:git-merge-one-file[1]::
 gitlink:git-prune[1]::
        Prunes all unreachable objects from the object database.
 
 gitlink:git-prune[1]::
        Prunes all unreachable objects from the object database.
 
+gitlink:git-quiltimport[1]::
+       Applies a quilt patchset onto the current branch.
+
 gitlink:git-relink[1]::
        Hardlink common objects in local repositories.
 
 gitlink:git-relink[1]::
        Hardlink common objects in local repositories.
 
+gitlink:git-svn[1]::
+       Bidirectional operation between a single Subversion branch and git.
+
 gitlink:git-svnimport[1]::
        Import a SVN repository into git.
 
 gitlink:git-svnimport[1]::
        Import a SVN repository into git.
 
@@ -391,6 +418,12 @@ gitlink:git-update-ref[1]::
 
 Interrogators:
 
 
 Interrogators:
 
+gitlink:git-annotate[1]::
+       Annotate file lines with commit info.
+
+gitlink:git-blame[1]::
+       Blame file lines on commits.
+
 gitlink:git-check-ref-format[1]::
        Make sure ref name is well formed.
 
 gitlink:git-check-ref-format[1]::
        Make sure ref name is well formed.
 
@@ -403,9 +436,18 @@ gitlink:git-count-objects[1]::
 gitlink:git-daemon[1]::
        A really simple server for git repositories.
 
 gitlink:git-daemon[1]::
        A really simple server for git repositories.
 
+gitlink:git-fmt-merge-msg[1]::
+       Produce a merge commit message.
+
 gitlink:git-get-tar-commit-id[1]::
        Extract commit ID from an archive created using git-tar-tree.
 
 gitlink:git-get-tar-commit-id[1]::
        Extract commit ID from an archive created using git-tar-tree.
 
+gitlink:git-imap-send[1]::
+       Dump a mailbox from stdin into an imap folder.
+
+gitlink:git-instaweb[1]::
+       Instantly browse your working repository in gitweb.
+
 gitlink:git-mailinfo[1]::
        Extracts patch and authorship information from a single
        e-mail message, optionally transliterating the commit
 gitlink:git-mailinfo[1]::
        Extracts patch and authorship information from a single
        e-mail message, optionally transliterating the commit
@@ -415,6 +457,9 @@ gitlink:git-mailsplit[1]::
        A stupid program to split UNIX mbox format mailbox into
        individual pieces of e-mail.
 
        A stupid program to split UNIX mbox format mailbox into
        individual pieces of e-mail.
 
+gitlink:git-merge-tree[1]::
+       Show three-way merge without touching index.
+
 gitlink:git-patch-id[1]::
        Compute unique ID for a patch.
 
 gitlink:git-patch-id[1]::
        Compute unique ID for a patch.
 
@@ -449,7 +494,7 @@ Configuration Mechanism
 
 Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
 is used to hold per-repository configuration options.  It is a
 
 Starting from 0.99.9 (actually mid 0.99.8.GIT), `.git/config` file
 is used to hold per-repository configuration options.  It is a
-simple text file modelled after `.ini` format familiar to some
+simple text file modeled after `.ini` format familiar to some
 people.  Here is an example:
 
 ------------
 people.  Here is an example:
 
 ------------
@@ -518,16 +563,14 @@ HEAD::
        a valid head 'name'
        (i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
 
        a valid head 'name'
        (i.e. the contents of `$GIT_DIR/refs/heads/<head>`).
 
-<snap>::
-       a valid snapshot 'name'
-       (i.e. the contents of `$GIT_DIR/refs/snap/<snap>`).
-
 
 File/Directory Structure
 ------------------------
 
 Please see link:repository-layout.html[repository layout] document.
 
 
 File/Directory Structure
 ------------------------
 
 Please see link:repository-layout.html[repository layout] document.
 
+Read link:hooks.html[hooks] for more details about each hook.
+
 Higher level SCMs may provide and manage additional information in the
 `$GIT_DIR`.
 
 Higher level SCMs may provide and manage additional information in the
 `$GIT_DIR`.
 
@@ -588,6 +631,13 @@ git Diffs
        gitlink:git-diff-files[1];
        gitlink:git-diff-tree[1]
 
        gitlink:git-diff-files[1];
        gitlink:git-diff-tree[1]
 
+other
+~~~~~
+'GIT_TRACE'::
+       If this variable is set git will print `trace:` messages on
+       stderr telling about alias expansion, built-in command
+       execution and external command execution.
+
 Discussion[[Discussion]]
 ------------------------
 include::README[]
 Discussion[[Discussion]]
 ------------------------
 include::README[]