Merge branch 'db/send-email-omit-cc'
[gitweb.git] / Documentation / git-pull.txt
index a90b764cc908df3b3af7b180f0940768189b724f..179bdfc69ddfeff9d272ec309721e4098f3b051e 100644 (file)
@@ -3,7 +3,7 @@ git-pull(1)
 
 NAME
 ----
-git-pull - Pull and merge from another repository or a local branch
+git-pull - Fetch from and merge with another repository or a local branch
 
 
 SYNOPSIS
@@ -25,14 +25,83 @@ OPTIONS
 -------
 include::merge-options.txt[]
 
+:git-pull: 1
 include::fetch-options.txt[]
 
 include::pull-fetch-param.txt[]
 
-include::urls.txt[]
+include::urls-remotes.txt[]
 
 include::merge-strategies.txt[]
 
+\--rebase::
+       Instead of a merge, perform a rebase after fetching.  If
+       there is a remote ref for the upstream branch, and this branch
+       was rebased since last fetched, the rebase uses that information
+       to avoid rebasing non-local changes.
++
+*NOTE:* This is a potentially _dangerous_ mode of operation.
+It rewrites history, which does not bode well when you
+published that history already.  Do *not* use this option
+unless you have read linkgit:git-rebase[1] carefully.
+
+\--no-rebase::
+       Override earlier \--rebase.
+
+DEFAULT BEHAVIOUR
+-----------------
+
+Often people use `git pull` without giving any parameter.
+Traditionally, this has been equivalent to saying `git pull
+origin`.  However, when configuration `branch.<name>.remote` is
+present while on branch `<name>`, that value is used instead of
+`origin`.
+
+In order to determine what URL to use to fetch from, the value
+of the configuration `remote.<origin>.url` is consulted
+and if there is not any such variable, the value on `URL: ` line
+in `$GIT_DIR/remotes/<origin>` file is used.
+
+In order to determine what remote branches to fetch (and
+optionally store in the tracking branches) when the command is
+run without any refspec parameters on the command line, values
+of the configuration variable `remote.<origin>.fetch` are
+consulted, and if there aren't any, `$GIT_DIR/remotes/<origin>`
+file is consulted and its `Pull: ` lines are used.
+In addition to the refspec formats described in the OPTIONS
+section, you can have a globbing refspec that looks like this:
+
+------------
+refs/heads/*:refs/remotes/origin/*
+------------
+
+A globbing refspec must have a non-empty RHS (i.e. must store
+what were fetched in tracking branches), and its LHS and RHS
+must end with `/*`.  The above specifies that all remote
+branches are tracked using tracking branches in
+`refs/remotes/origin/` hierarchy under the same name.
+
+The rule to determine which remote branch to merge after
+fetching is a bit involved, in order not to break backward
+compatibility.
+
+If explicit refspecs were given on the command
+line of `git pull`, they are all merged.
+
+When no refspec was given on the command line, then `git pull`
+uses the refspec from the configuration or
+`$GIT_DIR/remotes/<origin>`.  In such cases, the following
+rules apply:
+
+. If `branch.<name>.merge` configuration for the current
+  branch `<name>` exists, that is the name of the branch at the
+  remote site that is merged.
+
+. If the refspec is a globbing one, nothing is merged.
+
+. Otherwise the remote branch of the first refspec is merged.
+
+
 EXAMPLES
 --------
 
@@ -42,7 +111,7 @@ git pull, git pull origin::
        current branch.  Normally the branch merged in is
        the HEAD of the remote repository, but the choice is
        determined by the branch.<name>.remote and
-       branch.<name>.merge options; see gitlink:git-repo-config[1]
+       branch.<name>.merge options; see linkgit:git-config[1]
        for details.
 
 git pull origin next::
@@ -89,12 +158,12 @@ The final command then merges the newly fetched `tmp` into master.
 
 If you tried a pull which resulted in a complex conflicts and
 would want to start over, you can recover with
-gitlink:git-reset[1].
+linkgit:git-reset[1].
 
 
 SEE ALSO
 --------
-gitlink:git-fetch[1], gitlink:git-merge[1], gitlink:git-repo-config[1]
+linkgit:git-fetch[1], linkgit:git-merge[1], linkgit:git-config[1]
 
 
 Author
@@ -110,5 +179,4 @@ Junio C Hamano and the git-list <git@vger.kernel.org>.
 
 GIT
 ---
-Part of the gitlink:git[7] suite
-
+Part of the linkgit:git[7] suite