{
    "mode": "man",
    "parameter": "GIT-REMOTE-EXT",
    "section": "1",
    "url": "https://www.chedong.com/phpMan.php/man/GIT-REMOTE-EXT/1/json",
    "generated": "2026-06-03T01:28:34Z",
    "synopsis": "git remote add <nick> \"ext::<command>[ <arguments>...]\"",
    "sections": {
        "NAME": {
            "content": "git-remote-ext - Bridge smart transport to external command.\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "git remote add <nick> \"ext::<command>[ <arguments>...]\"\n\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "This remote helper uses the specified <command> to connect to a remote Git server.\n\nData written to stdin of the specified <command> is assumed to be sent to a git:// server,\ngit-upload-pack, git-receive-pack or git-upload-archive (depending on situation), and data\nread from stdout of <command> is assumed to be received from the same service.\n\nCommand and arguments are separated by an unescaped space.\n\nThe following sequences have a special meaning:\n\n'% '\nLiteral space in command or argument.\n\n%%\nLiteral percent sign.\n\n%s\nReplaced with name (receive-pack, upload-pack, or upload-archive) of the service Git\nwants to invoke.\n\n%S\nReplaced with long name (git-receive-pack, git-upload-pack, or git-upload-archive) of the\nservice Git wants to invoke.\n\n%G (must be the first characters in an argument)\nThis argument will not be passed to <command>. Instead, it will cause the helper to start\nby sending git:// service requests to the remote side with the service field set to an\nappropriate value and the repository field set to rest of the argument. Default is not to\nsend such a request.\n\nThis is useful if remote side is git:// server accessed over some tunnel.\n\n%V (must be first characters in argument)\nThis argument will not be passed to <command>. Instead it sets the vhost field in the\ngit:// service request (to rest of the argument). Default is not to send vhost in such\nrequest (if sent).\n",
            "subsections": []
        },
        "ENVIRONMENT VARIABLES": {
            "content": "GITTRANSLOOPDEBUG\nIf set, prints debugging information about various reads/writes.\n",
            "subsections": []
        },
        "ENVIRONMENT VARIABLES PASSED TO COMMAND": {
            "content": "GITEXTSERVICE\nSet to long name (git-upload-pack, etc...) of service helper needs to invoke.\n\nGITEXTSERVICENOPREFIX\nSet to long name (upload-pack, etc...) of service helper needs to invoke.\n",
            "subsections": []
        },
        "EXAMPLES": {
            "content": "This remote helper is transparently used by Git when you use commands such as \"git fetch\n<URL>\", \"git clone <URL>\", , \"git push <URL>\" or \"git remote add <nick> <URL>\", where <URL>\nbegins with ext::. Examples:\n\n\"ext::ssh -i /home/foo/.ssh/somekey user@host.example %S foo/repo\"\nLike host.example:foo/repo, but use /home/foo/.ssh/somekey as keypair and user as user on\nremote side. This avoids needing to edit .ssh/config.\n\n\"ext::socat -t3600 - ABSTRACT-CONNECT:/git-server %G/somerepo\"\nRepresents repository with path /somerepo accessible over git protocol at abstract\nnamespace address /git-server.\n\n\"ext::git-server-alias foo %G/repo\"\nRepresents a repository with path /repo accessed using the helper program\n\"git-server-alias foo\". The path to the repository and type of request are not passed on\nthe command line but as part of the protocol stream, as usual with git:// protocol.\n\n\"ext::git-server-alias foo %G/repo %Vfoo\"\nRepresents a repository with path /repo accessed using the helper program\n\"git-server-alias foo\". The hostname for the remote server passed in the protocol stream\nwill be \"foo\" (this allows multiple virtual Git servers to share a link-level address).\n\n\"ext::git-server-alias foo %G/repo% with% spaces %Vfoo\"\nRepresents a repository with path /repo with spaces accessed using the helper program\n\"git-server-alias foo\". The hostname for the remote server passed in the protocol stream\nwill be \"foo\" (this allows multiple virtual Git servers to share a link-level address).\n\n\"ext::git-ssl foo.example /bar\"\nRepresents a repository accessed using the helper program \"git-ssl foo.example /bar\". The\ntype of request can be determined by the helper using environment variables (see above).\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "gitremote-helpers(7)\n",
            "subsections": []
        },
        "GIT": {
            "content": "Part of the git(1) suite\n\n\n\nGit 2.34.1                                   02/26/2026                            GIT-REMOTE-EXT(1)",
            "subsections": []
        }
    },
    "summary": "git-remote-ext - Bridge smart transport to external command.",
    "flags": [],
    "examples": [
        "This remote helper is transparently used by Git when you use commands such as \"git fetch",
        "<URL>\", \"git clone <URL>\", , \"git push <URL>\" or \"git remote add <nick> <URL>\", where <URL>",
        "begins with ext::. Examples:",
        "\"ext::ssh -i /home/foo/.ssh/somekey user@host.example %S foo/repo\"",
        "Like host.example:foo/repo, but use /home/foo/.ssh/somekey as keypair and user as user on",
        "remote side. This avoids needing to edit .ssh/config.",
        "\"ext::socat -t3600 - ABSTRACT-CONNECT:/git-server %G/somerepo\"",
        "Represents repository with path /somerepo accessible over git protocol at abstract",
        "namespace address /git-server.",
        "\"ext::git-server-alias foo %G/repo\"",
        "Represents a repository with path /repo accessed using the helper program",
        "\"git-server-alias foo\". The path to the repository and type of request are not passed on",
        "the command line but as part of the protocol stream, as usual with git:// protocol.",
        "\"ext::git-server-alias foo %G/repo %Vfoo\"",
        "Represents a repository with path /repo accessed using the helper program",
        "\"git-server-alias foo\". The hostname for the remote server passed in the protocol stream",
        "will be \"foo\" (this allows multiple virtual Git servers to share a link-level address).",
        "\"ext::git-server-alias foo %G/repo% with% spaces %Vfoo\"",
        "Represents a repository with path /repo with spaces accessed using the helper program",
        "\"git-server-alias foo\". The hostname for the remote server passed in the protocol stream",
        "will be \"foo\" (this allows multiple virtual Git servers to share a link-level address).",
        "\"ext::git-ssl foo.example /bar\"",
        "Represents a repository accessed using the helper program \"git-ssl foo.example /bar\". The",
        "type of request can be determined by the helper using environment variables (see above)."
    ],
    "see_also": [
        {
            "name": "gitremote-helpers",
            "section": "7",
            "url": "https://www.chedong.com/phpMan.php/man/gitremote-helpers/7/json"
        }
    ]
}