web-dev-qa-db-fra.com

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

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 contrôle 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 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 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 échouent systématiquement ( Rails par exemple).

472
James A. Rosen

Ce qui a finalement fonctionné a été de définir la variable d’environnement http_proxy. J'avais réglé correctement HTTP_PROXY, mais git semble préférer la version minuscule.

121
James A. Rosen

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 vous authentifier avec le proxy:

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080/

(Le crédit va à @ EugeneKulabuhov et à @ JaimeReynoso pour le format d'authentification.)

562
Derek Mahar

Il y a 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 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 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 dans votre fichier .gitconfig en exécutant cat .gitconfig:

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

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

C'est ça!

145
Max MacLeod

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

48
sethbc

Si vous souhaitez simplement utiliser un proxy sur un référentiel spécifié, inutile d’avoir recours à d’autres référentiels. Le moyen 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"
30
alijandro

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
26
bbaassssiiee

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 ~ du système Linux ( vi ~/.gitconfig ) et ajoutez une section http comme ci-dessous.

Contenu du fichier .gitconfig:

[http]
        proxy = http://proxy.mycompany:80
19
STB Land

C'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!

16
Benjamin Wootton

Pour moi, le git: // ne fonctionne tout simplement pas avec le proxy, mais le https: // le fait. 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 petit bijou

git config --global url."https://github.com/".insteadOf git://github.com/
15
TonyT_32909023190

Je ne trouve ni http.proxy ni GIT_PROXY_COMMAND 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.

  1. Installez tire-bouchon , ou une autre solution de votre choix.
  2. Créez un authfile. Le format de 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. Éditez ~/.ssh/config et assurez-vous que son autorisation 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 <your.proxy> <proxy port> %h %p <path/to/authfile>
        User            git

Maintenant, chaque fois que vous faites quelque chose avec [email protected], il utilisera automatiquement le proxy. Vous pouvez facilement faire la même chose pour Bitbucket .

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

11
Carlosin

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

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 selon la documentation pour passer votre authentification proxy
  • Pointez git sur votre nouveau proxy localhost:

    [http]
        proxy = http://localhost:3128       # change port as necessary
    
10
Boris Brodski

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

Ne pas oublier 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
6
Lesswire

Configurer le proxy sur git

commander

git config --global http.proxy http://user:password@domain:port

exemple

git config --global http.proxy http://clairton:[email protected]:8080
5
Clairton Luz

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

5
RishiD

Cela a fonctionné pour moi.

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

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 en a plus d'un et qu'il n'est pas configuré pour le supprimer, supprimez-le.

git config --system --unset credential.helper

Maintenant, configurez 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 vous êtes prêt à partir!

3
Thor88

J'ai eu le même problème, avec un correctif légèrement différent: REBUILDING GIT WITH HTTP SUPPORT

Le protocole git: ne fonctionnait pas avec le pare-feu de mon entreprise.

Par exemple, cela 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 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 recompiler git comme ceci:

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

mais toujours 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 les répertoires/foo/bar/lib.

Je me suis alors rappelé que je ne m'étais pas conformé curl de la source et que j'ai donc cherché 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. Je n’avais donc pas réalisé que l’option --with-curl ne faisait rien (c’est en fait la valeur par défaut dans 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. Suppression de git de /usr/local (car je veux que la nouvelle installation y habite).

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

  3. A recherché les répertoires d'inclusion contenant les fichiers d'en-tête curl et expat, puis (parce que j'avais lu configure), les a 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 configure, et constituaient également les valeurs par défaut, mais bon sang:

    ./configure  --with-curl --with-expat
    
  5. Et maintenant, http fonctionne avec git à travers le pare-feu de mon 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
steve98177

Utilisez proxychains

proxychains git pull ...

update: proxychains est abandonné, utilisez proxychains-ng à la place.

2
fangxing

vous pouvez utiliser:

git config --add http.proxy http://user:password@proxy_Host:proxy_port
2
montells

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 pas 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 Gist à la place?

1
sethbc

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

1
jimagic

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 réseau

1
School Boy

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

0
Praveen

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
0
Robert Koch

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

0
DomTomCat

Comme cela a été répondu par beaucoup mais ceci est juste pour Winodws UTILISATEUR qui est derrière un proxy avec auth.

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:[email protected]:8080"

si vous avez un caractère spécial dans user/pass, utilisez rl_encode

0
Ravi Parekh