Comment puis-je extraire d’un référentiel Git via un proxy HTTP?

Remarque: alors 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 via HTTP.

J’ai un projet sous contrôle Git. Je voudrais append un sous-module:

 git submodule add http://github.com/jscruggs/mesortingc_fu.git vendor/plugins/mesortingc_fu 

Mais je reçois

 ... got 1b0313f016d98e556396c91d08127c59722762d0 got 4c42d44a9221209293e5f3eb7e662a1571b09421 got b0d6414e3ca5c2fb4b95b7712c7edbf7d2becac7 error: Unable to find abc07fcf79aebed56497e3894c6c3c06046f913a under http://github.com/jscruggs/mesorting... Cannot obtain needed commit abc07fcf79aebed56497e3894c6c3c06046f913a while processing commit ee576543b3a0820cc966cc10cc41e6ffb3415658. fatal: Fetch failed. Clone of 'http://github.com/jscruggs/mesortingc_fu.git' into submodule path 'vendor/plugins/mesortingc_fu' 

J’ai mon HTTP_PROXY mis en place:

 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 at-il eu des recherches HTTP pour travailler 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).

Vous pouvez également définir le proxy HTTP utilisé par Git dans la propriété de configuration globale http.proxy :

 git config --global http.proxy http://proxy.mycompany:80 

Il y a déjà de bonnes réponses à ce sujet. Cependant, je pensais que je serais intéressé car certains serveurs proxy vous demandent de vous authentifier avec un identifiant et un mot de passe. Parfois, cela peut être sur un domaine.

Ainsi, par exemple, si votre configuration de serveur proxy est la suivante:

 Server: myproxyserver Port: 8080 Username: mydomain\myusername Password: mypassword 

Ajoutez ensuite à votre fichier .gitconfig à 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 http et https, une seule entrée du fichier de configuration suffit.

Vous pouvez ensuite vérifier que la commande a ajouté l’entrée à votre fichier .gitconfig en cat .gitconfig :

A la fin du fichier, vous verrez une entrée comme suit:

 [http] proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080 

C’est tout!

Ce qui a finalement fonctionné était la http_proxy la variable d’environnement http_proxy . J’avais correctement défini HTTP_PROXY , mais git semble aimer la version minuscule.

On dirait que vous utilisez une compilation de Git sur Windows (ou peut-être une autre dont je n’ai pas entendu parler). Il y a des façons de déboguer ceci: Je crois que tout le travail de proxy HTTP pour git est 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.

Lorsque votre équipe réseau effectue une inspection ssl en réécrivant des certificates, puis en utilisant une URL http au lieu d’une URL, associée à la définition de cette variable, cela a fonctionné pour moi.

 git config --global http.proxy http://proxy:8081 

Si vous souhaitez simplement 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’ -c, --config 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" 

Vous pouvez également éditer le fichier .gitconfig situé dans le répertoire% userprofile% sur le système Windows ( notepad% userprofile% .gitconfig ) ou dans ~ directory sur le système Linux ( vi ~ / .gitconfig ) et append une section http comme ci-dessous.

Contenu du fichier .gitconfig:

 [http] proxy = http://proxy.mycompany:80 

Ceci est une ancienne question, mais si vous êtes sous Windows, envisagez également de définir HTTPS_PROXY si vous récupérez via une URL https. Travaillé pour moi!

Pour moi, le git: // ne fonctionne pas avec le proxy bien que le https: // le fasse. Cela a causé un peu de maux de tête parce que je exécutais des scripts qui utilisaient tous git: // donc je ne pouvais pas simplement les changer tous 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 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.

  1. Installez un tire – bouchon ou d’autres alternatives que vous souhaitez.
  2. Créez un fichier d’authentification. Le format pour authfile est: user_name:password , et user_name , password est 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 .

  3. Modifiez ~/.ssh/config et assurez-vous que sa permission est 644 : chmod 644 ~/.ssh/config

Prenez github.com comme exemple, ajoutez les lignes suivantes à ~/.ssh/config :

 Host github.com HostName github.com ProxyCommand /usr/local/bin/corkscrew   %h %p  User git 

Maintenant, chaque fois que vous faites quelque chose avec git@github.com , il utilisera automatiquement le proxy. Vous pouvez facilement faire la même chose avec Bitbucket .

