2009-01-30 42 views
44

Tôi đã có msysGit (Git trên Windows) hoạt động tốt trên máy tính ở nhà, nhưng tại nơi làm việc, nơi chúng tôi ở phía sau proxy Microsoft ISA, tôi nhận được lỗi sau khi tôi làm một clone git:Lỗi Git: gây tử vong: không thể kết nối ổ cắm (đối số không hợp lệ)

H:\>git clone git://github.com/akitaonrails/vimfiles.git 
Initialized empty Git repository in H:/vimfiles/.git/ 
github.com[0: 65.74.177.129]: errno=Invalid argument 
fatal: unable to connect a socket (Invalid argument) 

tôi đã cố gắng thiết lập các biến môi trường http_proxy tới:

http://our-proxy-server:8088 

tôi đã thiết lập các chỉ thị git cấu hình http.proxy:

git config --global http.proxy http://our-proxy-server:8088 

Cả hai điều trên đều không tạo ra sự khác biệt.

Làm một clone git với http:// thay vì git:// mang này:

H:\>git clone http://github.com/akitaonrails/vimfiles.git 
Initialized empty Git repository in H:/vimfiles/.git/ 
fatal: http://github.com/akitaonrails/vimfiles.git/info/refs download error - The requested URL returned error: 407 

407 là tất nhiên lỗi xác thực.

Vì vậy, câu hỏi của tôi là: có ai quản lý để có được git làm việc từ phía sau một proxy, đặc biệt là một proxy ISA? Tôi không biết liệu nó có đáng để làm điều này không. Bất kỳ trợ giúp rất nhiều đánh giá cao.

Cảm ơn!

+0

chỉ thêm một sửa chữa tiềm năng – VonC

+0

Cảm ơn bạn đã phản hồi. Tôi lấy nó bây giờ bạn có một Git1.6.4? – VonC

Trả lời

54

Tôi đã gặp lỗi tương tự; nhưng ~/.gitconfig global config file là chìa khóa.

Nếu bạn có một proxy với xác thực bạn cần phải đặt trong nó:

git config --global http.proxy http://login:[email protected]:8088 

Và nó chỉ hoạt động (với 'git clone http:')

Ví dụ về một blog chi tiết thiết lập giống nhau: GIT clone over HTTP: who knew?


Nếu vẫn không thành công trong 407, có thể liên quan đến sự cố với git-fetch losing authentication tokens on the second HTTP GET. Có thể cần more recent version of libcurl.


Cập nhật tháng 1 năm 2011: jbustamovej đề cập trong his answer (upvoted) bài viết trên blog của mình "GitHub Behind Corporate Proxy", mà thêm này:

It’s important to note that if your login has a backslash, as in domain\login , you must escape the backslash, as in:

git config --global http.proxy http://domain\\\login:[email protected]:8088 
+1

Cảm ơn lời khuyên, nhưng tôi không thể làm việc này. Nó vẫn cho tôi một lỗi 407 (xác thực) mặc dù tôi đã thiết lập proxy (hoàn thành với tên người dùng và mật khẩu) trong cả môi trường và .gitconfig. –

+0

Tôi chỉ thử lại lần nữa, vì msysGit đã được cập nhật và nó hoạt động.Tiếng hoan hô! Tôi đoán libcurl phải được cập nhật trong phiên bản mới nhất. –

+0

Charles, bạn có phiên bản nào? Với phiên bản mới, bạn đặt cấu hình proxy ở đâu? Tôi nhận được cùng một vấn đề và tôi đã thử rất nhiều cách cư xử. –

3

Bạn có SOCKS proxy không? Nếu bạn có, bạn caould hãy thử FreeCap để kích hoạt kết nối git của bạn. Tôi đã sử dụng git theo cách này trong một thời gian.

Nếu không, hãy thử FreeCap. IIRC nó có thể có thể sử dụng http proxy, nhưng tôi đã không cố gắng đó.

EDIT: Tôi thường đánh số cmd.exe sử dụng FreeCap và từ đó trở đi (gần như) tất cả các chương trình cmdline mà tôi bắt đầu từ phiên đó cũng được đánh số. Đó là lý do tại sao tôi đề nghị Free Cap, vì SocksCap (một giải pháp thay thế khác) không hoạt động theo cách đó.

Đối với việc sử dụng http.proxy, vì lý do nào đó không bao giờ làm việc cho tôi với phiên bản mingw và proxy http công ty của tôi.

