mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
![Josh Triplett](/assets/img/avatar_default.png)
This configuration option allows systematically rewriting fetch-only URLs to push-capable URLs when used with push. For instance: [url "ssh://example.org/"] pushInsteadOf = "git://example.org/" This will allow clones of "git://example.org/path/to/repo" to subsequently push to "ssh://example.org/path/to/repo", without manually configuring pushurl for that remote. Includes documentation for the new option, bash completion updates, and test cases (both that pushInsteadOf applies to push, that it does not apply to fetch, and that it is ignored when pushURL is already defined). Signed-off-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
88 lines
2.8 KiB
Plaintext
88 lines
2.8 KiB
Plaintext
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{startsb}:port{endsb}/path/to/repo.git/
|
|
- https://host.xz{startsb}:port{endsb}/path/to/repo.git/
|
|
- git://host.xz{startsb}:port{endsb}/path/to/repo.git/
|
|
- git://host.xz{startsb}:port{endsb}/~user/path/to/repo.git/
|
|
- ssh://{startsb}user@{endsb}host.xz{startsb}:port{endsb}/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 over the network. 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, but
|
|
only the former supports port specification. 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, you can use:
|
|
|
|
===============================================================
|
|
- /path/to/repo.git/
|
|
- file:///path/to/repo.git/
|
|
===============================================================
|
|
|
|
ifndef::git-clone[]
|
|
They are mostly equivalent, except when cloning. See
|
|
linkgit:git-clone[1] for details.
|
|
endif::git-clone[]
|
|
|
|
ifdef::git-clone[]
|
|
They are equivalent, except the former implies --local option.
|
|
endif::git-clone[]
|
|
|
|
|
|
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:
|
|
|
|
------------
|
|
[url "<actual url base>"]
|
|
insteadOf = <other url base>
|
|
------------
|
|
|
|
For example, with this:
|
|
|
|
------------
|
|
[url "git://git.host.xz/"]
|
|
insteadOf = host.xz:/path/to/
|
|
insteadOf = work:
|
|
------------
|
|
|
|
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
|
|
configuration section of the form:
|
|
|
|
------------
|
|
[url "<actual url base>"]
|
|
pushInsteadOf = <other url base>
|
|
------------
|
|
|
|
For example, with this:
|
|
|
|
------------
|
|
[url "ssh://example.org/"]
|
|
pushInsteadOf = git://example.org/
|
|
------------
|
|
|
|
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.
|