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).

449
demandé sur kenorb 2008-09-24 19:58:32

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
529
répondu Derek Mahar 2016-11-30 15:18:40

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!

142
répondu Max MacLeod 2014-01-16 14:25:54

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.

114
répondu James A. Rosen 2015-07-11 16:56:41

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.

45
répondu sethbc 2008-09-24 16:24:51

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
24
répondu bbaassssiiee 2013-03-11 15:34:02

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"
20
répondu alijandro 2014-12-24 01:45:28

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
18
répondu STB Land 2012-10-19 08:35:10

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!

15
répondu Benjamin Wootton 2011-04-19 11:51:04

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/
13
répondu TonyT_32909023190 2017-05-18 09:53:40

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.

  1. Installer tire-bouchon , ou d'autres alternatives que vous voulez.
  2. créer un fichier authfile. Le format pour authfile est: user_name:password , et user_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 .

  3. Edit ~/.ssh/config , et assurez-vous que sa permission est 644 : 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.

11
répondu Carlosin 2015-03-26 03:55:53

Sur Windows, si vous ne voulez pas mettre votre mot de passe .gitconfig dans le texte simple, vous pouvez utiliser

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
    
10
répondu Boris Brodski 2014-02-20 09:46:31

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
6
répondu Lesswire 2015-04-09 09:23:59

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

5
répondu RishiD 2011-08-26 14:56:53

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
4
répondu Clairton Luz 2016-11-24 13:21:17

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:

  1. 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).
    
  2. 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

  3. a recherché les dires include contenant les fichiers d'en-tête curl et expat , puis (parce que j'avais lu configure ) ajoutés à l'environnement comme suit:

    export CURLDIR=/usr/include 
    export EXPATDIR=/usr/include
    
  4. Couru configure avec les options suivantes, qui, rappelons-le, ont été décrits dans le configure fichier lui-même, et ont aussi des défauts, mais ce que le diable:

    ./configure  --with-curl --with-expat
    
  5. Et maintenant http travaille avec git à 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
    ...
    
3
répondu steve98177 2015-06-27 13:42:18

ça m'a fait du bien.

git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port
3
répondu Vagner Nogueira 2016-10-24 06:32:53

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?

1
répondu sethbc 2008-09-24 19:40:19

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

1
répondu jimagic 2013-04-19 07:27:36

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

1
répondu School Boy 2016-02-02 08:50:06

vous pouvez utiliser:

git config --add http.proxy http://user:password@proxy_host:proxy_port
1
répondu montells 2017-02-21 17:29:37

Use proxychains

proxychains git pull ...

mise à jour: proxychains est interrompu, usage proxychains-ng à la place.

1
répondu fangxing 2017-05-07 08:08:18

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!

1
répondu Thor88 2018-08-15 23:31:30

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
0
répondu Rob Koch 2014-04-14 13:17:28

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.

0
répondu Praveen 2014-06-27 15:45:08

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

0
répondu Ravi Parekh 2017-03-20 10:18:14

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

0
répondu DomTomCat 2017-05-23 12:10:32