blob: 289019478d16719e5d2c86b7a17017005bd9a80d [file] [log] [blame]
J. Bruce Fields85a97d42006-02-05 18:29:49 -05001GIT URLS[[URLS]]
2----------------
3
Ramkumar Ramachandra5ce4f4e2010-04-06 14:08:19 +05304In general, URLs contain information about the transport protocol, the
5address of the remote server, and the path to the repository.
6Depending on the transport protocol, some of this information may be
7absent.
J. Bruce Fields85a97d42006-02-05 18:29:49 -05008
Ramkumar Ramachandra5ce4f4e2010-04-06 14:08:19 +05309Git natively supports ssh, git, http, https, ftp, ftps, and rsync
10protocols. The following syntaxes may be used with them:
11
Luben Tuikov2e776662007-09-01 02:36:31 -070012- ssh://{startsb}user@{endsb}host.xz{startsb}:port{endsb}/path/to/repo.git/
Ramkumar Ramachandra5ce4f4e2010-04-06 14:08:19 +053013- git://host.xz{startsb}:port{endsb}/path/to/repo.git/
14- http{startsb}s{endsb}://host.xz{startsb}:port{endsb}/path/to/repo.git/
15- ftp{startsb}s{endsb}://host.xz{startsb}:port{endsb}/path/to/repo.git/
16- rsync://host.xz/path/to/repo.git/
J. Bruce Fields85a97d42006-02-05 18:29:49 -050017
Ramkumar Ramachandra5ce4f4e2010-04-06 14:08:19 +053018An alternative scp-like syntax may also be used with the ssh protocol:
J. Bruce Fields85a97d42006-02-05 18:29:49 -050019
Ramkumar Ramachandra5ce4f4e2010-04-06 14:08:19 +053020- {startsb}user@{endsb}host.xz:path/to/repo.git/
J. Bruce Fields85a97d42006-02-05 18:29:49 -050021
Ramkumar Ramachandra5ce4f4e2010-04-06 14:08:19 +053022The ssh and git protocols additionally support ~username expansion:
23
24- ssh://{startsb}user@{endsb}host.xz{startsb}:port{endsb}/~{startsb}user{endsb}/path/to/repo.git/
25- git://host.xz{startsb}:port{endsb}/~{startsb}user{endsb}/path/to/repo.git/
26- {startsb}user@{endsb}host.xz:/~{startsb}user{endsb}/path/to/repo.git/
27
Ville Skyttä6b677a22010-07-20 00:17:17 +030028For local repositories, also supported by git natively, the following
Ramkumar Ramachandra5ce4f4e2010-04-06 14:08:19 +053029syntaxes may be used:
J. Bruce Fields85a97d42006-02-05 18:29:49 -050030
J. Bruce Fields3598a302006-02-05 17:43:47 -050031- /path/to/repo.git/
Junio C Hamano3d5c4182007-08-01 23:42:36 -070032- file:///path/to/repo.git/
Junio C Hamano3d5c4182007-08-01 23:42:36 -070033
Sergei Organov347989f2007-11-16 21:43:16 +030034ifndef::git-clone[]
Ramkumar Ramachandra5ce4f4e2010-04-06 14:08:19 +053035These two syntaxes are mostly equivalent, except when cloning, when
36the former implies --local option. See linkgit:git-clone[1] for
37details.
Sergei Organov347989f2007-11-16 21:43:16 +030038endif::git-clone[]
39
40ifdef::git-clone[]
Ramkumar Ramachandra5ce4f4e2010-04-06 14:08:19 +053041These two syntaxes are mostly equivalent, except the former implies
42--local option.
Sergei Organov347989f2007-11-16 21:43:16 +030043endif::git-clone[]
Daniel Barkalow55029ae2008-02-20 13:43:53 -050044
Ramkumar Ramachandra5ce4f4e2010-04-06 14:08:19 +053045When git doesn't know how to handle a certain transport protocol, it
46attempts to use the 'remote-<transport>' remote helper, if one
47exists. To explicitly request a remote helper, the following syntax
48may be used:
49
50- <transport>::<address>
51
52where <address> may be a path, a server and path, or an arbitrary
53URL-like string recognized by the specific remote helper being
54invoked. See linkgit:git-remote-helpers[1] for details.
Daniel Barkalow55029ae2008-02-20 13:43:53 -050055
56If there are a large number of similarly-named remote repositories and
57you want to use a different format for them (such that the URLs you
58use will be rewritten into URLs that work), you can create a
59configuration section of the form:
60
61------------
62 [url "<actual url base>"]
63 insteadOf = <other url base>
64------------
65
66For example, with this:
67
68------------
69 [url "git://git.host.xz/"]
70 insteadOf = host.xz:/path/to/
71 insteadOf = work:
72------------
73
74a URL like "work:repo.git" or like "host.xz:/path/to/repo.git" will be
75rewritten in any context that takes a URL to be "git://git.host.xz/repo.git".
76
Josh Triplett1c2eafb2009-09-07 01:56:33 -070077If you want to rewrite URLs for push only, you can create a
78configuration section of the form:
79
80------------
81 [url "<actual url base>"]
82 pushInsteadOf = <other url base>
83------------
84
85For example, with this:
86
87------------
88 [url "ssh://example.org/"]
89 pushInsteadOf = git://example.org/
90------------
91
92a URL like "git://example.org/path/to/repo.git" will be rewritten to
93"ssh://example.org/path/to/repo.git" for pushes, but pulls will still
94use the original URL.