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).
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.
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.)
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!
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.
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"
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 ~ du système Linux ( vi ~/.gitconfig ) et ajoutez une section http comme ci-dessous.
Contenu du fichier .gitconfig:
[http]
proxy = http://proxy.mycompany:80
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!
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/
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.
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
.
É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.
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:
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
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
git config --global http.proxy http://user:password@domain:port
git config --global http.proxy http://clairton:[email protected]:8080
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
Cela a fonctionné pour moi.
git config --global http.proxy proxy_user:proxy_passwd@proxy_ip: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 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!
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:
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).
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
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
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
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
...
Utilisez proxychains
proxychains git pull ...
update: proxychains est abandonné, utilisez proxychains-ng à la place.
vous pouvez utiliser:
git config --add http.proxy http://user:password@proxy_Host:proxy_port
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?
$ 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 réseau
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.
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
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
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