วิธีการแปลง `git:` URL เป็น `http: 'URL


139

ฉันกำลังทำงานหลังพร็อกซี http ฉันพยายามโคลนต้นกำเนิดของ Android โดยใช้เครื่องมือ "repo" ของพวกเขา

เครื่องมือนี้ยืนยันการใช้git://URL แม้ว่าจะใช้http://งานได้เช่นกัน เป็นผลให้ฉันไม่สามารถดาวน์โหลดแหล่งที่มา

เป็นไปได้ไหมที่จะบังคับgitให้ใช้ตลอดเวลาhttp?

แก้ไข: http_proxy ของฉันได้รับการกำหนดค่าอย่างถูกต้อง ตัวอย่างเช่นงานนี้:

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

แต่นี่ไม่ใช่ (errno = การเชื่อมต่อหมดเวลา):

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

ดังนั้นคำตอบนี้ไม่ได้ช่วยฉันจริงๆ


เห็นนี้คำตอบก่อนหน้า
John Paulett

คำตอบ:


297

นี่คือตัวอย่างของการเขียนโปรโตคอลเริ่มต้นสำหรับ GitHub:

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

เอกสาร Git สำหรับurl.<base>.insteadOf:

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

URL ใด ๆ <base>ที่เริ่มต้นด้วยค่านี้จะถูกเขียนใหม่ที่จะเริ่มต้นแทนด้วย เมื่อมีมากกว่าหนึ่งสตริงแทนที่จะเป็นหนึ่งตัวที่ตรงกับ URL ที่กำหนดจะใช้การจับคู่ที่ยาวที่สุด


19
ช่วยเมื่อไฟร์วอลล์ปิดกั้นโปรโตคอลคอมไพล์! :)
Wojtek Turowicz

ฉันสามารถถามคำถามที่นี่ได้ไหม ฉันใช้สิ่งนี้ แต่เขียนว่า "heeps" มากกว่า "https" ฉันจะแก้ไขสิ่งนี้ได้อย่างไร ใช้ 'git config --global.url หรือไม่ github.com/.insteadOf heeps: //github.com/ 'ทำงานอย่างไร
Xuxu

1
เคล็ดลับ: git remote -vทันทีที่แสดงให้เห็นถึงผลกระทบของการinsteadOfและpushInsteadOfการกำหนดค่า
Beni Cherniavsky-ร์กพาสกิน

สิ่งนี้ใช้ได้สำหรับฉันใน WiFi สาธารณะที่มีพอร์ต 22 ที่ถูกบล็อก config สามารถเปลี่ยนกลับเป็นค่าเริ่มต้นได้อย่างไร
yivo

14
คำตอบนี้เกือบจะทำเพื่อฉันยกเว้นที่เก็บของฉันใช้git@github.com:...รูปแบบ URL สิ่งนี้git config --global url."https://github.com/".insteadOf 'git@github.com:'ใช้ได้ผลสำหรับฉัน
kraenhansen

35

ฉันไม่ทราบว่าเครื่องมือrepoนี้ใช้ Git (และหากคุณสามารถกำหนดค่า 'repo' ให้ใช้โปรโตคอล http) ได้ แต่คุณสามารถลองใช้เครื่องมือurl.<base>.insteadOfปรับแต่งตัวแปร (ดูที่git-configและgit-fetch manpages)

คุณได้ลองใช้core.gitProxyเพื่อผ่านไฟร์วอลล์หรือไม่ถ้าเป็น problme ด้วยการใช้โปรโตคอล git?


2
ขอบคุณตัวแปร "replaceOf" นี้เป็นสิ่งที่ฉันต้องการ
noamtm

23

ฉันมีปัญหาเดียวกันกับการเรียกใช้ submodules ซ้ำ ๆ ในที่เก็บ git ฉันอยู่หลังไฟร์วอลล์บ้าที่ไม่อนุญาตการเชื่อมต่อขาออกบนพอร์ต git บางส่วนของ submodules ของ submodules git://github.com/blah/blah.gitที่ถูกกำหนดเป็น สิ่งนี้ฆ่าประชากร submodules ซ้ำ ๆ ของฉัน วิธีแก้ปัญหามีดังต่อไปนี้:

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

สิ่งนี้จะแทนที่git://ด้วยhttps://<GITUSERNAME>@ใน URL ที่เก็บ submodule ทั้งหมด คุณต้องแทนที่<GITUSERNAME>ด้วยชื่อผู้ใช้ git ของคุณเอง ยังทราบว่า--globalจำเป็นต้อง; เพียงแค่เพิ่มการกำหนดค่านี้ไปยังไดเรกทอรีที่เก็บฐานไม่ทำงาน


3
คุณไม่เพียงใช้ git config - global URL "https: //" .insteadOf git: // ดังที่แสดงไว้ที่นี่? github.com/angular/angular-phonecat/issues/141 ฉันต้องการชื่อผู้ใช้หรือไม่
ςος

3

คุณสามารถตรวจสอบได้~/.gitconfigหากคุณเขียนทับ SSH ด้วย https: // หรือกลับกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.