aboutsummaryrefslogtreecommitdiff
path: root/Documentation/urls.txt
blob: 745f9677d005b522f52496339abd5afc4267a815 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
GIT URLS[[URLS]]
----------------

One of the following notations can be used
to name the remote repository:

===============================================================
- rsync://host.xz/path/to/repo.git/
- http://host.xz/path/to/repo.git/
- https://host.xz/path/to/repo.git/
- git://host.xz/path/to/repo.git/
- git://host.xz/~user/path/to/repo.git/
- ssh://{startsb}user@{endsb}host.xz/path/to/repo.git/
- ssh://{startsb}user@{endsb}host.xz/~user/path/to/repo.git/
- ssh://{startsb}user@{endsb}host.xz/~/path/to/repo.git
===============================================================

SSH is the default transport protocol.  You can optionally specify
which user to log-in as, and an alternate, scp-like syntax is also
supported.  Both syntaxes support username expansion,
as does the native git protocol. The following three are
identical to the last three above, respectively:

===============================================================
- {startsb}user@{endsb}host.xz:/path/to/repo.git/
- {startsb}user@{endsb}host.xz:~user/path/to/repo.git/
- {startsb}user@{endsb}host.xz:path/to/repo.git
===============================================================

To sync with a local directory, use:

===============================================================
- /path/to/repo.git/
===============================================================

REMOTES
-------

In addition to the above, as a short-hand, the name of a
file in `$GIT_DIR/remotes` directory can be given; the
named file should be in the following format:

------------
	URL: one of the above URL format
	Push: <refspec>
	Pull: <refspec>

------------

Then such a short-hand is specified in place of
<repository> without <refspec> parameters on the command
line, <refspec> specified on `Push:` lines or `Pull:`
lines are used for `git-push` and `git-fetch`/`git-pull`,
respectively.  Multiple `Push:` and `Pull:` lines may
be specified for additional branch mappings.

Or, equivalently, in the `$GIT_DIR/config` (note the use
of `fetch` instead of `Pull:`):

------------
	[remote "<remote>"]
		url = <url>
		push = <refspec>
		fetch = <refspec>

------------

The name of a file in `$GIT_DIR/branches` directory can be
specified as an older notation short-hand; the named
file should contain a single line, a URL in one of the
above formats, optionally followed by a hash `#` and the
name of remote head (URL fragment notation).
`$GIT_DIR/branches/<remote>` file that stores a <url>
without the fragment is equivalent to have this in the
corresponding file in the `$GIT_DIR/remotes/` directory.

------------
	URL: <url>
	Pull: refs/heads/master:<remote>

------------

while having `<url>#<head>` is equivalent to

------------
	URL: <url>
	Pull: refs/heads/<head>:<remote>
------------