with usar remove none configurar con git github proxy

remove - usar git con proxy



¿Solo usas un proxy para ciertas URL/dominios git? (5)

¿Es posible configurar git para usar un proxy solo para dominios específicos?

Me gustaría utilizar nuestro proxy corporativo para acceder a Github, pero no permitir que acceda a nuestros repositorios git internos.

Estoy usando bower y necesita elementos tanto dentro de nuestro firewall como en github, así que no puedo hacerlo como configuración de proyecto. Necesita ser algún tipo de opción de configuración global. ¿Alguna idea?


Como algunos han mencionado aquí, puede hacer esto especificando una URL junto con la configuración del proxy, pero aquí está el caso de uso que me solucionó esto. ¡Gracias a VonC arriba!

Observe a continuación que estoy especificando la raíz del servidor de Git. No se requiere la ruta completa al repositorio git que has clonado. Puede usar una sola entrada para ocuparse de todo el servidor.

Agregue lo siguiente a su archivo .gitconfig. En mi sistema de Windows, estoy usando% userprofile% /. Gitconfig

[http] proxy = http://my.proxy.net:8080 [https] proxy = http://my.proxy.net:8443 [http "http://my.internalgitserver.com/"] proxy = ""


En Windows, simplemente [nota sin contraseña] siguiente funcionó para mí

git config --global http.proxy http://mydomain//myusername:@myproxyserver:proxyport git config --global https.proxy http://mydomain//myusername:@myproxyserver:proxyport


Para agregar otra posibilidad, puede definir un proxy a través de la git config http.proxy .

git config --global http.proxy http://mydomain//myusername:mypassword@myproxyserver:proxyport

Pero lo realmente bueno es que, a partir de git1.8.5 (octubre de 2013) , puede establecer la configuración de http por url .

Las variables " http.* " Ahora se pueden especificar por URL a las que se aplica la configuración .
Por ejemplo,

[http] sslVerify = true [http "https://weak.example.com/"] sslVerify = false

desactivaría http.sslVerify solo al hablar con ese sitio específico.

Consulte la confirmación d4770964d5 :

$ git config --bool --get-urlmatch http.sslVerify https://good.example.com true $ git config --bool --get-urlmatch http.sslVerify https://weak.example.com false

Con solo <section> especificado, puede obtener una lista de todas las variables en la sección con sus valores que se aplican a la URL dada. P.ej

$ git config --get-urlmatch http https://weak.example.com http.sslverify false

Todos los detalles están en commit 6a56993b :

http.<url>.*::

Cualquiera de las opciones http. * Anteriores se puede aplicar selectivamente a algunas URL.
Para que una clave de configuración coincida con una URL, cada elemento de la clave de configuración se compara con el de la URL, en el siguiente orden:

  • Esquema (p. Ej., https en https://example.com/ ).
  • Nombre de host / dominio (por ejemplo, example.com en https://example.com/ ).
  • Número de puerto (p. Ej., 8080 en http://example.com:8080/ ).
  • Ruta (por ejemplo, repo.git en https://example.com/repo.git ).
  • Nombre de usuario (por ejemplo, user en https://[email protected]/repo.git )

La lista anterior se ordena disminuyendo la precedencia; una URL que coincida con la ruta de una clave de configuración es preferible a una que coincida con su nombre de usuario.
Por ejemplo, si la URL es https://[email protected]/foo/bar una coincidencia de clave de configuración de https://example.com/foo sobre una coincidencia de clave de configuración de https://[email protected] .

Todas las URL se normalizan antes de intentar cualquier coincidencia (la parte de la contraseña, si está incrustada en la URL, siempre se ignora para fines de coincidencia) para que las URL equivalentes que se escriben de forma diferente se correspondan correctamente.

La configuración de la variable de entorno siempre anula cualquier coincidencia .
Las direcciones URL que se comparan son las que se dan directamente a los comandos de Git.
Esto significa que cualquier URL + visitada como resultado de una redirección no participa en la coincidencia.


Puede ajustar varias opciones de configuración para cada control remoto específicamente. Digamos que tenemos 2 controles remotos, llamados origin y upstream respectivamente. Usted ajusta el proxy para cada uno haciendo lo siguiente:

git config --path remote.origin.proxy http://user:pass@proxy_for_origin:8080 git config --path remote.upstream.proxy http://user:pass@proxy_for_upstream:8080

Esto cambiará las secciones de cada control remoto dentro de su configuración de repositorio local ( .git/config ).

También puede ajustar las opciones de configuración global si lo desea. Como no tiene sentido hacer referencia a un nombre remoto en el archivo de configuración global ( $HOME/.gitconfig ), puede usar url-matching (IIRC, compatible desde Git 1.8.5). Ejemplo:

[http "https://example.com/repo1.git"] proxy = http://user:pass@proxy1:8080 [http "https://example.com/repo2.git"] proxy = http://user:pass@proxy2:8080

Si quieres ver lo que se ha configurado:

git config --path --get-urlmatch https://example.com/repo1.git git config --path --get-urlmatch https://example.com/repo2.git


Usualmente uso las variables de entorno:

  • http_proxy=http://username:password@proxydomain:port
  • https_proxy=http://username:password@proxydomain:port

Eso es recogido por git cuando se accede al repositorio de GitHub.

Nota:

  • tanto http_proxy como https_proxy deben usar http:// url del proxy (no https:// ).
  • siempre use fqn (nombre completo calificado) de proxydomain (no confíe en su nombre corto)

Pero para el repositorio interno, todo lo que tengo que hacer es definir y exportar una variable de entorno más:

  • no_proxy=.my.company,localhost,127.0.0.1,::1 , para acceder a cualquier repositorio con una dirección como myrepo.my.company o localhost.

Puede definir NO_PROXY o no_proxy , no importa.

Pero, por las HTTP_PROXY , siempre configuro HTTP_PROXY , HTTPS_PROXY , http_proxy , https_proxy , NO_PROXY y no_proxy .