Documentation / git-clone.txton commit Merge branch 'ph/describe-match' (3960a95)
   1git-clone(1)
   2============
   3
   4NAME
   5----
   6git-clone - Clone a repository into a new directory
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git-clone' [--template=<template_directory>]
  13          [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare]
  14          [-o <name>] [-u <upload-pack>] [--reference <repository>]
  15          [--depth <depth>] [--] <repository> [<directory>]
  16
  17DESCRIPTION
  18-----------
  19
  20Clones a repository into a newly created directory, creates
  21remote-tracking branches for each branch in the cloned repository
  22(visible using `git branch -r`), and creates and checks out an initial
  23branch equal to the cloned repository's currently active branch.
  24
  25After the clone, a plain `git fetch` without arguments will update
  26all the remote-tracking branches, and a `git pull` without
  27arguments will in addition merge the remote master branch into the
  28current master branch, if any.
  29
  30This default configuration is achieved by creating references to
  31the remote branch heads under `$GIT_DIR/refs/remotes/origin` and
  32by initializing `remote.origin.url` and `remote.origin.fetch`
  33configuration variables.
  34
  35
  36OPTIONS
  37-------
  38--local::
  39-l::
  40        When the repository to clone from is on a local machine,
  41        this flag bypasses normal "git aware" transport
  42        mechanism and clones the repository by making a copy of
  43        HEAD and everything under objects and refs directories.
  44        The files under `.git/objects/` directory are hardlinked
  45        to save space when possible.  This is now the default when
  46        the source repository is specified with `/path/to/repo`
  47        syntax, so it essentially is a no-op option.  To force
  48        copying instead of hardlinking (which may be desirable
  49        if you are trying to make a back-up of your repository),
  50        but still avoid the usual "git aware" transport
  51        mechanism, `--no-hardlinks` can be used.
  52
  53--no-hardlinks::
  54        Optimize the cloning process from a repository on a
  55        local filesystem by copying files under `.git/objects`
  56        directory.
  57
  58--shared::
  59-s::
  60        When the repository to clone is on the local machine,
  61        instead of using hard links, automatically setup
  62        .git/objects/info/alternates to share the objects
  63        with the source repository.  The resulting repository
  64        starts out without any object of its own.
  65        *NOTE*: this is a possibly dangerous operation; do *not* use
  66        it unless you understand what it does. If you clone your
  67        repository using this option, then delete branches in the
  68        source repository and then run linkgit:git-gc[1] using the
  69        '--prune' option in the source repository, it may remove
  70        objects which are referenced by the cloned repository.
  71
  72
  73
  74--reference <repository>::
  75        If the reference repository is on the local machine
  76        automatically setup .git/objects/info/alternates to
  77        obtain objects from the reference repository.  Using
  78        an already existing repository as an alternate will
  79        require fewer objects to be copied from the repository
  80        being cloned, reducing network and local storage costs.
  81
  82--quiet::
  83-q::
  84        Operate quietly.  This flag is passed to "rsync" and
  85        "git-fetch-pack" commands when given.
  86
  87--no-checkout::
  88-n::
  89        No checkout of HEAD is performed after the clone is complete.
  90
  91--bare::
  92        Make a 'bare' GIT repository.  That is, instead of
  93        creating `<directory>` and placing the administrative
  94        files in `<directory>/.git`, make the `<directory>`
  95        itself the `$GIT_DIR`. This obviously implies the `-n`
  96        because there is nowhere to check out the working tree.
  97        Also the branch heads at the remote are copied directly
  98        to corresponding local branch heads, without mapping
  99        them to `refs/remotes/origin/`.  When this option is
 100        used, neither remote-tracking branches nor the related
 101        configuration variables are created.
 102
 103--origin <name>::
 104-o <name>::
 105        Instead of using the remote name 'origin' to keep track
 106        of the upstream repository, use <name> instead.
 107
 108--upload-pack <upload-pack>::
 109-u <upload-pack>::
 110        When given, and the repository to clone from is handled
 111        by 'git-fetch-pack', '--exec=<upload-pack>' is passed to
 112        the command to specify non-default path for the command
 113        run on the other end.
 114
 115--template=<template_directory>::
 116        Specify the directory from which templates will be used;
 117        if unset the templates are taken from the installation
 118        defined default, typically `/usr/share/git-core/templates`.
 119
 120--depth <depth>::
 121        Create a 'shallow' clone with a history truncated to the
 122        specified number of revisions.  A shallow repository has a
 123        number of limitations (you cannot clone or fetch from
 124        it, nor push from nor into it), but is adequate if you
 125        are only interested in the recent history of a large project
 126        with a long history, and would want to send in fixes
 127        as patches.
 128
 129<repository>::
 130        The (possibly remote) repository to clone from.  See the
 131        <<URLS,URLS>> section below for more information on specifying
 132        repositories.
 133
 134<directory>::
 135        The name of a new directory to clone into.  The "humanish"
 136        part of the source repository is used if no directory is
 137        explicitly given ("repo" for "/path/to/repo.git" and "foo"
 138        for "host.xz:foo/.git").  Cloning into an existing directory
 139        is not allowed.
 140
 141:git-clone: 1
 142include::urls.txt[]
 143
 144Examples
 145--------
 146
 147Clone from upstream::
 148+
 149------------
 150$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
 151$ cd my2.6
 152$ make
 153------------
 154
 155
 156Make a local clone that borrows from the current directory, without checking things out::
 157+
 158------------
 159$ git clone -l -s -n . ../copy
 160$ cd ../copy
 161$ git show-branch
 162------------
 163
 164
 165Clone from upstream while borrowing from an existing local directory::
 166+
 167------------
 168$ git clone --reference my2.6 \
 169        git://git.kernel.org/pub/scm/.../linux-2.7 \
 170        my2.7
 171$ cd my2.7
 172------------
 173
 174
 175Create a bare repository to publish your changes to the public::
 176+
 177------------
 178$ git clone --bare -l /home/proj/.git /pub/scm/proj.git
 179------------
 180
 181
 182Create a repository on the kernel.org machine that borrows from Linus::
 183+
 184------------
 185$ git clone --bare -l -s /pub/scm/.../torvalds/linux-2.6.git \
 186    /pub/scm/.../me/subsys-2.6.git
 187------------
 188
 189
 190Author
 191------
 192Written by Linus Torvalds <torvalds@osdl.org>
 193
 194
 195Documentation
 196--------------
 197Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
 198
 199
 200GIT
 201---
 202Part of the linkgit:git[7] suite