Ce n’est pas si élégant que les autres approches, mais cela fonctionne comme un charme.

Sous Windows, si vous ne souhaitez pas placer votre mot de passe dans .gitconfig dans le texte brut, vous pouvez utiliser

Il vous authentifie contre le proxy Windows NTLM normal ou même 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 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 permissions 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 ce que c’est le premier résultat sur Google, cet article que j’ai trouvé résout le problème pour moi en mettant à jour les certificates curl.

http://www.simplicidade.org/notes/archives/2011/06/github_ssl_ca_errors.html

Configurer le proxy pour git

commander

 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: REBUILDING GIT WITH HTTP SUPPORT

Le protocole git: ne fonctionnait pas avec mon pare-feu d’entreprise.

Par exemple, cela a expiré:

 git clone git://github.com/miksago/node-websocket-server.git 

curl github.com fonctionne très bien, cependant, je sais que ma variable d’environnement http_proxy est correcte.

J’ai essayé d’utiliser http , comme ci-dessous, mais j’ai eu 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 recomstackr git comme ça:

 ./configure --with-curl --with-expat 

mais toujours eu l'erreur fatale.

Finalement, après plusieurs heures frustrantes, j'ai lu le fichier de configuration et j'ai vu ceci:

# Définir CURLDIR = / foo / bar si votre en-tête curl et vos fichiers de bibliothèque sont dans

# / foo / bar / include et / foo / bar / lib répertoires.

Je me suis alors souvenu que je n'avais pas respecté la curl depuis la source, et que je cherchais donc les fichiers d'en-tête. Bien sûr, ils n'étaient pas installés. C'était le problème. Make ne s'est pas plaint des fichiers d'en-tête manquants. Je n'ai donc pas réalisé que l'option --with-curl ne faisait rien (il s'agit en fait de la version par défaut de ma version de git ).

J'ai fait ce qui suit pour le réparer:

  1. 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). 
  2. Supprimé git de /usr/local (comme je veux que la nouvelle installation y vive).

    J'ai simplement supprimé git* de /usr/local/share et /usr/local/libexec

  3. Vous avez recherché les répertoires include contenant les fichiers d'en-tête curl et expat , puis (parce que j'avais lu configure ), vous les avez ajoutés à l'environnement de la manière suivante:

     export CURLDIR=/usr/include export EXPATDIR=/usr/include 
  4. Ran configure avec les options suivantes, qui, encore une fois, ont été décrites dans le fichier de configure lui-même, et étaient également les valeurs par défaut mais ce que diable:

     ./configure --with-curl --with-expat 
  5. Et maintenant, http fonctionne avec git via 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 ... 

Cela a fonctionné pour moi.

 git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port 

Ce n’est pas un problème avec votre proxy. C’est un problème avec github (ou git). Il échoue aussi pour moi sur git-1.6.0.1 sous Linux. Le bug est déjà signalé (par vous pas moins).

Assurez-vous de supprimer vos pasties, ils sont déjà sur Google. Edit: Doit avoir rêvé, je suppose que vous ne pouvez pas les supprimer. Utilisez Gist à la place?

$ http_proxy est pour http://github.com …. $ https_proxy est pour https://github.com

Pour les fenêtres

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 -> Options Internet -> Connexions -> Paramètres LAN

vous pouvez utiliser:

 git config --add http.proxy http://user:password@proxy_host:proxy_port 

Utiliser des proxychains

 proxychains git pull ... 

update: proxychains est abandonné, utilisez plutôt proxychains-ng .

J’ai contourné le proxy en utilisant https … certains proxy 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 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 nouveaux repos. Tout a bien fonctionné. Assurez-vous de procéder à une désinstallation propre et de réinstaller 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 USER qui est derrière proxy avec auth.

Ré-installation (d’abord échoué, 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 user / pass, utilisez url_encode

Comme @ user2188765 l’a déjà signalé, essayez de remplacer le protocole git:// du référentiel par http[s]:// . Voir aussi cette réponse

Définissez Git credential.helper sur wincred.

 git config --global credential.helper wincred 

Assurez-vous qu’il n’y a que 1 credential.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 

Maintenant, configurez le proxy sans mot de passe.

 git config --global http.proxy http://@proxy:80 

Vérifiez que tous les parameters que vous avez ajoutés sont corrects ….

 git config --global -l 

Maintenant, c’est bon d’y aller!