Home Explore Blog CI



git

1st chunk of `Documentation/git-clone.adoc`
60be6fa8587755ad1baeb0771e2fe004ca3db4aa1eec89da0000000100000fa2
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,

Title: Git Clone Command
Summary
The git-clone command is used to clone a repository into a new directory, creating remote-tracking branches and an initial branch that is forked from the cloned repository's active branch, with various options available to customize the cloning process.