To clone a remote or local repository use C
, which is bound to the
command magit-clone
. This command either act as a transient prefix
command, which binds several infix arguments and suffix commands, or
it can invoke git clone
directly, depending on whether a prefix
argument is used and on the value of magit-clone-always-transient
.
This option controls whether the command magit-clone
always acts as
a transient prefix command, regardless of whether a prefix argument
is used or not. If t
, then that command always acts as a transient
prefix. If nil
, then a prefix argument has to be used for it to act
as a transient.
magit-clone
) ¶This command either acts as a transient prefix command as described
above or does the same thing as transient-clone-regular
as described
below.
If it acts as a transient prefix, then it binds the following suffix commands and several infix arguments.
magit-clone-regular
) ¶This command creates a regular clone of an existing repository. The repository and the target directory are read from the user.
magit-clone-shallow
) ¶This command creates a shallow clone of an existing repository. The repository and the target directory are read from the user. By default the depth of the cloned history is a single commit, but with a prefix argument the depth is read from the user.
magit-clone-sparse
) ¶This command creates a clone of an existing repository and
initializes a sparse checkout, avoiding a checkout of the full
working tree. To add more directories, use the
magit-sparse-checkout
transient (see Sparse checkouts).
magit-clone-bare
) ¶This command creates a bare clone of an existing repository. The repository and the target directory are read from the user.
magit-clone-mirror
) ¶This command creates a mirror of an existing repository. The repository and the target directory are read from the user.
The following suffixes are disabled by default. See (transient)Enabling and Disabling Suffixes for how to enable them.
magit-clone-shallow-since
) ¶This command creates a shallow clone of an existing repository. Only commits that were committed after a date are cloned, which is read from the user. The repository and the target directory are also read from the user.
magit-clone-shallow-exclude
) ¶This command creates a shallow clone of an existing repository. This reads a branch or tag from the user. Commits that are reachable from that are not cloned. The repository and the target directory are also read from the user.
This option controls whether cloning causes the reference
refs/remotes/<remote>/HEAD
to be created in the clone. The default
is to delete the reference after running git clone
, which insists on
creating it. This is because the reference has not been found to be
particularly useful as it is not automatically updated when the HEAD
of the remote changes. Setting this option to t
preserves Git’s
default behavior of creating the reference.
This option controls whether the value of the Git variable
remote.pushDefault
is set after cloning.
t
, then it is always set without asking.
ask
, then the users are asked every time they clone a
repository.
nil
, then it is never set.
This option control the default directory name used when reading the destination for a cloning operation.
nil
(the default), then the value of default-directory
is used.
This option maps regular expressions, which match repository names, to repository urls, making it possible for users to enter short names instead of urls when cloning repositories.
Each element has the form (REGEXP HOSTNAME USER)
. When the user
enters a name when a cloning command asks for a name or url, then
that is looked up in this list. The first element whose REGEXP
matches is used.
The format specified by option magit-clone-url-format
is used to
turn the name into an url, using HOSTNAME and the repository name.
If the provided name contains a slash, then that is used. Otherwise
if the name omits the owner of the repository, then the default user
specified in the matched entry is used.
If USER contains a dot, then it is treated as a Git variable and the value of that is used as the username. Otherwise it is used as the username itself.
The format specified by this option is used when turning repository
names into urls. %h
is the hostname and %n
is the repository
name, including the name of the owner. The value can be a string
(representing a single static format) or an alist with elements
(HOSTNAME . FORMAT)
mapping hostnames to formats. When an alist
is used, the t
key represents the default format.
Example of a single format string:
(setq magit-clone-url-format "git@%h:%n.git")
Example of by-hostname format strings:
(setq magit-clone-url-format '(("git.example.com" . "git@%h:~%n") (nil . "git@%h:%n.git")))
Hook run after the Git process has successfully finished cloning the
repository. When the hook is called, default-directory
is
let-bound to the directory where the repository has been cloned.