| GIT URLS[[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 supports ssh, git, http, and https protocols (in addition, ftp |
| and ftps can be used for fetching, but this is inefficient and |
| deprecated; do not use them). |
| |
| The native transport (i.e. git:// URL) does no authentication and |
| should be used with caution on unsecured networks. |
| |
| The following syntaxes may be used with them: |
| |
| - ++ssh://++{startsb}__<user>__++@++{endsb}__<host>__{startsb}++:++__<port>__{endsb}++/++__<path-to-git-repo>__ |
| - ++git://++__<host>__{startsb}:__<port>__{endsb}++/++__<path-to-git-repo>__ |
| - ++http++{startsb}++s++{endsb}++://++__<host>__{startsb}++:++__<port>__{endsb}++/++__<path-to-git-repo>__ |
| - ++ftp++{startsb}++s++{endsb}++://++__<host>__{startsb}++:++__<port>__{endsb}++/++__<path-to-git-repo>__ |
| |
| An alternative scp-like syntax may also be used with the ssh protocol: |
| |
| - {startsb}__<user>__++@++{endsb}__<host>__++:/++__<path-to-git-repo>__ |
| |
| This syntax is only recognized if there are no slashes before the |
| first colon. This helps differentiate a local path that contains a |
| colon. For example the local path `foo:bar` could be specified as an |
| absolute path or `./foo:bar` to avoid being misinterpreted as an ssh |
| url. |
| |
| The ssh and git protocols additionally support ++~++__<username>__ expansion: |
| |
| - ++ssh://++{startsb}__<user>__++@++{endsb}__<host>__{startsb}++:++__<port>__{endsb}++/~++__<user>__++/++__<path-to-git-repo>__ |
| - ++git://++__<host>__{startsb}++:++__<port>__{endsb}++/~++__<user>__++/++__<path-to-git-repo>__ |
| - {startsb}__<user>__++@++{endsb}__<host>__++:~++__<user>__++/++__<path-to-git-repo>__ |
| |
| For local repositories, also supported by Git natively, the following |
| syntaxes may be used: |
| |
| - `/path/to/repo.git/` |
| - ++file:///path/to/repo.git/++ |
| |
| ifndef::git-clone[] |
| These two syntaxes are mostly equivalent, except when cloning, when |
| the former implies `--local` option. See linkgit:git-clone[1] for |
| details. |
| endif::git-clone[] |
| |
| ifdef::git-clone[] |
| These two syntaxes are mostly equivalent, except the former implies |
| `--local` option. |
| endif::git-clone[] |
| |
| `git clone`, `git fetch` and `git pull`, but not `git push`, will also |
| accept a suitable bundle file. See linkgit:git-bundle[1]. |
| |
| When Git doesn't know how to handle a certain transport protocol, it |
| attempts to use the `remote-`{empty}__<transport>__ remote helper, if one |
| exists. To explicitly request a remote helper, the following syntax |
| may be used: |
| |
| - _<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 linkgit:gitremote-helpers[7] 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: |
| |
| [verse] |
| -- |
| [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: |
| |
| [verse] |
| -- |
| [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. |