Comment puis-je extraire d'un référentiel Git via un proxy HTTP?
-
02-07-2019 - |
Question
Remarque: bien que le cas d'utilisation décrit concerne l'utilisation de sous-modules dans un projet, il en va de même pour un git clone
normal d'un référentiel sur HTTP.
J'ai un projet sous le contrôle de Git. J'aimerais ajouter un sous-module:
git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu
Mais je reçois
...
got 1b0313f016d98e556396c91d08127c59722762d0
got 4c42d44a9221209293e5f3eb7e662a1571b09421
got b0d6414e3ca5c2fb4b95b7712c7edbf7d2becac7
error: Unable to find abc07fcf79aebed56497e3894c6c3c06046f913a under http://github.com/jscruggs/metri...
Cannot obtain needed commit abc07fcf79aebed56497e3894c6c3c06046f913a
while processing commit ee576543b3a0820cc966cc10cc41e6ffb3415658.
fatal: Fetch failed.
Clone of 'http://github.com/jscruggs/metric_fu.git' into submodule path 'vendor/plugins/metric_fu'
J'ai configuré mon HTTP_PROXY:
c:\project> echo %HTTP_PROXY%
http://proxy.mycompany:80
J'ai même un paramètre global Git pour le proxy http:
c:\project> git config --get http.proxy
http://proxy.mycompany:80
Quelqu'un a-t-il réussi à obtenir des résultats HTTP via un proxy? Ce qui est vraiment étrange, c’est que quelques projets sur GitHub fonctionnent correctement ( awesome_nested_set
, par exemple), mais d'autres échec constant ( rails , par exemple).
La solution 3
Ce qui a finalement fonctionné a été la définition de la variable d’environnement http_proxy
. J'avais réglé HTTP_PROXY
correctement, mais git aime apparemment mieux la version minuscule.
Autres conseils
Vous pouvez également définir le proxy HTTP que Git utilise dans la propriété de configuration globale http.proxy
:
git config --global http.proxy http://proxy.mycompany:80
Pour s'authentifier auprès du proxy:
git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080/
(Le crédit va à @EugeneKulabuhov et @ JaimeReynoso pour le format d'authentification.)
Il existe déjà d'excellentes réponses à ce sujet. Cependant, je pensais pouvoir participer car certains serveurs proxy vous obligent à vous authentifier avec un identifiant et un mot de passe. Parfois, cela peut être sur un domaine.
Ainsi, par exemple, si la configuration de votre serveur proxy est la suivante:
Server: myproxyserver
Port: 8080
Username: mydomain\myusername
Password: mypassword
Ajoutez ensuite à votre .gitconfig
fichier à l'aide de la commande suivante:
git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080
Ne vous inquiétez pas pour https
. Tant que le serveur proxy spécifié prend en charge les protocoles http et https, une seule entrée dans le fichier de configuration suffit.
Vous pouvez ensuite vérifier que la commande a bien ajouté l'entrée à votre fichier cat .gitconfig
en exécutant <=>:
À la fin du fichier, vous verrez une entrée comme suit:
[http]
proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080
C'est ça!
Il semble que vous utilisiez une compilation de Git sous Windows (ou peut-être une autre dont je n’ai pas entendu parler). Il y a plusieurs façons de déboguer ceci: Je pense que tout le travail du proxy http pour git se fait par curl. Définissez cette variable d'environnement avant d'exécuter git:
GIT_CURL_VERBOSE=1
Cela devrait au moins vous donner une idée de ce qui se passe dans les coulisses.
Si vous souhaitez uniquement utiliser un proxy sur un référentiel spécifié, n’avez pas besoin d’autres référentiels. La méthode préférable est l'option -c, --config <key=value>
lorsque vous git clone
un référentiel. par exemple
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"
Lorsque votre équipe réseau inspecte SSL en réécrivant les certificats, utilisez une URL http au lieu de https, associée à la définition de cette variable qui a fonctionné pour moi.
git config --global http.proxy http://proxy:8081
Vous pourriez aussi modifier le fichier .gitconfig situé dans le répertoire% userprofile% sur le système Windows ( notepad% userprofile% .gitconfig ) ou dans le répertoire ~ sur le système Linux (< em> vi ~ / .gitconfig ) et ajouter une section http comme ci-dessous.
Contenu du fichier .gitconfig:
[http]
proxy = http://proxy.mycompany:80
Ceci est une vieille question, mais si vous utilisez Windows, envisagez également de définir HTTPS_PROXY si vous effectuez une récupération via une URL https. Travaillé pour moi!
Pour moi, le git: // ne fonctionne tout simplement pas avec le proxy, contrairement à https: //. Cela causait un peu de maux de tête parce que j'exécutais des scripts qui utilisaient tous git: //, je ne pouvais donc pas les changer facilement. Cependant, j'ai trouvé ce GEM
git config --global url."https://github.com/".insteadOf git://github.com/
Je ne trouve ni http.proxy
ni GIT_PROXY_COMMAND
de travail pour mon proxy http authentifié. Le proxy n'est pas déclenché dans les deux cas. Mais je trouve un moyen de contourner ce problème.
- Installez tire-bouchon ou toute autre solution de votre choix.
-
Créez un fichier d'authentification. Le format pour
authfile
est:user_name:password
etuser_name
,password
sont votre nom d'utilisateur et votre mot de passe pour accéder à votre proxy. Pour créer un tel fichier, exécutez simplement la commande suivante:echo "username:password" > ~/.ssh/authfile
. -
Modifier
~/.ssh/config
et assurez-vous que son autorisation est644
:chmod 644 ~/.ssh/config
Prenez github.com à titre d'exemple, ajoutez les lignes suivantes à git@github.com
:
Host github.com
HostName github.com
ProxyCommand /usr/local/bin/corkscrew <your.proxy> <proxy port> %h %p <path/to/authfile>
User git
Maintenant, chaque fois que vous faites quelque chose avec <=>, il utilisera automatiquement le proxy. Vous pouvez facilement faire la même chose pour Bitbucket .
Ce n’est pas aussi élégant que les autres approches, mais cela fonctionne à merveille.
Sous Windows, si vous ne voulez pas mettre votre mot de passe dans .gitconfig dans le texte brut, vous pouvez utiliser
- Cntml ( http://cntlm.sourceforge.net/ )
Il vous authentifie par rapport au proxy normal ou même Windows NTLM et démarre localhost-proxy sans authentification.
Pour le faire fonctionner:
- Installer Cntml
- Configurez Cntml en fonction de la documentation pour passer votre authentification proxy
-
Pointez git sur votre nouveau proxy localhost:
[http] proxy = http://localhost:3128 # change port as necessary
Pour moi, cela a fonctionné:
sudo apt-get install socat
Créez un fichier dans votre $ BIN_PATH / gitproxy avec:
#!/bin/sh
_proxy=192.168.192.1
_proxyport=3128
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport
N'oubliez pas de lui donner des autorisations d'exécution
chmod a+x gitproxy
Exécutez les commandes suivantes pour configurer l'environnement:
export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy
Juste pour poster ceci car c'est le premier résultat sur Google, cet article de blog que j'ai trouvé résout le problème pour moi en mettant à jour les certificats de boucle.
http://www.simplicidade.org/notes/archives/ 2011/06 / github_ssl_ca_errors.html
Configurer le proxy sur git
commande
git config --global http.proxy http://user:password@domain:port
exemple
git config --global http.proxy http://clairton:123456@proxy.clairtonluz.com.br:8080
Cela a fonctionné pour moi.
git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port
J'ai eu le même problème, avec un correctif légèrement différent: RESTAURATION DE GIT AVEC SUPPORT HTTP
Le protocole git:
ne fonctionnait pas avec le pare-feu de mon entreprise.
Par exemple, ce délai a expiré:
git clone git://github.com/miksago/node-websocket-server.git
curl github.com
fonctionne très bien, donc je sais que ma variable d’environnement http_proxy
est correcte.
J'ai essayé d'utiliser http
, comme ci-dessous, mais une erreur s'est produite immédiatement.
git clone http://github.com/miksago/node-websocket-server.git
->>> fatal: Unable to find remote helper for 'http' <<<-
J'ai essayé de recompiler git comme suit:
./configure --with-curl --with-expat
mais vous avez toujours l'erreur fatale.
Enfin, après plusieurs heures de frustration, j'ai lu le fichier de configuration, et a vu ceci:
# Définissez CURLDIR = / foo / bar si votre en-tête Curl et vos fichiers de bibliothèque sont dans
# / foo / bar / include et les répertoires / foo / bar / lib.
Je me suis alors rappelé que je ne m'étais pas conformé curl
de la source, et je suis donc allé
rechercher les fichiers d'en-tête. Effectivement, ils n'ont pas été installés. C'était le problème. Make ne s'est pas plaint des fichiers d'en-tête manquants. Alors
Je ne savais pas que l'option --with-curl
ne faisait rien (il s'agit en fait de la valeur par défaut dans ma version de git
).
J'ai corrigé ce qui suit:
-
Ajout des en-têtes nécessaires pour make:
yum install curl-devel (expat-devel-1.95.8-8.3.el5_5.3.i386 was already installed).
-
Supprimé
/usr/local
degit*
(car je souhaite que la nouvelle installation y soit installée).J'ai simplement supprimé
/usr/local/share
de/usr/local/libexec
etexpat
-
a recherché les répertoires d'inclusion contenant les fichiers d'en-tête
configure
et <=>, puis (parce que j'avais lu <=>) ceux-ci ajoutés à l'environnement comme suit:export CURLDIR=/usr/include export EXPATDIR=/usr/include
-
A couru <=> avec les options suivantes, qui, encore une fois, ont été décrites dans le fichier <=> lui-même et qui étaient également les valeurs par défaut, mais bon sang:
git clone http://github.com/miksago/node-websocket-server.git Cloning into 'node-websocket-server'... * Couldn't find host github.com in the .netrc file, using defaults * About to connect() to proxy proxy.entp.attws.com port 8080 * Trying 135.214.40.30... * connected ...
-
Et maintenant <=> fonctionne avec <=> à travers le pare-feu de mon entreprise:
<*>
vous pouvez utiliser:
git config --add http.proxy http://user:password@proxy_host:proxy_port
Définissez Git credential.helper sur wincred.
git config --global credential.helper wincred
Assurez-vous qu'il n'y a qu'un seul identifiant.helper
git config -l
S'il y a plus de 1 et que ce n'est pas le cas, supprimez-le.
git config --system --unset credential.helper
Définissez maintenant le proxy sans mot de passe.
git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80
Vérifiez que tous les paramètres que vous avez ajoutés sont corrects ....
git config --global -l
Maintenant vous êtes prêt à partir!
Ce n'est pas un problème avec votre proxy. C'est un problème avec github (ou git). Cela échoue pour moi sur git-1.6.0.1 sur linux également. Bug est déjà signalé (par vous non moins).
Assurez-vous de supprimer vos pasties, elles sont déjà sur Google. Edit: Vous devez avoir rêvé, je suppose que vous ne pouvez pas les supprimer. Utilisez plutôt Gist ?
$ http_proxy est pour http://github.com .... $ https_proxy est pour https://github.com ...
Pour Windows
Goto - > C: / Users / nom_utilisateur / gitconfig
Mettre à jour le fichier gitconfig avec les détails ci-dessous
[http]
[https]
proxy = https://your_proxy:your_port
[http]
proxy = http://your_proxy:your_port
Comment vérifier votre proxy et votre numéro de port?
Internet Explorer - > Paramètres - & Gt; Options Internet - & Gt; Connexions - & Gt; Paramètres du réseau local
Utilisez chaînes de proxy
proxychains git pull ...
mise à jour: la suppression de proxychains est désactivée. Utilisez proxychains-ng . à la place.
J'ai contourné le proxy en utilisant https ... certains mandataires ne vérifient même pas https.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
c:\git\meantest>git clone http://github.com/linnovate/mean.git
Cloning into 'mean'...
fatal: unable to access 'http://github.com/linnovate/mean.git/': Failed connect
to github.com:80; No error
c:\git\meantest>git clone https://github.com/linnovate/mean.git
Cloning into 'mean'...
remote: Reusing existing pack: 2587, done.
remote: Counting objects: 27, done.
remote: Compressing objects: 100% (24/24), done.
rRemote: Total 2614 (delta 3), reused 4 (delta 0)eceiving objects: 98% (2562/26
Receiving objects: 100% (2614/2614), 1.76 MiB | 305.00 KiB/s, done.
Resolving deltas: 100% (1166/1166), done.
Checking connectivity... done
Les réponses ci-dessus ont fonctionné pour moi lorsque mon proxy n'a pas besoin d'authentification. Si vous utilisez un proxy qui nécessite une authentification, vous pouvez essayer CCProxy. J'ai un petit tutoriel sur la façon de l'installer ici,
http: // blog. praveenkumar.co.in/2012/09/proxy-free-windows-xp78-and-mobiles.html
J'ai pu pousser, tirer, créer de nouvelles pensions. Tout a bien fonctionné. Assurez-vous de procéder à une désinstallation propre et à la réinstallation de la nouvelle version si vous rencontrez des problèmes avec Git, comme je l’ai fait.
Comme cela a été répondu par beaucoup, mais ceci est juste pour Winodws UTILISATEUR qui est derrière un proxy avec une autorisation.
Réinstallation (première échec, ne pas supprimer).
Goto ->
**Windows**
1. msysgit\installer-tmp\etc\gitconfig
Under [http]
proxy = http://user:pass@url:port
**Linux**
1. msysgit\installer-tmp\setup-msysgit.sh
export HTTP_PROXY="http://USER:PASS@proxy.abc.com:8080"
si vous avez un caractère spécial dans utilisateur / mot de passe, utilisez code_url
comme @ user2188765 l'a déjà indiqué, essayez de remplacer le protocole git://
du référentiel par http[s]://
. Voir aussi cette réponse