HTTP 프록시를 통해 Git 저장소에서 어떻게 가져 옵니까?


491

참고 : 설명 된 유스 케이스는 프로젝트에서 서브 모듈을 사용하는 것에 관한 것이지만 git cloneHTTP를 통한 저장소 의 일반에도 동일하게 적용됩니다 .

힘내 통제하에 프로젝트가 있습니다. 하위 모듈을 추가하고 싶습니다.

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

그러나 나는 얻는다

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

HTTP_PROXY를 설정했습니다.

c:\project> echo %HTTP_PROXY%
http://proxy.mycompany:80

http 프록시에 대한 전역 Git 설정도 있습니다.

c:\project> git config --get http.proxy
http://proxy.mycompany:80

프록시를 통해 일관되게 작업하기 위해 HTTP 패치를받은 사람이 있습니까? 정말 이상한 점은 GitHub의 일부 프로젝트가 제대로 작동 awesome_nested_set하지만 ( 예 : 레일) 다른 프로젝트는 계속 실패 한다는 것 입니다.


프록시가 단어 또는 무언가를 검열하여 바이트 스트림의 일부로 해당 단어가 표시되는 저장소에만 영향을 줄 수 있습니까?
pjz


4
@ alvaro, 프록시 서버로 git을 사용하는 것이이 질문의 가능한 복제품 이라는 것을 의미한다고 생각합니다 . 이 질문은 당신이 말하는 것보다 오래되었습니다.
Derek Mahar

2
@James, 프록시 서버에 대한 "전역"Git 설정은 실제로 전역이 아니라 로컬입니다. 글로벌이 되려면에 인수 --global를 제공해야 합니다 git config.
Derek Mahar

1
@DerekMahar 새로운 질문이 더 나은 품질 (또는보다 일반적으로 적용 가능한) 인 경우, 이전 질문은 새로운 질문의 복제본으로 마감 될 수 있습니다.
Raedwald

답변:


584

Git이 전역 구성 속성에서 사용하는 HTTP 프록시를 설정할 수도 있습니다 http.proxy.

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

프록시로 인증하려면

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

( 인증 형식 은 Credit이 @EugeneKulabuhov@JaimeReynoso 로 이동 합니다.)


8
이것은 나를 위해 일했습니다 : 사용자 환경 (Windows의 경우)에서 HTTP_PROXY를 설정 한 다음 위의 주석은 $ HTTP_PROXY (대문자)로 설정하십시오. 이 솔루션의 +1
Sean Aitken 2016 년

4
CleverCoder는 Windows에서 $ HTTP_PROXY가 아닌 % HTTP_PROXY %를 지정해야합니다 (물론 Cygwin을 실행하지 않는 한). 유닉스 환경 대신 Windows에서 작동하도록 답변을 편집합니다.
Derek Mahar

7
프록시의 사용자 이름과 비밀번호는 어디에 두어야합니까?
Duna

26
사용 git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080구문은 사용자 이름 / 암호를 제공합니다
유진 Kulabuhov에게

2
프록시에 문제가있는 사람은 http : // <UserID> : <Password> @ <ProxyURL> : <Port> / 나를 위해 일했습니다
Jaime Reynoso

146

이미 이것에 대한 좋은 답변이 있습니다. 그러나 일부 프록시 서버에서는 사용자 ID와 비밀번호로 인증해야하므로 칩인이 필요하다고 생각했습니다. 때때로 이것은 도메인에있을 수 있습니다.

예를 들어 프록시 서버 구성이 다음과 같은 경우

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

그런 .gitconfig다음 다음 명령을 사용 하여 파일에 추가하십시오 .

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

걱정하지 마십시오 https. 지정된 프록시 서버가 http 및 https를 지원하는 한 구성 파일의 한 항목으로 충분합니다.

그런 다음 다음을 수행하여 명령이 .gitconfig파일에 항목을 추가했는지 확인할 수 있습니다 cat .gitconfig.

