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?
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:
git-svn fetch
derrière le proxy "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
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.
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.