git-clone(1)
============

NAME
----
git-clone - Clone a repository into a new directory


SYNOPSIS
--------
[synopsis]
git clone [--template=<template-directory>]
	  [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
	  [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
	  [--dissociate] [--separate-git-dir <git-dir>]
	  [--depth <depth>] [--[no-]single-branch] [--[no-]tags]
	  [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
	  [--[no-]remote-submodules] [--jobs <n>] [--sparse] [--[no-]reject-shallow]
	  [--filter=<filter-spec> [--also-filter-submodules]] [--] <repository>
	  [<directory>]

DESCRIPTION
-----------

Clones a repository into a newly created directory, creates
remote-tracking branches for each branch in the cloned repository
(visible using `git branch --remotes`), and creates and checks out an
initial branch that is forked from the cloned repository's
currently active branch.

After the clone, a plain `git fetch` without arguments will update
all the remote-tracking branches, and a `git pull` without
arguments will in addition merge the remote master branch into the
current master branch, if any (this is untrue when `--single-branch`
is given; see below).

This default configuration is achieved by creating references to
the remote branch heads under `refs/remotes/origin` and
by initializing `remote.origin.url` and `remote.origin.fetch`
configuration variables.


OPTIONS
-------
`-l`::
`--local`::
	When the repository to clone from is on a local machine,
	this flag bypasses the normal "Git aware" transport
	mechanism and clones the repository by making a copy of
	`HEAD` and everything under objects and refs directories.
	The files under `.git/objects/` directory are hardlinked
	to save space when possible.
+
If the repository is specified as a local path (e.g., `/path/to/repo`),
this is the default, and `--local` is essentially a no-op.  If the
repository is specified as a URL, then this flag is ignored (and we
never use the local optimizations).  Specifying `--no-local` will
override the default when `/path/to/repo` is given, using the regular
Git transport instead.
+
If the repository's `$GIT_DIR/objects` has symbolic links or is a
symbolic link, the clone will fail. This is a security measure to
prevent the unintentional copying of files by dereferencing the symbolic
links.
+
This option does not work with repositories owned by other users for security
reasons, and `--no-local` must be specified for the clone to succeed.
+
*NOTE*: this operation can race with concurrent modification to the
source repository, similar to running `cp -r <src> <dst>` while modifying
_<src>_.

`--no-hardlinks`::
	Force the cloning process from a repository on a local
	filesystem to copy the files under the `.git/objects`
	directory instead of using hardlinks. This may be desirable
	if you are trying to make a back-up of your repository.

`-s`::
`--shared`::
	When the repository to clone is on the local machine,
	instead of using hard links, automatically setup
	`.git/objects/info/alternates` to share the objects
	with the source repository.  The resulting repository
	starts out without any object of its own.
+
*NOTE*: this is a possibly dangerous operation; do *not* use
it unless you understand what it does. If you clone your
repository using this option and then delete branches (or use any
other Git command that makes any existing commit unreferenced) in the
source repository, some objects may become unreferenced (or dangling).
These objects may be removed by normal Git operations (such as `git commit`)
which automatically call `git maintenance run --auto`. (See
linkgit:git-maintenance[1].) If these objects are removed and were referenced
by the cloned repository, then the cloned repository will become corrupt.
+
Note that running `git repack` without the `--local` option in a repository
cloned with `--shared` will copy objects from the source repository into a pack
in the cloned repository, removing the disk space savings of `clone --shared`.
It is safe, however, to run `git gc`, which uses the `--local` option by
default.
+
If you want to break the dependency of a repository cloned with `--shared` on
its source repository, you can simply run `git repack -a` to copy all
objects from the source repository into a pack in the cloned repository.

`--reference[-if-able] <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 fewer objects to be copied from the repository
	being cloned, reducing network and local storage costs.
	When using the `--reference-if-able`, a non existing
	directory is skipped with a warning instead of aborting
	the clone.
+
*NOTE*: see the NOTE for the `--shared` option, and also the
`--dissociate` option.

`--dissociate`::
	Borrow the objects from reference repositories specified
	with the `--reference` options only to reduce network
	transfer, and stop borrowing from them after a clone is made
	by making necessary local copies of borrowed objects.  This
	option can also be used when cloning locally from a
	repository that already borrows objects from another
	repository--the new repository will borrow objects from the
	same repository, and this option can be used to stop the
	borrowing.

`-q`::
`--quiet`::
	Operate quietly.  Progress is not reported to the standard
	error stream.

`-v`::
`--verbose`::
	Run verbosely. Does not affect the reporting of progress status
	to the standard error stream.

`--progress`::
	Progress status is reported on the standard error stream
	by default when it is attached to a terminal, unless `--quiet`
	is specified. This flag forces progress status even if the
	standard error stream is not directed to a terminal.

`--server-option=<option>`::
	Transmit the given string to the server when communicating using
	protocol version 2.  The given string must not contain a NUL or LF
	character.  The server's handling of server options, including
	unknown ones, is server-specific.
	When multiple `--server-option=<option>` are given, they are all
	sent to the other side in the order listed on the command line.
	When no ++--server-option=++__<option>__ is given from the command
	line, the values of configuration variable `remote.<name>.serverOption`
	are used instead.

`-n`::
`--no-checkout`::
	No checkout of `HEAD` is performed after the clone is complete.

`--`[`no-`]`reject-shallow`::
	Fail if the source repository is a shallow repository.
	The `clone.rejectShallow` configuration variable can be used to
	specify the default.

`--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 obviously implies the `--no-checkout`
	because there is nowhere to check out the working tree.
	Also the branch heads at the remote are copied directly
	to corresponding local branch heads, without mapping
	them to `refs/remotes/origin/`.  When this option is
	used, neither remote-tracking branches nor the related
	configuration variables are created.

`--sparse`::
	Employ a sparse-checkout, with only files in the toplevel
	directory initially being present.  The
	linkgit:git-sparse-checkout[1] command can be used to grow the
	working directory as needed.

`--filter=<filter-spec>`::
	Use the partial clone feature and request that the server sends
	a subset of reachable objects according to a given object filter.
	When using `--filter`, the supplied _<filter-spec>_ is used for
	the partial clone filter. For example, `--filter=blob:none` will
	filter out all blobs (file contents) until needed by Git. Also,
	`--filter=blob:limit=<size>` will filter out all blobs of size
	at least _<size>_. For more details on filter specifications, see
	the `--filter` option in linkgit:git-rev-list[1].

`--also-filter-submodules`::
	Also apply the partial clone filter to any submodules in the repository.
	Requires `--filter` and `--recurse-submodules`. This can be turned on by
	default by setting the `clone.filterSubmodules` config option.

`--mirror`::
	Set up a mirror of the source repository.  This implies `--bare`.
	Compared to `--bare`, `--mirror` not only maps local branches of the
	source to local branches of the target, it maps all refs (including
	remote-tracking branches, notes etc.) and sets up a refspec configuration such
	that all these refs are overwritten by a `git remote update` in the
	target repository.

`-o` _<name>_::
`--origin` _<name>_::
	Instead of using the remote name `origin` to keep track of the upstream
	repository, use _<name>_.  Overrides `clone.defaultRemoteName` from the
	config.

`-b` _<name>_::
`--branch` _<name>_::
	Instead of pointing the newly created `HEAD` to the branch pointed
	to by the cloned repository's `HEAD`, point to _<name>_ branch
	instead. In a non-bare repository, this is the branch that will
	be checked out.
	`--branch` can also take tags and detaches the `HEAD` at that commit
	in the resulting repository.

`--revision=<rev>`::
	Create a new repository, and fetch the history leading to the given
	revision _<rev>_ (and nothing else), without making any remote-tracking
	branch, and without making any local branch, and detach `HEAD` to
	_<rev>_. The argument can be a ref name (e.g. `refs/heads/main` or
	`refs/tags/v1.0`) that peels down to a commit, or a hexadecimal object
	name.
	This option is incompatible with `--branch` and `--mirror`.

`-u` _<upload-pack>_::
`--upload-pack` _<upload-pack>_::
	When given, and the repository to clone from is accessed
	via ssh, this specifies a non-default path for the command
	run on the other end.

`--template=<template-directory>`::
	Specify the directory from which templates will be used;
	(See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].)

`-c` `<key>=<value>`::
`--config` `<key>=<value>`::
	Set a configuration variable in the newly-created repository;
	this takes effect immediately after the repository is
	initialized, but before the remote history is fetched or any
	files checked out.  The _<key>_ is in the same format as expected by
	linkgit:git-config[1] (e.g., `core.eol=true`). If multiple
	values are given for the same key, each value will be written to
	the config file. This makes it safe, for example, to add
	additional fetch refspecs to the origin remote.
+
Due to limitations of the current implementation, some configuration
variables do not take effect until after the initial fetch and checkout.
Configuration variables known to not take effect are:
`remote.<name>.mirror` and `remote.<name>.tagOpt`.  Use the
corresponding `--mirror` and `--no-tags` options instead.

`--depth <depth>`::
	Create a 'shallow' clone with a history truncated to the
	specified number of commits. Implies `--single-branch` unless
	`--no-single-branch` is given to fetch the histories near the
	tips of all branches. If you want to clone submodules shallowly,
	also pass `--shallow-submodules`.

`--shallow-since=<date>`::
	Create a shallow clone with a history after the specified time.

`--shallow-exclude=<ref>`::
	Create a shallow clone with a history, excluding commits
	reachable from a specified remote branch or tag.  This option
	can be specified multiple times.

`--single-branch`::
`--no-single-branch`::
	Clone only the history leading to the tip of a single branch,
	either specified by the `--branch` option or the primary
	branch remote's `HEAD` points at.
	Further fetches into the resulting repository will only update the
	remote-tracking branch for the branch this option was used for the
	initial cloning.  If the `HEAD` at the remote did not point at any
	branch when `--single-branch` clone was made, no remote-tracking
	branch is created.

`--tags`::
`--no-tags`::
	Control whether or not tags will be cloned. When `--no-tags` is
	given, the option will be become permanent by setting the
	`remote.<remote>.tagOpt=--no-tags` configuration. This ensures that
	future `git pull` and `git fetch` won't follow any tags. Subsequent
	explicit tag fetches will still work (see linkgit:git-fetch[1]).
+
By default, tags are cloned and passing `--tags` is thus typically a
no-op, unless it cancels out a previous `--no-tags`.
+
Can be used in conjunction with `--single-branch` to clone and
maintain a branch with no references other than a single cloned
branch. This is useful e.g. to maintain minimal clones of the default
branch of some repository for search indexing.

`--recurse-submodules[=<pathspec>]`::
	After the clone is created, initialize and clone submodules
	within based on the provided _<pathspec>_.  If no `=<pathspec>` is
	provided, all submodules are initialized and cloned.
	This option can be given multiple times for pathspecs consisting
	of multiple entries.  The resulting clone has `submodule.active` set to
	the provided pathspec, or "`.`" (meaning all submodules) if no
	pathspec is provided.
+
Submodules are initialized and cloned using their default settings. This is
equivalent to running
`git submodule update --init --recursive <pathspec>` immediately after
the clone is finished. This option is ignored if the cloned repository does
not have a worktree/checkout (i.e. if any of `--no-checkout`/`-n`, `--bare`,
or `--mirror` is given)

`--shallow-submodules`::
`--no-shallow-submodules`::
	All submodules which are cloned will be shallow with a depth of 1.

`--remote-submodules`::
`--no-remote-submodules`::
	All submodules which are cloned will use the status of the submodule's
	remote-tracking branch to update the submodule, rather than the
	superproject's recorded SHA-1. Equivalent to passing `--remote` to
	`git submodule update`.

`--separate-git-dir=<git-dir>`::
	Instead of placing the cloned repository where it is supposed
	to be, place the cloned repository at the specified directory,
	then make a filesystem-agnostic Git symbolic link to there.
	The result is Git repository can be separated from working
	tree.

`--ref-format=<ref-format>`::

Specify the given ref storage format for the repository. The valid values are:
+
include::ref-storage-format.adoc[]

`-j` _<n>_::
`--jobs` _<n>_::
	The number of submodules fetched at the same time.
	Defaults to the `submodule.fetchJobs` option.

_<repository>_::
	The (possibly remote) _<repository>_ to clone from.  See the
	<<URLS,GIT URLS>> section below for more information on specifying
	repositories.

_<directory>_::
	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 only allowed if the directory is empty.

`--bundle-uri=<uri>`::
	Before fetching from the remote, fetch a bundle from the given
	_<uri>_ and unbundle the data into the local repository. The refs
	in the bundle will be stored under the hidden `refs/bundle/*`
	namespace. This option is incompatible with `--depth`,
	`--shallow-since`, and `--shallow-exclude`.

:git-clone: 1
include::urls.adoc[]

EXAMPLES
--------

* Clone from upstream:
+
------------
$ git clone git://git.kernel.org/pub/scm/.../linux.git my-linux
$ cd my-linux
$ make
------------


* Make a local clone that borrows from the current directory, without checking things out:
+
------------
$ git clone -l -s -n . ../copy
$ cd ../copy
$ git show-branch
------------


* Clone from upstream while borrowing from an existing local directory:
+
------------
$ git clone --reference /git/linux.git \
	git://git.kernel.org/pub/scm/.../linux.git \
	my-linux
$ cd my-linux
------------


* Create a bare repository to publish your changes to the public:
+
------------
$ git clone --bare -l /home/proj/.git /pub/scm/proj.git
------------

* Clone a local repository from a different user:
+
------------
$ git clone --no-local /home/otheruser/proj.git /pub/scm/proj.git
------------

CONFIGURATION
-------------

include::includes/cmd-config-section-all.adoc[]

include::config/init.adoc[]

include::config/clone.adoc[]


GIT
---
Part of the linkgit:git[1] suite