파일의 끝에 다음과 같은 항목이 표시됩니다.

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

그게 다야!


흥미 롭군 100 %의 "델타 해결"부분에 도달 할 수 있지만 복제 프로세스가 중단 된 것처럼 보입니다. 누구든지 그것을 경험 했습니까?
로마


@apoplexy 당신은 내가 고려할 수 있도록하시기 바랍니다 귀하의 제안 편집에 댓글을 달 수
최대 MacLeod는

3
사용자 이름 또는 비밀번호에 @ 기호가 있으면 URL로 인코딩 %40하면 작동합니다.
Adarsha

3
cat .gitconfig 대신 git config --list
user3969377을

125

마지막으로 효과가 있었던 것은 http_proxy환경 변수를 설정하는 것이 었습니다 . 나는 HTTP_PROXY올바르게 설정 했지만 git은 분명히 소문자 버전을 더 좋아합니다.


3
설정합니까 http.proxy글로벌 망할 놈의 구성 작업에? 귀하의 질문에, 당신 http.proxy은 로컬 저장소 구성에서 설정합니다.
Derek Mahar

22
제 경우에는https_proxy
M Smith

1
https.proxy내가 github를 통해 https를 사용하면서 나를 위해 일하는 것 같았습니다
Shervin Asgari

3
@MSmith 설정해야한다면 어떤 질문에 관한 것이 아님 을 https_proxy의미합니다 . httpshttp
Piotr Dobrogost

3
컬과 libcurl은 대문자 HTTP_PROXY와 HTTPS_PROXY를 인식하지 못합니다. 자세한 내용은 다음 링크를 참조하십시오. curl.haxx.se/mail/archive-2001-12/0034.html
Doug

49

Windows에서 Git의 mingw 컴파일을 사용하고있는 것 같습니다 (또는 내가 듣지 못한 다른 것). 이것을 디버깅하는 방법이 있습니다 : git에 대한 모든 http 프록시 작업은 curl에 의해 수행된다고 생각합니다. git을 실행하기 전에이 환경 변수를 설정하십시오 :

GIT_CURL_VERBOSE=1

이것은 적어도 당신에게 무대 뒤에서 무슨 일이 일어나고 있는지에 대한 아이디어를 제공해야합니다.


