SYNOPSIS

git-fetch-script <repository> <refspec>…

DESCRIPTION

Fetches named heads or tags from another repository, along with the objects necessary to complete them.

The ref names and their object names of fetched refs are stored in $GIT_DIR/FETCH_HEAD. This information is left for a later merge operation done by "git resolve" or "git octopus".

OPTIONS

<repository>

The "remote" repository to pull from. One of the following notations can be used to name the repository to pull from:

Rsync URL
        rsync://remote.machine/path/to/repo.git/
HTTP(s) URL
        http://remote.machine/path/to/repo.git/
GIT URL
        git://remote.machine/path/to/repo.git/
        remote.machine:/path/to/repo.git/
Local directory
        /path/to/repo.git/
In addition to the above, as a short-hand, the name of a
file in $GIT_DIR/remotes directory can be given; the
named file should be in the following format:
URL: one of the above URL format
Push: <refspec>...
Pull: <refspec>...
When such a short-hand is specified in place of
<repository> without <refspec> parameters on the command
line, <refspec>... specified on Push lines or Pull lines
are used for "git push" and "git fetch/pull",
respectively.
The name of a file in $GIT_DIR/branches directory can be
specified as an older notation short-hand; the named
file should contain a single line, a URL in one of the
above formats, optionally followed by a hash '#' and the
name of remote head (URL fragment notation).
$GIT_DIR/branches/<remote> file that stores a <url>
without the fragment is equivalent to have this in the
corresponding file in the $GIT_DIR/remotes/ directory
URL: <url>
Pull: refs/heads/master:<remote>
while having <url>#<head> is equivalent to
URL: <url>
Pull: refs/heads/<head>:<remote>
<refspec>

The canonical format of a <refspec> parameter is +?<src>:<dst>; that is, an optional plus +, followed by the source ref, followed by a colon :, followed by the destination ref.

When used in "git push", the <src> side can be an
arbitrary "SHA1 expression" that can be used as an
argument to "git-cat-file -t".  E.g. "master~4" (push
four parents before the current master head).
For "git push", the local ref that matches <src> is used
to fast forward the remote ref that matches <dst>.  If
the optional plus '+' is used, the remote ref is updated
even if it does not result in a fast forward update.
For "git fetch/pull", the remote ref that matches <src>
is fetched, and if <dst> is not empty string, the local
ref that matches it is fast forwarded using <src>.
Again, if the optional plus '+' is used, the local ref
is updated even if it does not result in a fast forward
update.
Some short-cut notations are also supported.
  • For backward compatibility, "tag" is almost ignored; it just makes the following parameter <tag> to mean a refspec "refs/tags/<tag>:refs/tags/<tag>".

  • A parameter <ref> without a colon is equivalent to <ref>: when pulling/fetching, and <ref>:<ref> when pushing. That is, do not store it locally if fetching, and update the same name if pushing.

Author

Written by Linus Torvalds <torvalds@osdl.org> and Junio C Hamano <junkio@cox.net>

Documentation

Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT

Part of the git suite