Skip to content

Instantly share code, notes, and snippets.

@rainly
Forked from wgzhao/config_git_use_proxy.md
Created October 27, 2025 08:02
Show Gist options
  • Save rainly/1595e4d117f5e94e46db8a5bbfa1b744 to your computer and use it in GitHub Desktop.
Save rainly/1595e4d117f5e94e46db8a5bbfa1b744 to your computer and use it in GitHub Desktop.

Revisions

  1. @wgzhao wgzhao created this gist May 18, 2021.
    131 changes: 131 additions & 0 deletions config_git_use_proxy.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,131 @@
    # Configure Git to use a proxy

    ## In Brief

    You may need to configure a proxy server if you're having trouble cloning
    or fetching from a remote repository or getting an error
    like `unable to access '...' Couldn't resolve host '...'`.

    Consider something like:

    ```
    git config --global http.proxy http://proxyUsername:[email protected]:port
    ```

    Or for a specific domain, something like:

    ```
    git config --global http.https://domain.com.proxy http://proxyUsername:[email protected]:port
    git config --global http.https://domain.com.sslVerify false
    ```

    Setting `http.<url>.sslVerify` to `false` may help you quickly get going if your workplace
    employs man-in-the-middle HTTPS proxying. Longer term, you could get the
    root CA that they are applying to the certificate chain
    and specify it with either `http.sslCAInfo` or `http.sslCAPath`.

    See also the [git-config](https://git-scm.com/docs/git-config) documentation, especially the following
    sections if you're having HTTPS/SSL issues

    * `http.sslVerify`
    * `http.sslCAInfo`
    * `http.sslCAPath`
    * `http.sslCert`
    * `http.sslKey`
    * `http.sslCertPasswordProtected`

    ## In Detail

    ### Configure the proxy

    You can configure these globally in your user `~/.gitconfig` file using the `--global` switch, or local to a repository in its `.git/config` file.

    #### Setting a global proxy

    Configure a global proxy if all access to all repos require this proxy

    ```
    git config --global http.proxy http://proxyUsername:[email protected]:port
    ```

    #### URL specific proxy

    If you wish to specify that a proxy should be used for just
    some URLs that specify the URL as a git config subsection
    using `http.<url>.key` notation:

    ```
    git config --global http.https://domain.com.proxy http://proxyUsername:[email protected]:port
    ```

    Which will result in the following in the `~/.gitconfig` file:

    ```
    [http]
    [http "https://domain.com"]
    proxy = http://proxyUsername:[email protected]:port
    ```

    #### Handle subsequent SSL protocol errors

    If you're still having trouble cloning or fetching and are now getting
    an `unable to access 'https://...': Unknown SSL protocol error in connection to ...:443` then
    you may decide to switch off SSL verification for the single operation
    by using the `-c http.sslVerify=false` option

    ```
    git -c http.sslVerify=false clone https://domain.com/path/to/git
    ```

    Once cloned, you may decide set this for just this cloned
    repository's `.git/config` by doing. Notice the absence of the `--global`

    ```
    git config http.sslVerify false
    ```

    If you choose to make it global then limit it to a URL using
    the `http.<url>.sslVerify` notation:

    ```
    git config --global http.https://domain.com.sslVerify false
    ```

    Which will result in the following in the `~/.gitconfig` file:

    ```
    [http]
    [http "https://domain.com"]
    proxy = http://proxyUsername:[email protected]:port
    sslVerify = false
    ```

    ### Show current configuration

    To show the current configuration of all `http` sections

    ```
    git config --global --get-regexp http.*
    ```

    If you are in a locally cloned repository folder then you drop
    the `--global` and see all current config:

    ```
    git config --get-regexp http.*
    ```

    ### Unset a proxy or SSL verification

    Use the `--unset` flag to remove configuration being specific about the
    property -- for example whether it was `http.proxy` or `http.<url>.proxy`.
    Consider using any of the following:

    ```
    git config --global --unset http.proxy
    git config --global --unset http.https://domain.com.proxy
    git config --global --unset http.sslVerify
    git config --global --unset http.https://domain.com.sslVerify
    ```