7
이 환경 변수를 추가하면 msysgit은 추가로 아무것도 출력하지 않습니다. :(
Andrew Arnott

한동안 프록시와 싸운 후에이 팁을 통해 curl의 인증서 데이터베이스가 누락 / 메시되었고 요청이 실패한 이유를 알 수있었습니다.
davenpcj

나는 이것을 얼마 동안 찾고 있었다. 감사.
M Smith

40

지정된 리포지토리에서 프록시를 사용하려면 다른 리포지토리가 필요하지 않습니다. 바람직한 방법은 리포지토리 의 -c, --config <key=value>옵션 git clone입니다. 예 :

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"

이것은 이상합니다. $ http_proxy를 설정하려고 시도했지만 git은 그것을 존중하지 않았습니다. 그것은 자신의 설정에만 관심이있는 것 같습니다 ...
weberc2

공장. --config예를 들어 설정할 때와 같이 여러 번 지정할 수도 있습니다 https.proxy.
barfuin

감사! 내가 찾던 것
Boyang

2
프록시 구성을 사용하지만 사용자의 프록시 구성을 변경하지 않고 복제합니다. 정확히 내가 필요한 것! 고마워.
doom

26

네트워크 팀이 인증서를 다시 작성하여 SSL 검사를 수행 한 경우 https URL 대신 http URL을 사용 하고이 var 설정을 사용하면 나에게 도움이되었습니다.

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

2
네트워크 환경에서 트래픽을 검사하기 위해 제공하는 다시 작성된 인증서를 수락하도록 환경에 추가 할 수도 있습니다. export GIT_SSL_NO_VERIFY = true
bbaassssiiee

나를 위해 완벽하게 일했습니다. 감사. 방금 git config --global http.proxy proxy : 8081 을 추가해야했습니다 .git config --global https.proxy proxy : 8081
Sid

간단하고 빠른 솔루션,이 답변에 +1.
워커

1
@sethbc, @datasmid에게 감사합니다! 디버깅하려면 GIT_CURL_VERBOSE = 1이 필요하고 확인을 건너 뛰려면 GIT_SSL_NO_VERIFY = true가 필요했습니다.
Henry Rivera

나와 함께 일하지 않습니다. 조차 GIT_SSL_NO_VERIFY var에로
keinabel

20

당신도 할 수 편집 .gitconfig 파일은 Windows 시스템에서 % USERPROFILE % 디렉터리에 위치 ( 메모장 % USERPROFILE % .gitconfig ) 또는 리눅스 시스템 (에 ~ 디렉토리에있는 VI ~ / .gitconfig )와 HTTP에 섹션을 추가 아래로.

.gitconfig 파일의 내용 :

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

20

나를 위해 git : //는 프록시를 통해 작동하지 않지만 https : //는 작동합니다. 모두 git : //를 사용하는 스크립트를 실행했기 때문에 약간의 두통이 발생했기 때문에 모든 것을 쉽게 변경할 수 없었습니다. 그러나 나는이 GEM을 발견했다.

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

감사합니다, 이것은 많은 도움이되었습니다
dgrat

git : //에서 가져 오는 데 문제가 있음을 알고 있습니다. SSH 키 문제를 고려 했습니까? 내 문제는 잘못된 SSH 키 구성으로 인한 것입니다.
avazula

17

이것은 오래된 질문이지만 Windows를 사용하는 경우 https URL을 통해 검색하는 경우 HTTPS_PROXY 설정을 고려하십시오. 나를 위해 일했다!


2
https_proxy필자의 경우 (Windows XP의 경우 msysgit) 환경 변수 만 설정하면 충분합니다 (git global 또는 repo proxy 옵션 세트 없음).
Piotr Dobrogost

13

인증 된 http 프록시를 찾지 http.proxyGIT_PROXY_COMMAND작동 하지 않습니다 . 프록시는 어떤 식 으로든 트리거되지 않습니다. 그러나이 문제를 해결할 수있는 방법을 찾으십시오.

  1. corkscrew 또는 원하는 다른 대안을 설치하십시오 .
  2. 인증 파일을 작성하십시오. 형식 authfile은 : user_name:passworduser_name이며 password프록시에 액세스하기위한 사용자 이름 및 비밀번호입니다. 이러한 파일을 작성하려면 다음과 같이 명령을 실행하십시오 echo "username:password" > ~/.ssh/authfile.

  3. 편집 ~/.ssh/config하고 권한이 644다음 과 같은지 확인하십시오 .chmod 644 ~/.ssh/config

github.com을 예로 들어 다음 행을 추가하십시오 ~/.ssh/config.

Host    github.com
        HostName        github.com
        ProxyCommand    /usr/local/bin/corkscrew <your.proxy> <proxy port> %h %p <path/to/authfile>
        User            git

이제로 작업을 수행 할 때마다 git@github.com프록시가 자동으로 사용됩니다. Bitbucket 에서도 동일한 작업을 쉽게 수행 할 수 있습니다 .

이것은 다른 접근 방식만큼 우아하지는 않지만 매력처럼 작동합니다.


1
2 단계에서 "authfile 작성"을 자세히 설명해 주시겠습니까? 귀하의 접근 방식이 git : // urls에서 작동하는 유일한 것 같습니다.
nik

@NikBagdon 2 단계에 자세한 내용을 추가했습니다. 불분명 한 것이 있으면 알려주세요.)
Carlosin

11

Windows에서 비밀번호를 일반 텍스트로 .gitconfig에 넣지 않으려면 다음을 사용할 수 있습니다.

일반 또는 Windows NTLM 프록시에 대해 사용자를 인증하고 인증없이 localhost-proxy를 시작합니다.

