Documentation / git-clone.txton commit Merge branch 'maint' (ba988a8)
   1git-clone(1)
   2============
   3
   4NAME
   5----
   6git-clone - Clones a repository
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git-clone' [--template=<template_directory>] [-l [-s]] [-q] [-n] [--bare]
  13          [-o <name>] [-u <upload-pack>] [--reference <repository>]
  14          [--use-separate-remote | --no-separate-remote] <repository>
  15          [<directory>]
  16
  17DESCRIPTION
  18-----------
  19Clones a repository into a newly created directory.  All remote
  20branch heads are copied under `$GIT_DIR/refs/heads/`, except
  21that the remote `master` is also copied to `origin` branch.
  22
  23In addition, `$GIT_DIR/remotes/origin` file is set up to have
  24this line:
  25
  26        Pull: master:origin
  27
  28This is to help the typical workflow of working off of the
  29remote `master` branch.  Every time `git pull` without argument
  30is run, the progress on the remote `master` branch is tracked by
  31copying it into the local `origin` branch, and merged into the
  32branch you are currently working on.  Remote branches other than
  33`master` are also added there to be tracked.
  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.
  46
  47--shared::
  48-s::
  49        When the repository to clone is on the local machine,
  50        instead of using hard links, automatically setup
  51        .git/objects/info/alternates to share the objects
  52        with the source repository.  The resulting repository
  53        starts out without any object of its own.
  54
  55--reference <repository>::
  56        If the reference repository is on the local machine
  57        automatically setup .git/objects/info/alternates to
  58        obtain objects from the reference repository.  Using
  59        an already existing repository as an alternate will
  60        require less objects to be copied from the repository
  61        being cloned, reducing network and local storage costs.
  62
  63--quiet::
  64-q::
  65        Operate quietly.  This flag is passed to "rsync" and
  66        "git-fetch-pack" commands when given.
  67
  68-n::
  69        No checkout of HEAD is performed after the clone is complete.
  70
  71--bare::
  72        Make a 'bare' GIT repository.  That is, instead of
  73        creating `<directory>` and placing the administrative
  74        files in `<directory>/.git`, make the `<directory>`
  75        itself the `$GIT_DIR`. This obviously implies the `-n`
  76        because there is nowhere to check out the working tree.
  77        Also the branch heads at the remote are copied directly
  78        to corresponding local branch heads, without mapping
  79        them to `refs/remotes/origin/`.  When this option is
  80        used, neither the `origin` branch nor the default
  81        `remotes/origin` file is created.
  82
  83--origin <name>::
  84-o <name>::
  85        Instead of using the branch name 'origin' to keep track
  86        of the upstream repository, use <name> instead.  Note
  87        that the shorthand name stored in `remotes/origin` is
  88        not affected, but the local branch name to pull the
  89        remote `master` branch into is.
  90
  91--upload-pack <upload-pack>::
  92-u <upload-pack>::
  93        When given, and the repository to clone from is handled
  94        by 'git-fetch-pack', '--exec=<upload-pack>' is passed to
  95        the command to specify non-default path for the command
  96        run on the other end.
  97
  98--template=<template_directory>::
  99        Specify the directory from which templates will be used;
 100        if unset the templates are taken from the installation
 101        defined default, typically `/usr/share/git-core/templates`.
 102
 103--use-separate-remote::
 104        Save remotes heads under `$GIT_DIR/remotes/origin/` instead
 105        of `$GIT_DIR/refs/heads/`.  Only the local master branch is
 106        saved in the latter. This is the default.
 107
 108--no-separate-remote::
 109        Save remotes heads in the same namespace as the local
 110        heads, `$GIT_DIR/refs/heads/'.  In regular repositories,
 111        this is a legacy setup git-clone created by default in
 112        older Git versions, and will be removed before the next
 113        major release.
 114
 115<repository>::
 116        The (possibly remote) repository to clone from.  It can
 117        be any URL git-fetch supports.
 118
 119<directory>::
 120        The name of a new directory to clone into.  The "humanish"
 121        part of the source repository is used if no directory is
 122        explicitly given ("repo" for "/path/to/repo.git" and "foo"
 123        for "host.xz:foo/.git").  Cloning into an existing directory
 124        is not allowed.
 125
 126Examples
 127--------
 128
 129Clone from upstream::
 130+
 131------------
 132$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
 133$ cd my2.6
 134$ make
 135------------
 136
 137
 138Make a local clone that borrows from the current directory, without checking things out::
 139+
 140------------
 141$ git clone -l -s -n . ../copy
 142$ cd copy
 143$ git show-branch
 144------------
 145
 146
 147Clone from upstream while borrowing from an existing local directory::
 148+
 149------------
 150$ git clone --reference my2.6 \
 151        git://git.kernel.org/pub/scm/.../linux-2.7 \
 152        my2.7
 153$ cd my2.7
 154------------
 155
 156
 157Create a bare repository to publish your changes to the public::
 158+
 159------------
 160$ git clone --bare -l /home/proj/.git /pub/scm/proj.git
 161------------
 162
 163
 164Create a repository on the kernel.org machine that borrows from Linus::
 165+
 166------------
 167$ git clone --bare -l -s /pub/scm/.../torvalds/linux-2.6.git \
 168    /pub/scm/.../me/subsys-2.6.git
 169------------
 170
 171
 172Author
 173------
 174Written by Linus Torvalds <torvalds@osdl.org>
 175
 176
 177Documentation
 178--------------
 179Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
 180
 181
 182GIT
 183---
 184Part of the gitlink:git[7] suite
 185