Make git-update-ref a builtin
[gitweb.git] / Documentation / git-clone.txt
index f943f267da0356d6e129f10117fce16e19aba939..a90521e5139b264d1a37289966da64ea53c862cd 100644 (file)
@@ -3,12 +3,15 @@ git-clone(1)
 
 NAME
 ----
-git-clone - Clones a repository.
+git-clone - Clones a repository
 
 
 SYNOPSIS
 --------
-'git-clone' [-l [-s]] [-q] [-n] [-o <name>] [-u <upload-pack>] <repository> [<directory>]
+[verse]
+'git-clone' [--template=<template_directory>] [-l [-s]] [-q] [-n] [--bare]
+         [-o <name>] [-u <upload-pack>] [--reference <repository>]
+         [--use-separate-remote] <repository> [<directory>]
 
 DESCRIPTION
 -----------
@@ -44,10 +47,18 @@ OPTIONS
 -s::
        When the repository to clone is on the local machine,
        instead of using hard links, automatically setup
-       .git/objects/info/alternatives to share the objects
+       .git/objects/info/alternates to share the objects
        with the source repository.  The resulting repository
        starts out without any object of its own.
 
+--reference <repository>::
+       If the reference repository is on the local machine
+       automatically setup .git/objects/info/alternates to
+       obtain objects from the reference repository.  Using
+       an already existing repository as an alternate will
+       require less objects to be copied from the repository
+       being cloned, reducing network and local storage costs.
+
 --quiet::
 -q::
        Operate quietly.  This flag is passed to "rsync" and
@@ -56,6 +67,14 @@ OPTIONS
 -n::
        No checkout of HEAD is performed after the clone is complete.
 
+--bare::
+       Make a 'bare' GIT repository.  That is, instead of
+       creating `<directory>` and placing the administrative
+       files in `<directory>/.git`, make the `<directory>`
+       itself the `$GIT_DIR`. This implies `-n` option.  When
+       this option is used, neither the `origin` branch nor the
+       default `remotes/origin` file is created.
+
 -o <name>::
        Instead of using the branch name 'origin' to keep track
        of the upstream repository, use <name> instead.  Note
@@ -70,19 +89,29 @@ OPTIONS
        the command to specify non-default path for the command
        run on the other end.
 
+--template=<template_directory>::
+       Specify the directory from which templates will be used;
+       if unset the templates are taken from the installation
+       defined default, typically `/usr/share/git-core/templates`.
+
+--use-separate-remote::
+       Save remotes heads under `$GIT_DIR/remotes/origin/` instead
+       of `$GIT_DIR/refs/heads/`.  Only the master branch is saved
+       in the latter.
+
 <repository>::
        The (possibly remote) repository to clone from.  It can
        be any URL git-fetch supports.
 
 <directory>::
-       The name of a new directory to clone into.  The "humanish"
+       The name of a new directory to clone into.  The "humanish"
        part of the source repository is used if no directory is
        explicitly given ("repo" for "/path/to/repo.git" and "foo"
        for "host.xz:foo/.git").  Cloning into an existing directory
        is not allowed.
 
 Examples
-~~~~~~~~
+--------
 
 Clone from upstream::
 +
@@ -101,6 +130,32 @@ $ cd copy
 $ git show-branch
 ------------
 
+
+Clone from upstream while borrowing from an existing local directory::
++
+------------
+$ git clone --reference my2.6 \
+       git://git.kernel.org/pub/scm/.../linux-2.7 \
+       my2.7
+$ cd my2.7
+------------
+
+
+Create a bare repository to publish your changes to the public::
++
+------------
+$ git clone --bare -l /home/proj/.git /pub/scm/proj.git
+------------
+
+
+Create a repository on the kernel.org machine that borrows from Linus::
++
+------------
+$ git clone --bare -l -s /pub/scm/.../torvalds/linux-2.6.git \
+    /pub/scm/.../me/subsys-2.6.git
+------------
+
+
 Author
 ------
 Written by Linus Torvalds <torvalds@osdl.org>