]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/git-clone.txt
Merge branch 'nd/am-i18n-fix'
[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>]
bc699afc 13 [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
db9bc00e 14 [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
09ffc706 15 [--separate-git-dir <git dir>]
3e6e0edd
NTND
16 [--depth <depth>] [--[no-]single-branch]
17 [--recursive|--recurse-submodules] [--] <repository>
ccdd3da6 18 [<directory>]
6ec311da
JH
19
20DESCRIPTION
21-----------
4607166d 22
db9819a4
BF
23Clones a repository into a newly created directory, creates
24remote-tracking branches for each branch in the cloned repository
33405be3
JN
25(visible using `git branch -r`), and creates and checks out an
26initial branch that is forked from the cloned repository's
27currently active branch.
4607166d 28
db9819a4
BF
29After the clone, a plain `git fetch` without arguments will update
30all the remote-tracking branches, and a `git pull` without
31arguments will in addition merge the remote master branch into the
1170e802 32current master branch, if any.
4607166d 33
db9819a4 34This default configuration is achieved by creating references to
cc1b8d8b 35the remote branch heads under `refs/remotes/origin` and
db9819a4
BF
36by initializing `remote.origin.url` and `remote.origin.fetch`
37configuration variables.
6ec311da 38
f4bf2184 39
6ec311da
JH
40OPTIONS
41-------
a2775c2a 42--local::
6ec311da
JH
43-l::
44 When the repository to clone from is on a local machine,
550c66f3 45 this flag bypasses the normal "git aware" transport
6ec311da
JH
46 mechanism and clones the repository by making a copy of
47 HEAD and everything under objects and refs directories.
3d5c418f 48 The files under `.git/objects/` directory are hardlinked
9197a10c
JK
49 to save space when possible.
50+
51If the repository is specified as a local path (e.g., `/path/to/repo`),
52this is the default, and --local is essentially a no-op. If the
53repository is specified as a URL, then this flag is ignored (and we
189260b1
JK
54never use the local optimizations). Specifying `--no-local` will
55override the default when `/path/to/repo` is given, using the regular
56git transport instead.
9197a10c
JK
57+
58To force copying instead of hardlinking (which may be desirable if you
59are trying to make a back-up of your repository), but still avoid the
60usual "git aware" transport mechanism, `--no-hardlinks` can be used.
3d5c418f
JH
61
62--no-hardlinks::
63 Optimize the cloning process from a repository on a
64 local filesystem by copying files under `.git/objects`
65 directory.
6ec311da 66
a2775c2a
EB
67--shared::
68-s::
69 When the repository to clone is on the local machine,
4607166d 70 instead of using hard links, automatically setup
550c66f3 71 `.git/objects/info/alternates` to share the objects
4607166d
JH
72 with the source repository. The resulting repository
73 starts out without any object of its own.
84668872
MV
74+
75*NOTE*: this is a possibly dangerous operation; do *not* use
76it unless you understand what it does. If you clone your
2498a1ad
BC
77repository using this option and then delete branches (or use any
78other git command that makes any existing commit unreferenced) in the
79source repository, some objects may become unreferenced (or dangling).
550c66f3 80These objects may be removed by normal git operations (such as `git commit`)
483bc4f0
JN
81which automatically call `git gc --auto`. (See linkgit:git-gc[1].)
82If these objects are removed and were referenced by the cloned repository,
83then the cloned repository will become corrupt.
13354f53
JK
84+
85Note that running `git repack` without the `-l` option in a repository
86cloned with `-s` will copy objects from the source repository into a pack
87in the cloned repository, removing the disk space savings of `clone -s`.
88It is safe, however, to run `git gc`, which uses the `-l` option by
89default.
90+
91If you want to break the dependency of a repository cloned with `-s` on
92its source repository, you can simply run `git repack -a` to copy all
93objects from the source repository into a pack in the cloned repository.
a2775c2a 94
23edecbc 95--reference <repository>::
40592376 96 If the reference repository is on the local machine,
550c66f3 97 automatically setup `.git/objects/info/alternates` to
23edecbc
SP
98 obtain objects from the reference repository. Using
99 an already existing repository as an alternate will
451e5931 100 require fewer objects to be copied from the repository
23edecbc 101 being cloned, reducing network and local storage costs.
2498a1ad 102+
550c66f3 103*NOTE*: see the NOTE for the `--shared` option.
23edecbc 104
a2775c2a 105--quiet::
6ec311da 106-q::
488c3163
TRC
107 Operate quietly. Progress is not reported to the standard
108 error stream. This flag is also passed to the `rsync'
d3296e37 109 command when given.
6ec311da 110
21188b1e
MV
111--verbose::
112-v::
c54b74af
TRC
113 Run verbosely. Does not affect the reporting of progress status
114 to the standard error stream.
5a518ad4
TRC
115
116--progress::
488c3163
TRC
117 Progress status is reported on the standard error stream
118 by default when it is attached to a terminal, unless -q
119 is specified. This flag forces progress status even if the
120 standard error stream is not directed to a terminal.
21188b1e 121
fd0368f9 122--no-checkout::
a2775c2a
EB
123-n::
124 No checkout of HEAD is performed after the clone is complete.
125
87e80c4b
JH
126--bare::
127 Make a 'bare' GIT repository. That is, instead of
8a1a120c
JH
128 creating `<directory>` and placing the administrative
129 files in `<directory>/.git`, make the `<directory>`
71821351
PB
130 itself the `$GIT_DIR`. This obviously implies the `-n`
131 because there is nowhere to check out the working tree.
132 Also the branch heads at the remote are copied directly
133 to corresponding local branch heads, without mapping
134 them to `refs/remotes/origin/`. When this option is
36566cc0
BF
135 used, neither remote-tracking branches nor the related
136 configuration variables are created.
8a1a120c 137
bc699afc 138--mirror::
6db2103f
UKK
139 Set up a mirror of the source repository. This implies `--bare`.
140 Compared to `--bare`, `--mirror` not only maps local branches of the
141 source to local branches of the target, it maps all refs (including
29b9a66f 142 remote-tracking branches, notes etc.) and sets up a refspec configuration such
6db2103f
UKK
143 that all these refs are overwritten by a `git remote update` in the
144 target repository.
bc699afc 145
ba158a32 146--origin <name>::
e6c310fd 147-o <name>::
550c66f3
BG
148 Instead of using the remote name `origin` to keep track
149 of the upstream repository, use `<name>`.
e6c310fd 150
7a4ee28f
JK
151--branch <name>::
152-b <name>::
153 Instead of pointing the newly created HEAD to the branch pointed
550c66f3 154 to by the cloned repository's HEAD, point to `<name>` branch
5a7d5b68
NTND
155 instead. `--branch` can also take tags and treat them like
156 detached HEAD. In a non-bare repository, this is the branch
157 that will be checked out.
7a4ee28f 158
a2775c2a 159--upload-pack <upload-pack>::
6ec311da 160-u <upload-pack>::
d3296e37
SH
161 When given, and the repository to clone from is accessed
162 via ssh, this specifies a non-default path for the command
6ec311da
JH
163 run on the other end.
164
a57c8bac
JH
165--template=<template_directory>::
166 Specify the directory from which templates will be used;
d8a8488d 167 (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)
a57c8bac 168
84054f79
JK
169--config <key>=<value>::
170-c <key>=<value>::
171 Set a configuration variable in the newly-created repository;
172 this takes effect immediately after the repository is
173 initialized, but before the remote history is fetched or any
174 files checked out. The key is in the same format as expected by
175 linkgit:git-config[1] (e.g., `core.eol=true`). If multiple
176 values are given for the same key, each value will be written to
177 the config file. This makes it safe, for example, to add
178 additional fetch refspecs to the origin remote.
179
f496454e 180--depth <depth>::
f4bf2184 181 Create a 'shallow' clone with a history truncated to the
d9d10bb8 182 specified number of revisions. A shallow repository has a
f4bf2184
JH
183 number of limitations (you cannot clone or fetch from
184 it, nor push from nor into it), but is adequate if you
d9d10bb8
RW
185 are only interested in the recent history of a large project
186 with a long history, and would want to send in fixes
f4bf2184
JH
187 as patches.
188
3e6e0edd
NTND
189--single-branch::
190 Clone only the history leading to the tip of a single branch,
191 either specified by the `--branch` option or the primary
192 branch remote's `HEAD` points at. When creating a shallow
193 clone with the `--depth` option, this is the default, unless
194 `--no-single-branch` is given to fetch the histories near the
195 tips of all branches.
196
e7fed18a 197--recursive::
ccdd3da6 198--recurse-submodules::
e7fed18a
JH
199 After the clone is created, initialize all submodules within,
200 using their default settings. This is equivalent to running
550c66f3 201 `git submodule update --init --recursive` immediately after
e7fed18a
JH
202 the clone is finished. This option is ignored if the cloned
203 repository does not have a worktree/checkout (i.e. if any of
204 `--no-checkout`/`-n`, `--bare`, or `--mirror` is given)
205
b57fb80a
NTND
206--separate-git-dir=<git dir>::
207 Instead of placing the cloned repository where it is supposed
208 to be, place the cloned repository at the specified directory,
209 then make a filesytem-agnostic git symbolic link to there.
210 The result is git repository can be separated from working
211 tree.
212
213
6ec311da 214<repository>::
37ba0561
AR
215 The (possibly remote) repository to clone from. See the
216 <<URLS,URLS>> section below for more information on specifying
217 repositories.
6ec311da
JH
218
219<directory>::
fb6a9f93 220 The name of a new directory to clone into. The "humanish"
0879aa28 221 part of the source repository is used if no directory is
550c66f3
BG
222 explicitly given (`repo` for `/path/to/repo.git` and `foo`
223 for `host.xz:foo/.git`). Cloning into an existing directory
ec00d6e0 224 is only allowed if the directory is empty.
4607166d 225
347989f4 226:git-clone: 1
37ba0561
AR
227include::urls.txt[]
228
1e2ccd3a 229Examples
2b5f3ed3 230--------
1e2ccd3a 231
47638685 232* Clone from upstream:
1e2ccd3a
JH
233+
234------------
235$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
236$ cd my2.6
237$ make
238------------
239
240
47638685 241* Make a local clone that borrows from the current directory, without checking things out:
1e2ccd3a
JH
242+
243------------
244$ git clone -l -s -n . ../copy
a6e3768f 245$ cd ../copy
1e2ccd3a
JH
246$ git show-branch
247------------
248
8a1a120c 249
47638685 250* Clone from upstream while borrowing from an existing local directory:
23edecbc
SP
251+
252------------
253$ git clone --reference my2.6 \
254 git://git.kernel.org/pub/scm/.../linux-2.7 \
255 my2.7
256$ cd my2.7
257------------
258
259
47638685 260* Create a bare repository to publish your changes to the public:
8a1a120c
JH
261+
262------------
87e80c4b 263$ git clone --bare -l /home/proj/.git /pub/scm/proj.git
8a1a120c
JH
264------------
265
266
47638685 267* Create a repository on the kernel.org machine that borrows from Linus:
8a1a120c
JH
268+
269------------
87e80c4b 270$ git clone --bare -l -s /pub/scm/.../torvalds/linux-2.6.git \
8a1a120c
JH
271 /pub/scm/.../me/subsys-2.6.git
272------------
273
6ec311da
JH
274GIT
275---
9e1f0a85 276Part of the linkgit:git[1] suite