+1

Cảm ơn vì điều này, FreeCap trông thú vị. Bạn có thể giải thích về cách bạn đang sử dụng Git với nó không? –

2

tôi đã quản lý để có được nó làm việc thông qua một lộ trình rất phức tạp. Đây là cách:

  1. Tôi đã OpenSSH chạy trên máy chủ của tôi (một hộp Vista) running under Cygwin
  2. Tôi đang sử dụng Bitvise Tunnelier của Dynamic tunneling via integrated SOCKS/HTTP CONNECT proxy.
  3. Sau đó, tôi sử dụng Freecap (cảm ơn Marko) để "SOCKify" GIT-GUI. Thật không may, bạn phải thiết lập từng .exe riêng lẻ và chạy chúng từ bên trong Freecap, vì vậy bạn không thể SOCKify tất cả các công cụ dòng lệnh git. Bạn có thể thiết lập các lệnh dòng lệnh rõ ràng trong Freecap, nhưng bạn phải thiết lập từng lệnh riêng lẻ, loại đánh bại mục đích đó. Đây là lý do tại sao tôi chỉ thiết lập GIT-GUI trong hệ thống phức tạp điên rồ này

Thật ngạc nhiên, có vẻ như nó hoạt động, mặc dù tôi chưa thử nghiệm mọi thứ. Nó sẽ nhân bản, chắc chắn, đó là một sự khởi đầu.

Nếu có ai có giải pháp tốt hơn, tôi là tất cả các tai.

19

Ngay cả sau khi định cấu hình proxy, bạn có thể không kết nối được vì proxy không cho phép lưu lượng giao thức git. Trong trường hợp này, bạn có thể muốn thử sử dụng "http" thay vì "git"

H:>git clone http://github.com/akitaonrails/vimfiles.git

Ngoài ra, nếu bạn đang sử dụng một tập tin cấu hình ủy nhiệm tự động (pac), chỉ cần mở nó trong một trình soạn thảo văn bản. Nó là khá dễ dàng để theo dõi ngôn ngữ kịch bản, với một loạt các điều kiện để tái trực tiếp đến proxy hiệu quả nhất. Tìm một cái cho phép lưu lượng thông thường (thông thường, proxy được cấu hình lần cuối) và cấu hình nó như đã đề cập trong phần bình luận ở trên.

+1

Tuyệt vời! tôi đã có một vấn đề tương tự với git, nó đã đưa ra lỗi này "Không thể kết nối với ổ cắm (không có lỗi)". Tôi đã cấu hình http: proxy --global của mình và tôi đã sử dụng http thay vì git khi nhân bản và nó hoạt động. – gath

+0

Đây chính xác là vấn đề của tôi. Tôi không phải bận tâm với những thứ proxy. –

+0

Rõ ràng, điều này chỉ hoạt động cho repo git được lưu trữ thông qua http. I E. nó sẽ làm việc cho repos github.com. Đối với những người khác, bạn sẽ cần phải git làm việc thông qua tường lửa/proxy của bạn – shiva

0

Tôi có vấn đề này trên windows7:

$ git clone git://github.com/facebook/php-sdk.git 
Initialized empty Git repository in c:/Users/Jay/temp/php-sdk/.git/ 
github.com[0: 207.97.227.239]: errno=No error 
fatal: unable to connect a socket (No error) 

Cuối cùng nhận ra đó là AVG chống phần mềm diệt virus đang chạy. Tôi vô hiệu hóa "lá chắn cư dân" trong AVG và hoạt động như một sự quyến rũ bây giờ.

$ git clone git://github.com/facebook/php-sdk.git 
Initialized empty Git repository in c:/Users/Jay/temp2/php-sdk/.git/ 
remote: Counting objects: 223, done. 
remote: Compressing objects: 100% (179/179), done. 
emote: Total 223 (delta 84), reused 0 (delta 0) 
Receiving objects: 100% (223/223), 37.32 KiB, done. 
Resolving deltas: 100% (84/84), done. 
1

Python 2.7 và ntlmaps làm việc cho tôi sau khi nhận được 407 lỗi và rác khác từ GitHub.

.gitconfig:

[http] 
     proxy = http://127.0.0.1:5865 
1

Đây là những gì làm việc cho tôi:

git config --global http.proxy http://login:[email protected]_SERVER:PORT 
git config --global http.sslVerify false 
Các vấn đề liên quan