preserve mtime of local clone
[gitweb.git] / Documentation / git-clone.txt
index 91efac920ec969455b75f0a5c1761dac648d2b1b..f23100e5094a891a0b6205badc0516fedfc74664 100644 (file)
@@ -10,9 +10,9 @@ SYNOPSIS
 --------
 [verse]
 'git clone' [--template=<template_directory>]
-         [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare]
+         [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
          [-o <name>] [-u <upload-pack>] [--reference <repository>]
-         [--depth <depth>] [--] <repository> [<directory>]
+         [--depth <depth>] [--recursive] [--] <repository> [<directory>]
 
 DESCRIPTION
 -----------
@@ -72,11 +72,19 @@ These objects may be removed by normal git operations (such as 'git-commit')
 which automatically call `git gc --auto`. (See linkgit:git-gc[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 `-l` option in a repository
+cloned with `-s` will copy objects from the source repository into a pack
+in the cloned repository, removing the disk space savings of `clone -s`.
+It is safe, however, to run `git gc`, which uses the `-l` option by
+default.
++
+If you want to break the dependency of a repository cloned with `-s` 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 <repository>::
-       If the reference repository is on the local machine
+       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
@@ -87,8 +95,13 @@ then the cloned repository will become corrupt.
 
 --quiet::
 -q::
-       Operate quietly.  This flag is passed to "rsync" and
-       'git-fetch-pack' commands when given.
+       Operate quietly.  This flag is also passed to the `rsync'
+       command when given.
+
+--verbose::
+-v::
+       Display the progressbar, even in case the standard output is not
+       a terminal.
 
 --no-checkout::
 -n::
@@ -106,16 +119,25 @@ then the cloned repository will become corrupt.
        used, neither remote-tracking branches nor the related
        configuration variables are created.
 
+--mirror::
+       Set up a mirror of the remote repository.  This implies --bare.
+
 --origin <name>::
 -o <name>::
        Instead of using the remote name 'origin' to keep track
-       of the upstream repository, use <name> instead.
+       of the upstream repository, use <name>.
+
+--branch <name>::
+-b <name>::
+       Instead of pointing the newly created HEAD to the branch pointed
+       to by the cloned repositoroy's HEAD, point to <name> branch
+       instead. In a non-bare repository, this is the branch that will
+       be checked out.
 
 --upload-pack <upload-pack>::
 -u <upload-pack>::
-       When given, and the repository to clone from is handled
-       by 'git-fetch-pack', `--exec=<upload-pack>` is passed to
-       the command to specify non-default path for the command
+       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>::
@@ -132,6 +154,14 @@ then the cloned repository will become corrupt.
        with a long history, and would want to send in fixes
        as patches.
 
+--recursive::
+       After the clone is created, initialize all submodules within,
+       using their default settings. This is equivalent to running
+       'git submodule update --init --recursive' 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)
+
 <repository>::
        The (possibly remote) repository to clone from.  See the
        <<URLS,URLS>> section below for more information on specifying
@@ -142,7 +172,7 @@ then the cloned repository will become corrupt.
        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 not allowed.
+       is only allowed if the directory is empty.
 
 :git-clone: 1
 include::urls.txt[]