git-clone(1)
============
v0.1, July 2005

NAME
----
git-clone - Clones a repository.


SYNOPSIS
--------
'git clone' [-l [-s]] [-q] [-n] [-u <upload-pack>] <repository> <directory>

DESCRIPTION
-----------
Clones a repository into a newly created directory.

OPTIONS
-------
--local::
-l::
	When the repository to clone from is on a local machine,
	this flag bypasses 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.

--shared::
-s::
	When the repository to clone is on the local machine,
	instead of using hard links automatically setup
	.git/objects/info/alternatives to share the objects
	with the source repository

--quiet::
-q::
	Operate quietly.  This flag is passed to "rsync" and
	"git-clone-pack" commands when given.

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

--upload-pack <upload-pack>::
-u <upload-pack>::
	When given, and the repository to clone from is handled
	by 'git-clone-pack', '--exec=<upload-pack>' is passed to
	the command to specify non-default path for the command
	run on the other end.

<repository>::
	The (possibly remote) repository to clone from.  It can
	be an "rsync://host/dir" URL, an "http://host/dir" URL,
	or [<host>:]/dir notation that is used by 'git-clone-pack'.
	Currently http transport is not supported.

<directory>::
	The name of a new directory to be cloned into.  It is an
	error to specify an existing directory.

Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
--------------
Documentation by Junio C Hamano.


GIT
---
Part of the gitlink:git[7] suite

