git-clone man page on OpenBSD

Man page or keyword search:  
man Server   11362 pages
apropos Keyword Search (all sections)
Output format
OpenBSD logo
[printable version]



GIT-CLONE(1)					     GIT-CLONE(1)

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

SYNOPSIS
       git clone [--template=<template_directory>]
		 [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
		 [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
		 [--depth <depth>] [--recursive] [--] <repository> [<directory>]

DESCRIPTION
       Clones	a   repository	 into	a  newly  created  directory,  creates
       remote-tracking branches for each branch in the cloned repository (vis-
       ible using git branch -r), 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 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
       --local, -l
	      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 possi-
	      ble. This is now the default when the source repository is spec-
	      ified with /path/to/repo syntax, so it essentially  is  a	 no-op
	      option.  To  force  copying instead of hardlinking (which may be
	      desirable if you are trying to make a back-up  of	 your  reposi-
	      tory),  but  still  avoid the usual "git aware" transport mecha-
	      nism, --no-hardlinks can be used.

       --no-hardlinks
	      Optimize the cloning  process  from  a  repository  on  a	 local
	      filesystem by copying files under .git/objects directory.

       --shared, -s
	      When the repository to clone is on the local machine, instead of
	      using hard links, automatically  setup  .git/objects/info/alter-
	      nates  to	 share	the  objects  with  the source repository. The
	      resulting repository starts out without any object of its own.

								1

GIT-CLONE(1)					     GIT-CLONE(1)

	      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 dan-
	      gling).  These  objects  may be removed by normal git operations
	      (such as git commit) which automatically	call  git  gc  --auto.
	      (See  git-gc(1).)	 If  these objects are removed and were refer-
	      enced by the cloned repository, then the cloned repository  will
	      become corrupt.

	      Note  that running git repack without the -l option in a reposi-
	      tory 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,  automati-
	      cally  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.

	      NOTE: see the NOTE for the --shared option.

       --quiet, -q
	      Operate  quietly. Progress is not reported to the standard error
	      stream. This flag is also passed to the ‘rsync’ com-
	      mand when given.

       --verbose, -v
	      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 -q is speci-
	      fied. This flag forces progress  status  even  if	 the  standard
	      error stream is not directed to a terminal.

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

								2

GIT-CLONE(1)					     GIT-CLONE(1)

       --bare Make a bare GIT repository. That is, instead of creating <direc-
	      tory> and placing the administrative files in  <directory>/.git,
	      make the <directory> itself the $GIT_DIR. This obviously implies
	      the -n because there is nowhere to check out the	working	 tree.
	      Also  the branch heads at the remote are copied directly to cor-
	      responding  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.

       --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 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.

       --origin <name>, -o <name>
	      Instead of using the remote name origin to  keep	track  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 repository’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	 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 git-init(1).)

       --depth <depth>
	      Create a shallow clone with a history truncated to the specified
	      number of revisions. A shallow repository has a number of	 limi-
	      tations  (you  cannot  clone or fetch from it, nor push from nor
	      into it), but is adequate if you	are  only  interested  in  the
	      recent history of a large project with a long history, and would
	      want to send in fixes as patches.

       --recursive
	      After the clone is created, initialize  all  submodules  within,

								3

GIT-CLONE(1)					     GIT-CLONE(1)

	      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-check-
	      out/-n, --bare, or --mirror is given)

       <repository>
	      The  (possibly  remote)  repository  to clone from. See the 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 direc-
	      tory is empty.

GIT URLS
       In general, URLs contain information about the transport protocol,  the
       address of the remote server, and the path to the repository. Depending
       on the transport protocol, some of this information may be absent.

       Git natively supports ssh, git, http, https, ftp, ftps, and rsync  pro-
       tocols. The following syntaxes may be used with them:

       o  ssh://[user@]host.xz[:port]/path/to/repo.git/

       o  git://host.xz[:port]/path/to/repo.git/

       o  http[s]://host.xz[:port]/path/to/repo.git/

       o  ftp[s]://host.xz[:port]/path/to/repo.git/

       o  rsync://host.xz/path/to/repo.git/

       An alternative scp-like syntax may also be used with the ssh protocol:

       o  [user@]host.xz:path/to/repo.git/

       The ssh and git protocols additionally support ~username expansion:

       o  ssh://[user@]host.xz[:port]/~[user]/path/to/repo.git/

								4

