]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-clone.txt
git-am: Mention --abort in usage string part of OPTIONS_SPEC
[thirdparty/git.git] / Documentation / git-clone.txt
CommitLineData
215a7ad1
JH
1git-clone(1)
2============
6ec311da
JH
3
4NAME
5----
29cf5e12 6git-clone - Clone a repository into a new directory
6ec311da
JH
7
8
9SYNOPSIS
10--------
353ce815 11[verse]
b1889c36 12'git clone' [--template=<template_directory>]
3d5c418f 13 [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare]
a57c8bac 14 [-o <name>] [-u <upload-pack>] [--reference <repository>]
19391c37 15 [--depth <depth>] [--] <repository> [<directory>]
6ec311da
JH
16
17DESCRIPTION
18-----------
4607166d 19
db9819a4
BF
20Clones a repository into a newly created directory, creates
21remote-tracking branches for each branch in the cloned repository
1170e802
SG
22(visible using `git branch -r`), and creates and checks out an initial
23branch equal to the cloned repository's currently active branch.
4607166d 24
db9819a4
BF
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
1170e802 28current master branch, if any.
4607166d 29
db9819a4
BF
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.
6ec311da 34
f4bf2184 35
6ec311da
JH
36OPTIONS
37-------
a2775c2a 38--local::
6ec311da
JH
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.
3d5c418f
JH
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.
6ec311da 57
a2775c2a
EB
58--shared::
59-s::
60 When the repository to clone is on the local machine,
4607166d 61 instead of using hard links, automatically setup
23edecbc 62 .git/objects/info/alternates to share the objects
4607166d
JH
63 with the source repository. The resulting repository
64 starts out without any object of its own.
84668872
MV
65+
66*NOTE*: this is a possibly dangerous operation; do *not* use
67it unless you understand what it does. If you clone your
2498a1ad
BC
68repository using this option and then delete branches (or use any
69other git command that makes any existing commit unreferenced) in the
70source repository, some objects may become unreferenced (or dangling).
ba020ef5 71These objects may be removed by normal git operations (such as 'git-commit')
483bc4f0
JN
72which automatically call `git gc --auto`. (See linkgit:git-gc[1].)
73If these objects are removed and were referenced by the cloned repository,
74then the cloned repository will become corrupt.
28678b4f
MV
75
76
a2775c2a 77
23edecbc
SP
78--reference <repository>::
79 If the reference repository is on the local machine
80 automatically setup .git/objects/info/alternates to
81 obtain objects from the reference repository. Using
82 an already existing repository as an alternate will
451e5931 83 require fewer objects to be copied from the repository
23edecbc 84 being cloned, reducing network and local storage costs.
2498a1ad
BC
85+
86*NOTE*: see NOTE to --shared option.
23edecbc 87
a2775c2a 88--quiet::
6ec311da
JH
89-q::
90 Operate quietly. This flag is passed to "rsync" and
ba020ef5 91 'git-fetch-pack' commands when given.
6ec311da 92
fd0368f9 93--no-checkout::
a2775c2a
EB
94-n::
95 No checkout of HEAD is performed after the clone is complete.
96
87e80c4b
JH
97--bare::
98 Make a 'bare' GIT repository. That is, instead of
8a1a120c
JH
99 creating `<directory>` and placing the administrative
100 files in `<directory>/.git`, make the `<directory>`
71821351
PB
101 itself the `$GIT_DIR`. This obviously implies the `-n`
102 because there is nowhere to check out the working tree.
103 Also the branch heads at the remote are copied directly
104 to corresponding local branch heads, without mapping
105 them to `refs/remotes/origin/`. When this option is
36566cc0
BF
106 used, neither remote-tracking branches nor the related
107 configuration variables are created.
8a1a120c 108
ba158a32 109--origin <name>::
e6c310fd 110-o <name>::
36566cc0
BF
111 Instead of using the remote name 'origin' to keep track
112 of the upstream repository, use <name> instead.
e6c310fd 113
a2775c2a 114--upload-pack <upload-pack>::
6ec311da
JH
115-u <upload-pack>::
116 When given, and the repository to clone from is handled
ba020ef5 117 by 'git-fetch-pack', `--exec=<upload-pack>` is passed to
6ec311da
JH
118 the command to specify non-default path for the command
119 run on the other end.
120
a57c8bac
JH
121--template=<template_directory>::
122 Specify the directory from which templates will be used;
123 if unset the templates are taken from the installation
124 defined default, typically `/usr/share/git-core/templates`.
125
f496454e 126--depth <depth>::
f4bf2184 127 Create a 'shallow' clone with a history truncated to the
d9d10bb8 128 specified number of revisions. A shallow repository has a
f4bf2184
JH
129 number of limitations (you cannot clone or fetch from
130 it, nor push from nor into it), but is adequate if you
d9d10bb8
RW
131 are only interested in the recent history of a large project
132 with a long history, and would want to send in fixes
f4bf2184
JH
133 as patches.
134
6ec311da 135<repository>::
37ba0561
AR
136 The (possibly remote) repository to clone from. See the
137 <<URLS,URLS>> section below for more information on specifying
138 repositories.
6ec311da
JH
139
140<directory>::
fb6a9f93 141 The name of a new directory to clone into. The "humanish"
0879aa28
AE
142 part of the source repository is used if no directory is
143 explicitly given ("repo" for "/path/to/repo.git" and "foo"
144 for "host.xz:foo/.git"). Cloning into an existing directory
145 is not allowed.
4607166d 146
347989f4 147:git-clone: 1
37ba0561
AR
148include::urls.txt[]
149
1e2ccd3a 150Examples
2b5f3ed3 151--------
1e2ccd3a
JH
152
153Clone from upstream::
154+
155------------
156$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
157$ cd my2.6
158$ make
159------------
160
161
162Make a local clone that borrows from the current directory, without checking things out::
163+
164------------
165$ git clone -l -s -n . ../copy
a6e3768f 166$ cd ../copy
1e2ccd3a
JH
167$ git show-branch
168------------
169
8a1a120c 170
23edecbc
SP
171Clone from upstream while borrowing from an existing local directory::
172+
173------------
174$ git clone --reference my2.6 \
175 git://git.kernel.org/pub/scm/.../linux-2.7 \
176 my2.7
177$ cd my2.7
178------------
179
180
87e80c4b 181Create a bare repository to publish your changes to the public::
8a1a120c
JH
182+
183------------
87e80c4b 184$ git clone --bare -l /home/proj/.git /pub/scm/proj.git
8a1a120c
JH
185------------
186
187
188Create a repository on the kernel.org machine that borrows from Linus::
189+
190------------
87e80c4b 191$ git clone --bare -l -s /pub/scm/.../torvalds/linux-2.6.git \
8a1a120c
JH
192 /pub/scm/.../me/subsys-2.6.git
193------------
194
195
6ec311da
JH
196Author
197------
198Written by Linus Torvalds <torvalds@osdl.org>
199
1e2ccd3a 200
6ec311da
JH
201Documentation
202--------------
0879aa28 203Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
6ec311da
JH
204
205
206GIT
207---
9e1f0a85 208Part of the linkgit:git[1] suite