Cách chuyển đổi `git:` url sang` http: `url


139

Tôi đang làm việc đằng sau một proxy http. Tôi đang cố gắng sao chép cây nguồn của Android bằng công cụ "repo" của họ.

Công cụ này khăng khăng sử dụng git://URL, mặc dù http://URL cũng hoạt động. Do đó, tôi không thể tải xuống nguồn.

Có thể buộc gitphải luôn luôn sử dụng http?

Chỉnh sửa: http_proxy của tôi được cấu hình đúng. Ví dụ, điều này hoạt động:

git clone http://android.git.kernel.org/platform/manifest.git

Nhưng điều này không (errno = Đã hết thời gian kết nối):

git clone git://android.git.kernel.org/platform/manifest.git

Vì vậy, câu trả lời này không thực sự giúp tôi.


Câu trả lời:


297

Đây là một ví dụ về việc viết lại giao thức mặc định cho GitHub:

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

Tài liệu Git cho url.<base>.insteadOf:

git config [--global] url.<base>.insteadOf <other_url>

Bất kỳ URL nào bắt đầu bằng giá trị này sẽ được viết lại để bắt đầu, thay vào đó, bằng <base>. Khi có nhiều hơn một chuỗi thay thế khớp với một URL nhất định, kết quả khớp dài nhất sẽ được sử dụng.


19
giúp khi tường lửa chặn giao thức git! :)
Wojtek Turowicz

Tôi có thể hỏi một câu hỏi ở đây? Tôi đã sử dụng cái này nhưng đã viết "heeps" thay vì "https". Làm thế nào tôi có thể sửa điều này? Có 'git config --global.url. github.com/.insteadOf heeps: //github.com/ 'làm việc?
Xuxu

1
Mẹo: git remote -vngay lập tức cho thấy ảnh hưởng của insteadOfpushInsteadOfconfigs
Beni Cherniavsky-Paskin

Điều này làm việc cho tôi trong WiFi công cộng với 22 cổng bị chặn. Làm thế nào cấu hình có thể được hoàn nguyên về mặc định?
yivo

14
Câu trả lời này gần như đã làm cho tôi, ngoại trừ kho lưu trữ của tôi đang sử dụng git@github.com:...định dạng cho các url. Điều này làm việc: git config --global url."https://github.com/".insteadOf 'git@github.com:'cho tôi.
kraenhansen

35

Tôi không biết công cụ repo này sử dụng Git như thế nào (và nếu bạn có thể định cấu hình 'repo' để sử dụng giao thức http), nhưng bạn có thể thử lừa nó bằng url.<base>.insteadOfbiến cấu hình (xem các trang hướng dẫn git-configgit-fetch ).

Bạn đã thử sử dụng core.gitProxyđể vượt qua tường lửa, nếu đó là vấn đề với việc sử dụng giao thức git?


2
Cảm ơn, biến "thay thế" này chính xác là những gì tôi cần.
noamtm

23

Tôi đã có vấn đề tương tự với việc đệ quy các mô đun con trong kho lưu trữ git. Tôi đứng sau một tường lửa điên rồ không cho phép kết nối đi trên cổng git. Một số mô hình con của mô hình con được mã hóa là git://github.com/blah/blah.git. Điều này đã giết chết dân số đệ quy của tôi. Cách giải quyết như sau:

git config --global url."https://<GITUSERNAME>@".insteadOf git://

Điều này thay thế git://bằng https://<GITUSERNAME>@trong tất cả các URL kho lưu trữ mô hình con. Bạn cần thay thế <GITUSERNAME>bằng tên người dùng git của riêng bạn. Cũng lưu ý rằng --globalcần thiết; chỉ cần thêm cấu hình này vào thư mục kho lưu trữ cơ sở không hoạt động.


3
Bạn không chỉ sử dụng git config --global url. "Https: //" .insteadOf git: // như được hiển thị ở đây? github.com/angular/angular-phonecat/issues/141 Ý tôi là tên người dùng có bắt buộc không?
Αλέκος

3

Bạn có thể xác minh ~/.gitconfignếu bạn ghi đè SSH bằng https: // hoặc ngược lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.