GIT-CLONE(1)					     GIT-CLONE(1)

       o  git://host.xz[:port]/~[user]/path/to/repo.git/

       o  [user@]host.xz:/~[user]/path/to/repo.git/

       For  local  repositories, also supported by git natively, the following
       syntaxes may be used:

       o  /path/to/repo.git/

       o   file:///path/to/repo.git/: file:///path/to/repo.git/

       These two syntaxes are mostly equivalent,  except  the  former  implies
       --local option.

       When git doesn’t know how to handle a certain transport protocol,
       it attempts to use the remote-<transport> remote helper, if one exists.
       To  explicitly  request	a  remote  helper, the following syntax may be
       used:

       o  <transport>::<address>

       where <address> may be a path, a	 server	 and  path,  or	 an  arbitrary
       URL-like string recognized by the specific remote helper being invoked.
       See git-remote-helpers(1) for details.

       If there are a large number of similarly-named remote repositories  and
       you want to use a different format for them (such that the URLs you use
       will be rewritten into URLs that work), you can create a	 configuration
       section of the form:

       .ft C
	       [url "<actual url base>"]
		       insteadOf = <other url base>
       .ft

       For example, with this:

								5

GIT-CLONE(1)					     GIT-CLONE(1)

       .ft C
	       [url "git://git.host.xz/"]
		       insteadOf = host.xz:/path/to/
		       insteadOf = work:
       .ft

       a  URL like "work:repo.git" or like "host.xz:/path/to/repo.git" will be
       rewritten   in	any   context	 that	 takes	  a    URL    to    be
       "git://git.host.xz/repo.git".

       If  you want to rewrite URLs for push only, you can create a configura-
       tion section of the form:

       .ft C
	       [url "<actual url base>"]
		       pushInsteadOf = <other url base>
       .ft

       For example, with this:

       .ft C
	       [url "ssh://example.org/"]
		       pushInsteadOf = git://example.org/
       .ft

       a URL like "git://example.org/path/to/repo.git" will  be	 rewritten  to
       "ssh://example.org/path/to/repo.git"  for  pushes, but pulls will still
       use the original URL.

EXAMPLES
       o  Clone from upstream:

	  .ft C
	  $ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6
	  $ cd my2.6
	  $ make
	  .ft

								6

GIT-CLONE(1)					     GIT-CLONE(1)

       o  Make a local clone that borrows from the current directory,  without
	  checking things out:

	  .ft C
	  $ git clone -l -s -n . ../copy
	  $ cd ../copy
	  $ git show-branch
	  .ft

       o  Clone	 from  upstream	 while borrowing from an existing local direc-
	  tory:

	  .ft C
	  $ git clone --reference my2.6 \
		  git://git.kernel.org/pub/scm/.../linux-2.7 \
		  my2.7
	  $ cd my2.7
	  .ft

       o  Create a bare repository to publish your changes to the public:

	  .ft C
	  $ git clone --bare -l /home/proj/.git /pub/scm/proj.git
	  .ft

       o  Create a repository on the  kernel.org  machine  that	 borrows  from
	  Linus:

	  .ft C
	  $ git clone --bare -l -s /pub/scm/.../torvalds/linux-2.6.git \
	      /pub/scm/.../me/subsys-2.6.git
	  .ft

AUTHOR
       Written by Linus Torvalds <torvalds@osdl.org: mailto:torvalds@osdl.org>

								7

GIT-CLONE(1)					     GIT-CLONE(1)

DOCUMENTATION
       Documentation by Junio C Hamano and the git-list	 <git@vger.kernel.org:
       mailto:git@vger.kernel.org>.

GIT
       Part of the git(1) suite

								8

[top]

List of man pages available for OpenBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net