| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" | |
| "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> | |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> | |
| <head> | |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> | |
| <meta name="generator" content="AsciiDoc 8.4.5" /> | |
| <title>git-clone(1)</title> | |
| <style type="text/css"> | |
| /* Debug borders */ | |
| p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { | |
| /* | |
| border: 1px solid red; | |
| */ | |
| } | |
| body { | |
| margin: 1em 5% 1em 5%; | |
| } | |
| a { | |
| color: blue; | |
| text-decoration: underline; | |
| } | |
| a:visited { | |
| color: fuchsia; | |
| } | |
| em { | |
| font-style: italic; | |
| color: navy; | |
| } | |
| strong { | |
| font-weight: bold; | |
| color: #083194; | |
| } | |
| tt { | |
| color: navy; | |
| } | |
| h1, h2, h3, h4, h5, h6 { | |
| color: #527bbd; | |
| font-family: sans-serif; | |
| margin-top: 1.2em; | |
| margin-bottom: 0.5em; | |
| line-height: 1.3; | |
| } | |
| h1, h2, h3 { | |
| border-bottom: 2px solid silver; | |
| } | |
| h2 { | |
| padding-top: 0.5em; | |
| } | |
| h3 { | |
| float: left; | |
| } | |
| h3 + * { | |
| clear: left; | |
| } | |
| div.sectionbody { | |
| font-family: serif; | |
| margin-left: 0; | |
| } | |
| hr { | |
| border: 1px solid silver; | |
| } | |
| p { | |
| margin-top: 0.5em; | |
| margin-bottom: 0.5em; | |
| } | |
| ul, ol, li > p { | |
| margin-top: 0; | |
| } | |
| pre { | |
| padding: 0; | |
| margin: 0; | |
| } | |
| span#author { | |
| color: #527bbd; | |
| font-family: sans-serif; | |
| font-weight: bold; | |
| font-size: 1.1em; | |
| } | |
| span#email { | |
| } | |
| span#revnumber, span#revdate, span#revremark { | |
| font-family: sans-serif; | |
| } | |
| div#footer { | |
| font-family: sans-serif; | |
| font-size: small; | |
| border-top: 2px solid silver; | |
| padding-top: 0.5em; | |
| margin-top: 4.0em; | |
| } | |
| div#footer-text { | |
| float: left; | |
| padding-bottom: 0.5em; | |
| } | |
| div#footer-badges { | |
| float: right; | |
| padding-bottom: 0.5em; | |
| } | |
| div#preamble { | |
| margin-top: 1.5em; | |
| margin-bottom: 1.5em; | |
| } | |
| div.tableblock, div.imageblock, div.exampleblock, div.verseblock, | |
| div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, | |
| div.admonitionblock { | |
| margin-top: 1.5em; | |
| margin-bottom: 1.5em; | |
| } | |
| div.admonitionblock { | |
| margin-top: 2.5em; | |
| margin-bottom: 2.5em; | |
| } | |
| div.content { /* Block element content. */ | |
| padding: 0; | |
| } | |
| /* Block element titles. */ | |
| div.title, caption.title { | |
| color: #527bbd; | |
| font-family: sans-serif; | |
| font-weight: bold; | |
| text-align: left; | |
| margin-top: 1.0em; | |
| margin-bottom: 0.5em; | |
| } | |
| div.title + * { | |
| margin-top: 0; | |
| } | |
| td div.title:first-child { | |
| margin-top: 0.0em; | |
| } | |
| div.content div.title:first-child { | |
| margin-top: 0.0em; | |
| } | |
| div.content + div.title { | |
| margin-top: 0.0em; | |
| } | |
| div.sidebarblock > div.content { | |
| background: #ffffee; | |
| border: 1px solid silver; | |
| padding: 0.5em; | |
| } | |
| div.listingblock > div.content { | |
| border: 1px solid silver; | |
| background: #f4f4f4; | |
| padding: 0.5em; | |
| } | |
| div.quoteblock { | |
| padding-left: 2.0em; | |
| margin-right: 10%; | |
| } | |
| div.quoteblock > div.attribution { | |
| padding-top: 0.5em; | |
| text-align: right; | |
| } | |
| div.verseblock { | |
| padding-left: 2.0em; | |
| margin-right: 10%; | |
| } | |
| div.verseblock > div.content { | |
| white-space: pre; | |
| } | |
| div.verseblock > div.attribution { | |
| padding-top: 0.75em; | |
| text-align: left; | |
| } | |
| /* DEPRECATED: Pre version 8.2.7 verse style literal block. */ | |
| div.verseblock + div.attribution { | |
| text-align: left; | |
| } | |
| div.admonitionblock .icon { | |
| vertical-align: top; | |
| font-size: 1.1em; | |
| font-weight: bold; | |
| text-decoration: underline; | |
| color: #527bbd; | |
| padding-right: 0.5em; | |
| } | |
| div.admonitionblock td.content { | |
| padding-left: 0.5em; | |
| border-left: 2px solid silver; | |
| } | |
| div.exampleblock > div.content { | |
| border-left: 2px solid silver; | |
| padding: 0.5em; | |
| } | |
| div.imageblock div.content { padding-left: 0; } | |
| span.image img { border-style: none; } | |
| a.image:visited { color: white; } | |
| dl { | |
| margin-top: 0.8em; | |
| margin-bottom: 0.8em; | |
| } | |
| dt { | |
| margin-top: 0.5em; | |
| margin-bottom: 0; | |
| font-style: normal; | |
| color: navy; | |
| } | |
| dd > *:first-child { | |
| margin-top: 0.1em; | |
| } | |
| ul, ol { | |
| list-style-position: outside; | |
| } | |
| ol.arabic { | |
| list-style-type: decimal; | |
| } | |
| ol.loweralpha { | |
| list-style-type: lower-alpha; | |
| } | |
| ol.upperalpha { | |
| list-style-type: upper-alpha; | |
| } | |
| ol.lowerroman { | |
| list-style-type: lower-roman; | |
| } | |
| ol.upperroman { | |
| list-style-type: upper-roman; | |
| } | |
| div.compact ul, div.compact ol, | |
| div.compact p, div.compact p, | |
| div.compact div, div.compact div { | |
| margin-top: 0.1em; | |
| margin-bottom: 0.1em; | |
| } | |
| div.tableblock > table { | |
| border: 3px solid #527bbd; | |
| } | |
| thead { | |
| font-family: sans-serif; | |
| font-weight: bold; | |
| } | |
| tfoot { | |
| font-weight: bold; | |
| } | |
| td > div.verse { | |
| white-space: pre; | |
| } | |
| p.table { | |
| margin-top: 0; | |
| } | |
| /* Because the table frame attribute is overriden by CSS in most browsers. */ | |
| div.tableblock > table[frame="void"] { | |
| border-style: none; | |
| } | |
| div.tableblock > table[frame="hsides"] { | |
| border-left-style: none; | |
| border-right-style: none; | |
| } | |
| div.tableblock > table[frame="vsides"] { | |
| border-top-style: none; | |
| border-bottom-style: none; | |
| } | |
| div.hdlist { | |
| margin-top: 0.8em; | |
| margin-bottom: 0.8em; | |
| } | |
| div.hdlist tr { | |
| padding-bottom: 15px; | |
| } | |
| dt.hdlist1.strong, td.hdlist1.strong { | |
| font-weight: bold; | |
| } | |
| td.hdlist1 { | |
| vertical-align: top; | |
| font-style: normal; | |
| padding-right: 0.8em; | |
| color: navy; | |
| } | |
| td.hdlist2 { | |
| vertical-align: top; | |
| } | |
| div.hdlist.compact tr { | |
| margin: 0; | |
| padding-bottom: 0; | |
| } | |
| .comment { | |
| background: yellow; | |
| } | |
| @media print { | |
| div#footer-badges { display: none; } | |
| } | |
| div#toctitle { | |
| color: #527bbd; | |
| font-family: sans-serif; | |
| font-size: 1.1em; | |
| font-weight: bold; | |
| margin-top: 1.0em; | |
| margin-bottom: 0.1em; | |
| } | |
| div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { | |
| margin-top: 0; | |
| margin-bottom: 0; | |
| } | |
| div.toclevel2 { | |
| margin-left: 2em; | |
| font-size: 0.9em; | |
| } | |
| div.toclevel3 { | |
| margin-left: 4em; | |
| font-size: 0.9em; | |
| } | |
| div.toclevel4 { | |
| margin-left: 6em; | |
| font-size: 0.9em; | |
| } | |
| /* Overrides for manpage documents */ | |
| h1 { | |
| padding-top: 0.5em; | |
| padding-bottom: 0.5em; | |
| border-top: 2px solid silver; | |
| border-bottom: 2px solid silver; | |
| } | |
| h2 { | |
| border-style: none; | |
| } | |
| div.sectionbody { | |
| margin-left: 5%; | |
| } | |
| @media print { | |
| div#toc { display: none; } | |
| } | |
| /* Workarounds for IE6's broken and incomplete CSS2. */ | |
| div.sidebar-content { | |
| background: #ffffee; | |
| border: 1px solid silver; | |
| padding: 0.5em; | |
| } | |
| div.sidebar-title, div.image-title { | |
| color: #527bbd; | |
| font-family: sans-serif; | |
| font-weight: bold; | |
| margin-top: 0.0em; | |
| margin-bottom: 0.5em; | |
| } | |
| div.listingblock div.content { | |
| border: 1px solid silver; | |
| background: #f4f4f4; | |
| padding: 0.5em; | |
| } | |
| div.quoteblock-attribution { | |
| padding-top: 0.5em; | |
| text-align: right; | |
| } | |
| div.verseblock-content { | |
| white-space: pre; | |
| } | |
| div.verseblock-attribution { | |
| padding-top: 0.75em; | |
| text-align: left; | |
| } | |
| div.exampleblock-content { | |
| border-left: 2px solid silver; | |
| padding-left: 0.5em; | |
| } | |
| /* IE6 sets dynamically generated links as visited. */ | |
| div#toc a:visited { color: blue; } | |
| </style> | |
| </head> | |
| <body> | |
| <div id="header"> | |
| <h1> | |
| git-clone(1) Manual Page | |
| </h1> | |
| <h2>NAME</h2> | |
| <div class="sectionbody"> | |
| <p>git-clone - | |
| Clone a repository into a new directory | |
| </p> | |
| </div> | |
| </div> | |
| <h2 id="_synopsis">SYNOPSIS</h2> | |
| <div class="sectionbody"> | |
| <div class="verseblock"> | |
| <div class="verseblock-content"><em>git clone</em> [--template=<template_directory>] | |
| [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror] | |
| [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>] | |
| [--separate-git-dir <git dir>] | |
| [--depth <depth>] [--recursive|--recurse-submodules] [--] <repository> | |
| [<directory>]</div> | |
| <div class="verseblock-attribution"> | |
| </div></div> | |
| </div> | |
| <h2 id="_description">DESCRIPTION</h2> | |
| <div class="sectionbody"> | |
| <div class="paragraph"><p>Clones a repository into a newly created directory, creates | |
| remote-tracking branches for each branch in the cloned repository | |
| (visible using <tt>git branch -r</tt>), and creates and checks out an | |
| initial branch that is forked from the cloned repository’s | |
| currently active branch.</p></div> | |
| <div class="paragraph"><p>After the clone, a plain <tt>git fetch</tt> without arguments will update | |
| all the remote-tracking branches, and a <tt>git pull</tt> without | |
| arguments will in addition merge the remote master branch into the | |
| current master branch, if any.</p></div> | |
| <div class="paragraph"><p>This default configuration is achieved by creating references to | |
| the remote branch heads under <tt>refs/remotes/origin</tt> and | |
| by initializing <tt>remote.origin.url</tt> and <tt>remote.origin.fetch</tt> | |
| configuration variables.</p></div> | |
| </div> | |
| <h2 id="_options">OPTIONS</h2> | |
| <div class="sectionbody"> | |
| <div class="dlist"><dl> | |
| <dt class="hdlist1"> | |
| --local | |
| </dt> | |
| <dt class="hdlist1"> | |
| -l | |
| </dt> | |
| <dd> | |
| <p> | |
| 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 <tt>.git/objects/</tt> directory are hardlinked | |
| to save space when possible. This is now the default when | |
| the source repository is specified with <tt>/path/to/repo</tt> | |
| 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 repository), | |
| but still avoid the usual "git aware" transport | |
| mechanism, <tt>--no-hardlinks</tt> can be used. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --no-hardlinks | |
| </dt> | |
| <dd> | |
| <p> | |
| Optimize the cloning process from a repository on a | |
| local filesystem by copying files under <tt>.git/objects</tt> | |
| directory. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --shared | |
| </dt> | |
| <dt class="hdlist1"> | |
| -s | |
| </dt> | |
| <dd> | |
| <p> | |
| When the repository to clone is on the local machine, | |
| instead of using hard links, automatically setup | |
| <tt>.git/objects/info/alternates</tt> to share the objects | |
| with the source repository. The resulting repository | |
| starts out without any object of its own. | |
| </p> | |
| <div class="paragraph"><p><strong>NOTE</strong>: this is a possibly dangerous operation; do <strong>not</strong> 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 <tt>git commit</tt>) | |
| which automatically call <tt>git gc --auto</tt>. (See <a href="git-gc.html">git-gc(1)</a>.) | |
| If these objects are removed and were referenced by the cloned repository, | |
| then the cloned repository will become corrupt.</p></div> | |
| <div class="paragraph"><p>Note that running <tt>git repack</tt> without the <tt>-l</tt> option in a repository | |
| cloned with <tt>-s</tt> will copy objects from the source repository into a pack | |
| in the cloned repository, removing the disk space savings of <tt>clone -s</tt>. | |
| It is safe, however, to run <tt>git gc</tt>, which uses the <tt>-l</tt> option by | |
| default.</p></div> | |
| <div class="paragraph"><p>If you want to break the dependency of a repository cloned with <tt>-s</tt> on | |
| its source repository, you can simply run <tt>git repack -a</tt> to copy all | |
| objects from the source repository into a pack in the cloned repository.</p></div> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --reference <repository> | |
| </dt> | |
| <dd> | |
| <p> | |
| If the reference repository is on the local machine, | |
| automatically setup <tt>.git/objects/info/alternates</tt> 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. | |
| </p> | |
| <div class="paragraph"><p><strong>NOTE</strong>: see the NOTE for the <tt>--shared</tt> option.</p></div> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --quiet | |
| </dt> | |
| <dt class="hdlist1"> | |
| -q | |
| </dt> | |
| <dd> | |
| <p> | |
| Operate quietly. Progress is not reported to the standard | |
| error stream. This flag is also passed to the ‘rsync’ | |
| command when given. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --verbose | |
| </dt> | |
| <dt class="hdlist1"> | |
| -v | |
| </dt> | |
| <dd> | |
| <p> | |
| Run verbosely. Does not affect the reporting of progress status | |
| to the standard error stream. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --progress | |
| </dt> | |
| <dd> | |
| <p> | |
| Progress status is reported on the standard error stream | |
| by default when it is attached to a terminal, unless -q | |
| is specified. This flag forces progress status even if the | |
| standard error stream is not directed to a terminal. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --no-checkout | |
| </dt> | |
| <dt class="hdlist1"> | |
| -n | |
| </dt> | |
| <dd> | |
| <p> | |
| No checkout of HEAD is performed after the clone is complete. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --bare | |
| </dt> | |
| <dd> | |
| <p> | |
| Make a <em>bare</em> GIT repository. That is, instead of | |
| creating <tt><directory></tt> and placing the administrative | |
| files in <tt><directory>/.git</tt>, make the <tt><directory></tt> | |
| itself the <tt>$GIT_DIR</tt>. This obviously implies the <tt>-n</tt> | |
| because there is nowhere to check out the working tree. | |
| Also the branch heads at the remote are copied directly | |
| to corresponding local branch heads, without mapping | |
| them to <tt>refs/remotes/origin/</tt>. When this option is | |
| used, neither remote-tracking branches nor the related | |
| configuration variables are created. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --mirror | |
| </dt> | |
| <dd> | |
| <p> | |
| Set up a mirror of the source repository. This implies <tt>--bare</tt>. | |
| Compared to <tt>--bare</tt>, <tt>--mirror</tt> not only maps local branches of the | |
| source to local branches of the target, it maps all refs (including | |
| remote-tracking branches, notes etc.) and sets up a refspec configuration such | |
| that all these refs are overwritten by a <tt>git remote update</tt> in the | |
| target repository. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --origin <name> | |
| </dt> | |
| <dt class="hdlist1"> | |
| -o <name> | |
| </dt> | |
| <dd> | |
| <p> | |
| Instead of using the remote name <tt>origin</tt> to keep track | |
| of the upstream repository, use <tt><name></tt>. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --branch <name> | |
| </dt> | |
| <dt class="hdlist1"> | |
| -b <name> | |
| </dt> | |
| <dd> | |
| <p> | |
| Instead of pointing the newly created HEAD to the branch pointed | |
| to by the cloned repository’s HEAD, point to <tt><name></tt> branch | |
| instead. In a non-bare repository, this is the branch that will | |
| be checked out. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --upload-pack <upload-pack> | |
| </dt> | |
| <dt class="hdlist1"> | |
| -u <upload-pack> | |
| </dt> | |
| <dd> | |
| <p> | |
| 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. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --template=<template_directory> | |
| </dt> | |
| <dd> | |
| <p> | |
| Specify the directory from which templates will be used; | |
| (See the "TEMPLATE DIRECTORY" section of <a href="git-init.html">git-init(1)</a>.) | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --config <key>=<value> | |
| </dt> | |
| <dt class="hdlist1"> | |
| -c <key>=<value> | |
| </dt> | |
| <dd> | |
| <p> | |
| Set a configuration variable in the newly-created repository; | |
| this takes effect immediately after the repository is | |
| initialized, but before the remote history is fetched or any | |
| files checked out. The key is in the same format as expected by | |
| <a href="git-config.html">git-config(1)</a> (e.g., <tt>core.eol=true</tt>). If multiple | |
| values are given for the same key, each value will be written to | |
| the config file. This makes it safe, for example, to add | |
| additional fetch refspecs to the origin remote. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --depth <depth> | |
| </dt> | |
| <dd> | |
| <p> | |
| Create a <em>shallow</em> clone with a history truncated to the | |
| specified number of revisions. A shallow repository has a | |
| number of limitations (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. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --recursive | |
| </dt> | |
| <dt class="hdlist1"> | |
| --recurse-submodules | |
| </dt> | |
| <dd> | |
| <p> | |
| After the clone is created, initialize all submodules within, | |
| using their default settings. This is equivalent to running | |
| <tt>git submodule update --init --recursive</tt> 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 | |
| <tt>--no-checkout</tt>/<tt>-n</tt>, <tt>--bare</tt>, or <tt>--mirror</tt> is given) | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| --separate-git-dir=<git dir> | |
| </dt> | |
| <dd> | |
| <p> | |
| Instead of placing the cloned repository where it is supposed | |
| to be, place the cloned repository at the specified directory, | |
| then make a filesytem-agnostic git symbolic link to there. | |
| The result is git repository can be separated from working | |
| tree. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| <repository> | |
| </dt> | |
| <dd> | |
| <p> | |
| The (possibly remote) repository to clone from. See the | |
| <a href="#URLS">URLS</a> section below for more information on specifying | |
| repositories. | |
| </p> | |
| </dd> | |
| <dt class="hdlist1"> | |
| <directory> | |
| </dt> | |
| <dd> | |
| <p> | |
| The name of a new directory to clone into. The "humanish" | |
| part of the source repository is used if no directory is | |
| explicitly given (<tt>repo</tt> for <tt>/path/to/repo.git</tt> and <tt>foo</tt> | |
| for <tt>host.xz:foo/.git</tt>). Cloning into an existing directory | |
| is only allowed if the directory is empty. | |
| </p> | |
| </dd> | |
| </dl></div> | |
| </div> | |
| <h2 id="_git_urls_a_id_urls_a">GIT URLS<a id="URLS"></a></h2> | |
| <div class="sectionbody"> | |
| <div class="paragraph"><p>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.</p></div> | |
| <div class="paragraph"><p>Git natively supports ssh, git, http, https, ftp, ftps, and rsync | |
| protocols. The following syntaxes may be used with them:</p></div> | |
| <div class="ulist"><ul> | |
| <li> | |
| <p> | |
| ssh://[user@]host.xz[:port]/path/to/repo.git/ | |
| </p> | |
| </li> | |
| <li> | |
| <p> | |
| git://host.xz[:port]/path/to/repo.git/ | |
| </p> | |
| </li> | |
| <li> | |
| <p> | |
| http[s]://host.xz[:port]/path/to/repo.git/ | |
| </p> | |
| </li> | |
| <li> | |
| <p> | |
| ftp[s]://host.xz[:port]/path/to/repo.git/ | |
| </p> | |
| </li> | |
| <li> | |
| <p> | |
| rsync://host.xz/path/to/repo.git/ | |
| </p> | |
| </li> | |
| </ul></div> | |
| <div class="paragraph"><p>An alternative scp-like syntax may also be used with the ssh protocol:</p></div> | |
| <div class="ulist"><ul> | |
| <li> | |
| <p> | |
| [user@]host.xz:path/to/repo.git/ | |
| </p> | |
| </li> | |
| </ul></div> | |
| <div class="paragraph"><p>The ssh and git protocols additionally support ~username expansion:</p></div> | |
| <div class="ulist"><ul> | |
| <li> | |
| <p> | |
| ssh://[user@]host.xz[:port]/~[user]/path/to/repo.git/ | |
| </p> | |
| </li> | |
| <li> | |
| <p> | |
| git://host.xz[:port]/~[user]/path/to/repo.git/ | |
| </p> | |
| </li> | |
| <li> | |
| <p> | |
| [user@]host.xz:/~[user]/path/to/repo.git/ | |
| </p> | |
| </li> | |
| </ul></div> | |
| <div class="paragraph"><p>For local repositories, also supported by git natively, the following | |
| syntaxes may be used:</p></div> | |
| <div class="ulist"><ul> | |
| <li> | |
| <p> | |
| /path/to/repo.git/ | |
| </p> | |
| </li> | |
| <li> | |
| <p> | |
| <a href="file:///path/to/repo.git/">file:///path/to/repo.git/</a> | |
| </p> | |
| </li> | |
| </ul></div> | |
| <div class="paragraph"><p>These two syntaxes are mostly equivalent, except the former implies | |
| --local option.</p></div> | |
| <div class="paragraph"><p>When git doesn’t know how to handle a certain transport protocol, it | |
| attempts to use the <em>remote-<transport></em> remote helper, if one | |
| exists. To explicitly request a remote helper, the following syntax | |
| may be used:</p></div> | |
| <div class="ulist"><ul> | |
| <li> | |
| <p> | |
| <transport>::<address> | |
| </p> | |
| </li> | |
| </ul></div> | |
| <div class="paragraph"><p>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 <a href="git-remote-helpers.html">git-remote-helpers(1)</a> for details.</p></div> | |
| <div class="paragraph"><p>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:</p></div> | |
| <div class="listingblock"> | |
| <div class="content"> | |
| <pre><tt> [url "<actual url base>"] | |
| insteadOf = <other url base></tt></pre> | |
| </div></div> | |
| <div class="paragraph"><p>For example, with this:</p></div> | |
| <div class="listingblock"> | |
| <div class="content"> | |
| <pre><tt> [url "git://git.host.xz/"] | |
| insteadOf = host.xz:/path/to/ | |
| insteadOf = work:</tt></pre> | |
| </div></div> | |
| <div class="paragraph"><p>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".</p></div> | |
| <div class="paragraph"><p>If you want to rewrite URLs for push only, you can create a | |
| configuration section of the form:</p></div> | |
| <div class="listingblock"> | |
| <div class="content"> | |
| <pre><tt> [url "<actual url base>"] | |
| pushInsteadOf = <other url base></tt></pre> | |
| </div></div> | |
| <div class="paragraph"><p>For example, with this:</p></div> | |
| <div class="listingblock"> | |
| <div class="content"> | |
| <pre><tt> [url "ssh://example.org/"] | |
| pushInsteadOf = git://example.org/</tt></pre> | |
| </div></div> | |
| <div class="paragraph"><p>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.</p></div> | |
| </div> | |
| <h2 id="_examples">Examples</h2> | |
| <div class="sectionbody"> | |
| <div class="ulist"><ul> | |
| <li> | |
| <p> | |
| Clone from upstream: | |
| </p> | |
| <div class="listingblock"> | |
| <div class="content"> | |
| <pre><tt>$ git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6 | |
| $ cd my2.6 | |
| $ make</tt></pre> | |
| </div></div> | |
| </li> | |
| <li> | |
| <p> | |
| Make a local clone that borrows from the current directory, without checking things out: | |
| </p> | |
| <div class="listingblock"> | |
| <div class="content"> | |
| <pre><tt>$ git clone -l -s -n . ../copy | |
| $ cd ../copy | |
| $ git show-branch</tt></pre> | |
| </div></div> | |
| </li> | |
| <li> | |
| <p> | |
| Clone from upstream while borrowing from an existing local directory: | |
| </p> | |
| <div class="listingblock"> | |
| <div class="content"> | |
| <pre><tt>$ git clone --reference my2.6 \ | |
| git://git.kernel.org/pub/scm/.../linux-2.7 \ | |
| my2.7 | |
| $ cd my2.7</tt></pre> | |
| </div></div> | |
| </li> | |
| <li> | |
| <p> | |
| Create a bare repository to publish your changes to the public: | |
| </p> | |
| <div class="listingblock"> | |
| <div class="content"> | |
| <pre><tt>$ git clone --bare -l /home/proj/.git /pub/scm/proj.git</tt></pre> | |
| </div></div> | |
| </li> | |
| <li> | |
| <p> | |
| Create a repository on the kernel.org machine that borrows from Linus: | |
| </p> | |
| <div class="listingblock"> | |
| <div class="content"> | |
| <pre><tt>$ git clone --bare -l -s /pub/scm/.../torvalds/linux-2.6.git \ | |
| /pub/scm/.../me/subsys-2.6.git</tt></pre> | |
| </div></div> | |
| </li> | |
| </ul></div> | |
| </div> | |
| <h2 id="_git">GIT</h2> | |
| <div class="sectionbody"> | |
| <div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div> | |
| </div> | |
| <div id="footer"> | |
| <div id="footer-text"> | |
| Last updated 2011-07-19 20:01:51 UTC | |
| </div> | |
| </div> | |
| </body> | |
| </html> |