<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/
			or 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.

-a, \--append::
	Append ref names and object names of fetched refs to the
	existing contents of $GIT_DIR/FETCH_HEAD.  Without this
	option old data in $GIT_DIR/FETCH_HEAD will be overwritten.

-f, \--force::
	Usually, the command refuses to update a local ref that is
	not an ancestor of the remote ref used to overwrite it.
	This flag disables the check.  What this means is that the
	local repository can lose commits; use it with care.
