Comment puis-je me retirer d'un dépôt Git via un mandataire HTTP?
Note: Bien que le cas d'utilisation décrit concerne l'utilisation de sous-modules dans le cadre d'un projet, il en va de même pour un git clone
normal d'un dépôt sur HTTP.
j'ai un projet sous contrôle Git. J'aimerais ajouter un sous-module:
git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu
Mais j'ai
...
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 mis en place mon HTTP_PROXY:
c:project> echo %HTTP_PROXY%
http://proxy.mycompany:80
j'ai même un paramètre git global pour le mandataire http:
c:project> git config --get http.proxy
http://proxy.mycompany:80
Quelqu'un a-t-il obtenu des HTTP fetches pour fonctionner de manière cohérente via un proxy? Ce qui est vraiment étrange, c'est que quelques projets sur GitHub fonctionnent bien.( awesome_nested_set
par exemple), mais d'autres échouent systématiquement ( rails par exemple).
26 réponses
vous pouvez également définir le mandataire HTTP que Git utilise dans la propriété de configuration globale http.proxy
:
git config --global http.proxy http://proxy.mycompany:80
il y a déjà de grandes réponses à cela. Cependant, je pensais puce que certains serveurs proxy nécessite une authentification par Identifiant et mot de passe. Parfois, cela peut être sur un domaine.
ainsi, par exemple si votre configuration de serveur mandataire est comme suit:
Server: myproxyserver
Port: 8080
Username: mydomain\myusername
Password: mypassword
Ensuite, ajoutez à votre fichier .gitconfig
en utilisant la commande suivante:
git config --global http.proxy http://mydomain\myusername:mypassword@myproxyserver:8080
ne vous inquiétez pas pour https
. Tant que le le serveur mandataire spécifié supporte http, et https, alors une entrée dans le fichier de configuration suffira.
vous pouvez alors vérifier que la commande a ajouté l'entrée à votre fichier .gitconfig
avec succès en faisant cat .gitconfig
:
À la fin du fichier, vous verrez une entrée comme suit:
[http]
proxy = http://mydomain\myusername:mypassword@myproxyserver:8080
C'est ça!
ce qui a finalement fonctionné, c'est le réglage de la variable d'environnement http_proxy
. J'avais mis HTTP_PROXY
correctement, mais git préfère apparemment la version minuscule.
on dirait que vous utilisez une compilation mingw de Git sur windows (ou peut-être une autre dont je n'ai pas entendu parler). Il y a des façons de corriger cela: je crois que tout le travail de mandataire http pour Git est fait par curl. Définissez cette variable d'environnement avant de lancer git:
GIT_CURL_VERBOSE=1
Cela devrait au moins vous donner une idée de ce qui se passe derrière les coulisses.
lorsque votre équipe réseau effectue l'inspection ssl en réécrivant des certificats, puis en utilisant une url http au lieu d'une URL https, combinée avec la configuration de ce var a fonctionné pour moi.
git config --global http.proxy http://proxy:8081
si vous voulez simplement utiliser proxy sur un dépôt spécifié, vous n'avez pas besoin des autres dépôts. La solution préférable est l'option -c, --config <key=value>
lorsque vous git clone
un dépôt. par exemple
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"
Vous éditer .gitconfig fichier situé dans le répertoire %userprofile% sur système de Windows ( notepad %userprofile%.gitconfig ) ou dans le répertoire ~ sur le système Linux ( vi ~/.gitconfig ) et ajouter une section http comme ci-dessous.
Contenu de l' .gitconfig fichier :
[http]
proxy = http://proxy.mycompany:80
c'est une vieille question, mais si vous êtes sous Windows, pensez à configurer HTTPS_PROXY si vous récupérez une URL https. A fonctionné pour moi!
Pour moi, le git:// ne fonctionne tout simplement pas par le proxy bien que la https:// ne. Cela a causé quelques maux de tête parce que j'exécutais des scripts qui utilisaient tous git:// donc je ne pouvais pas simplement les changer tous. Cependant j'ai trouvé cette gemme
git config --global url."https://github.com/".insteadOf git://github.com/
Je ne trouve ni http.proxy
ni GIT_PROXY_COMMAND
travail pour mon mandataire http authentifié. Le proxy n'est pas déclenché dans les deux sens. Mais j'ai trouver un moyen de contourner cela.
- Installer tire-bouchon , ou d'autres alternatives que vous voulez.
-
créer un fichier authfile. Le format pour
authfile
est:user_name:password
, etuser_name
,password
est votre nom d'utilisateur et mot de passe pour accéder à votre proxy. Pour créer un tel fichier, lancez simplement la commande suivante:echo "username:password" > ~/.ssh/authfile
. -
Edit
~/.ssh/config
, et assurez-vous que sa permission est644
:chmod 644 ~/.ssh/config
Take github.com à titre d'exemple, ajouter les lignes suivantes à ~/.ssh/config
:
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 git@github.com
, il utilisera le proxy automatiquement. Vous pouvez facilement faire de même chose à Bitbucket ainsi.
Ce n'est pas aussi élégante que d'autres approches, mais il fonctionne comme un charme.
Sur Windows, si vous ne voulez pas mettre votre mot de passe .gitconfig dans le texte simple, vous pouvez utiliser
- Cntml ( http://cntlm.sourceforge.net / )
il vous authentifie contre normal ou même Windows NTLM proxy et démarre localhost-proxy sans authentification.
afin de le faire fonctionner:
- Installer Cntml
- Configurer Cntml selon la documentation pour passer votre authentification par procuration
-
Point de git pour votre nouveau proxy localhost:
[http] proxy = http://localhost:3128 # change port as necessary
pour moi, ce qui a fonctionné était:
sudo apt-get install socat
créez un fichier à l'intérieur de votre $ BIN_PATH / gitproxy avec:
#!/bin/sh
_proxy=192.168.192.1
_proxyport=3128
exec socat STDIO PROXY:$_proxy::,proxyport=$_proxyport
N'oubliez pas de lui donner les autorisations d'exécution
chmod a+x gitproxy
exécuter les commandes suivantes pour configurer l'environnement:
export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy
juste pour poster ce comme il est le premier résultat sur Google, ce billet de blog que j'ai trouvé résout le problème pour moi par mis à jour les certificats curl.
http://www.simplicidade.org/notes/archives/2011/06/github_ssl_ca_errors.html
Configuration du proxy pour 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
j'ai eu le même problème, avec une correction légèrement différente: reconstruire GIT avec le SUPPORT HTTP
le protocole git:
n'a pas fonctionné à travers mon pare-feu d'entreprise.
par exemple, ce timed out:
git clone git://github.com/miksago/node-websocket-server.git
curl github.com
fonctionne très bien, cependant, donc je sais que ma variable d'environnement http_proxy
est correcte.
j'ai essayé d'utiliser http
, comme ci-dessous, mais j'ai une erreur immédiate.
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 ceci:
./configure --with-curl --with-expat
mais il a quand même eu l'erreur fatale.
enfin, après plusieurs heures frustrantes, j'ai lu le fichier configure,
# Define CURLDIR=/foo/bar si votre curl en-tête et les fichiers de bibliothèque sont en
# /foo/bar/include et /foo/bar/lib annuaire.
je me suis souvenu alors, que je n'avais pas respecté curl
de source, et ainsi est allé
à la recherche pour les fichiers d'en-tête. Bien sûr, 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. Si
Je ne me suis pas rendu compte que l'option --with-curl
n'a rien fait (c'est en fait la valeur par défaut dans ma version de git
).
j'ai fait ce qui suit pour le fixer:
-
a ajouté les en-têtes nécessaires pour la marque:
yum install curl-devel (expat-devel-1.95.8-8.3.el5_5.3.i386 was already installed).
-
supprimé
git
de/usr/local
(comme je veux que la nouvelle installation y vivre).j'ai simplement supprimé
git*
de/usr/local/share
et/usr/local/libexec
-
a recherché les dires include contenant les fichiers d'en-tête
curl
etexpat
, puis (parce que j'avais luconfigure
) ajoutés à l'environnement comme suit:export CURLDIR=/usr/include export EXPATDIR=/usr/include
-
Couru
configure
avec les options suivantes, qui, rappelons-le, ont été décrits dans leconfigure
fichier lui-même, et ont aussi des défauts, mais ce que le diable:./configure --with-curl --with-expat
-
Et maintenant
http
travaille avecgit
à travers mon pare-feu d'entreprise: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 ...
ça m'a fait du bien.
git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port
ce n'est pas un problème avec votre procuration. C'est un problème avec github (ou git). Il échoue aussi pour moi sur Git-1.6.0.1 sous linux. Bug est déjà signalé (par vous pas moins).
assurez-vous de supprimer vos pas, ils sont déjà sur google. Edit: J'ai dû rêver, je suppose qu'on ne peut pas les effacer. Utiliser Gist à la place?
$http_proxy est pour http://github.com .... $https_proxy est pour https://github.com ...
Pour Windows
Goto --> C:/Users/user_name/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 numéro de procuration et de port?
Internet Explorer - > Paramètres - > Options Internet - > Connexions -> Paramètres LAN
vous pouvez utiliser:
git config --add http.proxy http://user:password@proxy_host:proxy_port
Use proxychains
proxychains git pull ...
mise à jour: proxychains est interrompu, usage proxychains-ng à la place.
Set Git d'informations d'identification.assistant à wincred.
git config --global credential.helper wincred
assurez-vous qu'il n'y a qu'un justificatif d'identité.helper
git config -l
s'il y en a plus d'un et qu'il n'est pas réglé sur wincred, supprimez-le.
git config --system --unset credential.helper
définit 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 semblent bons....
git config --global -l
maintenant tu peux y aller!
j'ai contourné le mandataire en utilisant https... certains mandataires ne vérifient même pas les 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 quand mon mandataire n'a pas besoin d'authentification. Si vous utilisez proxy qui vous oblige à vous authentifier, vous pouvez essayer CCProxy. J'ai un petit tutoriel sur la façon de le configurer ici,
http://blog.praveenkumar.co.in/2012/09/proxy-free-windows-xp78-and-mobiles.html
j'ai pu pousser, tirer, créer de nouvelles prises en pension. Tout a très bien fonctionné. Assurez-vous de faire une désinstallation propre et réinstaller la nouvelle version si vous avez des problèmes avec Git comme je l'ai fait.
comme cela a été répondu par beaucoup, mais c'est juste pour Winodws utilisateur qui est derrière mandataire avec auth.
Ré-Installation(premier échec, Ne pas l'enlever).
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 char spécial en user/pass utiliser url_encode
comme @user2188765 l'a déjà souligné, essayez de remplacer le protocole git://
du dépôt par http[s]://
. Voir aussi cette réponse