실행하려면 :

  • Cntml 설치
  • 프록시 인증을 통과하도록 설명서에 따라 Cntml 구성
  • 자식을 새 로컬 호스트 프록시로 지정하십시오.

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

2
그만한 가치가 있기 때문에, 이것은 받아 들여진 대답이어야합니다. 그는 창문에 있습니다. 투명한 프록시는 없습니다 (그렇지 않으면 문제가 없을 것입니다)
booyaa

9

나를 위해 일한 것은 다음과 같습니다.

sudo apt-get install socat

다음을 사용하여 $ BIN_PATH / gitproxy 내에 파일을 작성하십시오.

#!/bin/sh 
_proxy=192.168.192.1 
_proxyport=3128 
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport

실행 권한을 부여하는 것을 잊지 마십시오

chmod a+x gitproxy

다음 명령을 실행하여 환경을 설정하십시오.

export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy

1
설명 (mini-) 스크립트에 대한 설명과 요점 링크 : emilsit.net/blog/archives/…
Karl Richter

이 답변은 git://프로토콜 URL, https를 지원하지 않는 (희귀 한) git 서버에서 작동하는 유일한 답변입니다 . 적절한 배치 파일 및 창에 대한 socat과 함께 창에서도 작동합니다.
davenpcj

8

git에 프록시 설정

명령

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

git config --global http.proxy http://clairton:123456@proxy.clairtonluz.com.br:8080

7

Git credential.helper를 wincred로 설정하십시오.

git config --global credential.helper wincred

자격 증명이 하나만 있는지 확인하십시오.

git config -l

1 이상이 있고 wincred로 설정되지 않은 경우 제거하십시오.

git config --system --unset credential.helper

이제 비밀번호없이 프록시를 설정하십시오.

git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80

추가 한 모든 설정이 제대로 표시되는지 확인하십시오 ....

git config --global -l

이제 잘 가세요!


6

약간 다른 수정 사항으로 동일한 문제가 발생했습니다. HTTP 지원으로 GBU 재 구축

git:프로토콜은 내 회사 방화벽을 통해 작동하지 않았다.

예를 들어 시간이 초과되었습니다.

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

curl github.com그래도 잘 작동하므로 내 http_proxy환경 변수가 올바른지 알고 있습니다.

http아래와 같이을 사용해 보았지만 즉시 오류가 발생했습니다.

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

->>>  fatal: Unable to find remote helper for 'http' <<<-

git을 다시 컴파일하려고 시도했습니다.

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

그러나 여전히 치명적인 오류가 발생했습니다.

마지막으로 몇 시간 동안 실망한 후 구성 파일을 읽고 이것을 보았습니다.

# curl 헤더와 라이브러리 파일이 있으면 CURLDIR = / foo / bar를 정의하십시오.

# / foo / bar / include 및 / foo / bar / lib 디렉토리

그때 나는 curl소스를 따르지 않았기 때문에 헤더 파일을 찾았다 는 것을 기억했습니다 . 물론 설치되지 않았습니다. 그게 문제였습니다. 누락 된 헤더 파일에 대해 Make가 불평하지 않았습니다. 그래서 나는 --with-curl옵션이 아무것도 하지 않았다는 것을 몰랐다 (사실 내 버전의 기본값 임 git).

나는 그것을 고치기 위해 다음을했다.

  1. make에 필요한 헤더를 추가했습니다.

    yum install curl-devel
    (expat-devel-1.95.8-8.3.el5_5.3.i386  was already installed).
    
  2. 새 설치를 유지하기 위해 제거 git했습니다 /usr/local.

    나는 단순히 제거 git*에서 /usr/local/share/usr/local/libexec

  3. curlexpat헤더 파일을 포함하는 포함 디렉토리를 검색 한 다음 (내가 읽었 기 때문에 configure) 다음과 같이 환경에 추가했습니다.

    export CURLDIR=/usr/include 
    export EXPATDIR=/usr/include
    
  4. configure, 다시에 설명 된 다음 옵션과 configure도 기본값하지만 도대체 파일 자체, 그리고했다 :

    ./configure  --with-curl --with-expat
    
  5. 이제 회사 방화벽 httpgit통해 작동합니다 .

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

