web-dev-qa-db-fra.com

Comment désactiver temporairement le proxy http git

J'utilise git derrière un pare-feu d'entreprise et je réussis à cloner des projets externes en utilisant la configuration http.proxy --global.

Mon problème survient lorsque je souhaite cloner via http sur l'intranet. Je soupçonne que la configuration du proxy interfère avec la demande intranet.

Je sais que je pourrais réinitialiser la configuration avant d'utiliser l'intranet, mais ce n'est pas très convivial.

J'ai également vu cela réponse , mais il semble ne s'appliquer qu'à un référentiel existant.

Existe-t-il un moyen de désactiver l'utilisation du proxy uniquement pour un appel de commande? Dans ce cas, le clone initial?

22
David

Je mets toujours:

no_proxy=.mycompany

(export si je suis sous Unix, ou un simple set sous Windows)

Il suffit de contourner le proxy pour toutes les URL intranet se terminant par ".mycompany ".

Voir pour un exemple:

Je l'utilise dans mon propre projet: .proxy.example :

export http_proxy=http://username:[email protected]:port
export https_proxy=http://username:[email protected]:port
export no_proxy=.company localhost
36
VonC

Ce que j'aime faire, c'est définir deux alias Git:

~/.gitconfig

[alias]
        noproxy = config --global --remove-section http
        proxy = config --global http.proxy http://127.0.0.1:9666

Notez que je n'ai pas utilisé config --global --unset http.proxy pour réinitialiser le proxy car cela laisse le [http] en-tête de section, donc après avoir à plusieurs reprises activé et désactivé le proxy votre .gitconfig sera pollué par un tas de vides [http] en-têtes de section. Pas grave, mais c'est juste ennuyeux.


Dans certains cas, comme derrière les pare-feu d'entreprise, vous devez configurer ~/.ssh/config au lieu. La configuration devient légèrement plus compliquée:

~/.gitconfig

[alias]
        noproxy = !sh -c 'cp ~/.ssh/config.noproxy ~/.ssh/config'
        proxy = !sh -c 'cp ~/.ssh/config.proxy ~/.ssh/config'

~/.ssh/config.noproxy

Host github.com-username
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

~/.ssh/config.proxy

Host *
  ProxyCommand connect -H 127.0.0.1:9666 %h %p

Host github.com-username
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

Vous pouvez même combiner les deux méthodes en modifiant les alias comme suit:

[alias]
        noproxy = !sh -c 'git config --global --remove-section http 2> /dev/null && cp ~/.ssh/config.noproxy ~/.ssh/config'
        proxy = !sh -c 'git config --global http.proxy http://127.0.0.1:9666 && cp ~/.ssh/config.proxy ~/.ssh/config'

Maintenant, je peux simplement taper git noproxy pour désactiver le proxy et git proxy pour l'activer. Vous pouvez même basculer entre plusieurs proxys en créant plus d'alias.

19
thdoan

Dans mon cas, j'ai pu désactiver les demandes de clonage git passant par le proxy dans mon environnement d'entreprise en exécutant

git config --global --add remote.Origin.proxy ""

Selon la documentation de git, cela désactive toutes les requêtes vers ce référentiel distant nommé Origin.

1
bimalmampatta