이걸 앞으로
내놓게되어 기쁘다


5

이것은 나에게 효과가 있었다.

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

3

당신이 사용할 수있는:

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


2

Windows의 경우

이동-> C : / Users / user_name / gitconfig

아래 세부 사항으로 gitconfig 파일 업데이트

[http]

[https]

proxy = https://your_proxy:your_port

[http]

proxy = http://your_proxy:your_port

프록시 및 포트 번호를 확인하는 방법은 무엇입니까?

Internet Explorer-> 설정-> 인터넷 옵션-> 연결-> LAN 설정


2

아래 방법은 저에게 효과적입니다.

echo 'export http_proxy=http://username:password@roxy_host:port/' >> ~/.bash_profile
echo 'export https_proxy=http://username:password@roxy_host:port' >> ~/.bash_profile
  • Zsh 참고 : ~ / .bash_profile 대신 ~ / .zshenv 파일을 수정하십시오.
  • Ubuntu 및 Fedora 참고 : ~ / .bash_profile 대신 ~ / .bashrc 파일을 수정하십시오.

2

언급 가치 : 그물 쇼에있는 대부분의 예 와 같은 예

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

따라서 프록시에 인증이 필요한 경우 다음을 수행 해야합니다. 힘내-설정에 회사 비밀번호를 둡니다. 정말 시원하지 않습니다.

그러나 비밀번호없이 사용자를 구성하는 경우 :

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

힘내 (적어도 자격 증명 도우미가없는 내 Windows 컴퓨터에서)는 그것을 인식하고 repo-access시 프록시 암호를 묻는 메시지를 표시합니다.


내 sso 회사 사용자 이름과 비밀번호에 인코딩 및 처리가 불가능한 많은 특수 심볼이 있으므로 귀하는 내 사람입니다. 이 "escamotage"를 사용하여 프록시 주소를 설정 한 후 복제 얼굴 또는 다른 다음 단계에서 암호를 제공 할 수있었습니다.
Carmine Tambascia

1

프록시에는 문제가 없습니다. github (또는 git)에 문제가 있습니다. Linux의 git-1.6.0.1에서도 실패합니다. 곤충 가 이미보고되었습니다 (더 이상).

Pasties는 이미 Google에 있습니다. 편집 : 꿈을 꾸었어야합니다. 삭제 할 수없는 것 같습니다. 사용 요점 대신?


나는 github와 msysGit에 게시했지만 b / c 문제가 어디에 있는지 확실하지 않았습니다. 불행히도 페이스트리를 삭제할 수 없습니다.
James A. Rosen


1

위의 답변은 프록시가 인증이 필요하지 않을 때 효과적이었습니다. 인증이 필요한 프록시를 사용하는 경우 CCProxy를 시도 할 수 있습니다. 여기에 설정하는 방법에 대한 작은 자습서가 있습니다.

http://blog.praveenkumar.co.in/2012/09/proxy-free-windows-xp78-and-mobiles.html

나는 새로운 저장소를 밀고 당기고 만들 수 있었다. 모든 것이 잘 작동했습니다. 내가했던 것처럼 Git에 문제가 발생하면 완전히 제거하고 새 버전을 다시 설치하십시오.


1

@ user2188765가 이미 지적했듯이 git://리포지토리 의 프로토콜을로 바꾸십시오 http[s]://. 이 답변 참조


0

https를 사용하여 프록시를 둘러 보았습니다 ... 일부 프록시는 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

이것은 많은 사람들이 대답했지만 이것은 Winodws를 위한 것입니다. auth로 프록시 뒤에있는 USER 전용입니다.

다시 설치 (먼저 실패했습니다. 제거하지 마십시오).

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"

사용자 / 패스에 특수 문자가 있으면 url_encode를 사용 하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.