Git clone ใช้งานได้เฉพาะกับ ssh: // git @ .. และไม่ใช่กับ git @


12

ความคิดใดที่ว่าทำไม repo ของ GIT จะทำงานเฉพาะเมื่อใช้งานssh://git@server.com/repo.gitและไม่ใช้เมื่อgit@server.com/repo.gitใด

มันเป็นการเซ็ตอัพเซิร์ฟเวอร์ของคนอื่นดังนั้นจึงไม่รู้เลยว่ามันเป็นการเซ็ตอัพ แต่ใน BitBucket หรือ GitHub ฉันสามารถใช้งานได้git@server.com/repo.gitและมันจะทำงานและโคลน repo โดยใช้โปรโตคอล SSH ความคิดใด ๆ ว่าทำไมสำหรับเซิร์ฟเวอร์นี้ฉันใช้งานได้เฉพาะเมื่อใช้ssh://git@server.com/repo.git?

ดังนั้นฉันต้องเพิ่มssh://ด้านหน้า


เซิร์ฟเวอร์ใช้พอร์ต SSH สำรองหรือไม่ ชอบssh://git@server.com:2222/
7ochem

ไม่ได้มันคือ 22 ssh://git@server.com/repo.gitทำงานgit@server.com/repo.gitได้ตามปกติ ฉันไม่ได้เพิ่ม:portในกรณีใด ๆ เมื่อฉันพยายามโดยไม่ต้องฉันได้รับssh:// fatal: repository 'git@server.com/something/repo.git' does not existด้วยการssh://git@server.com/something/repo.gitทำงาน
daniels

ปัญหาการกำหนดค่าบางอย่าง (อาจเป็นปัญหาไฟร์วอลล์ชื่อผู้ใช้หรือไม่) - ฉันมีปัญหาคล้ายกันกับการตั้งค่าที่สถาบันของฉัน อย่างไรก็ตามการเข้าถึงผ่านทาง https ทำงาน - ดังนั้นวิธีแก้ไขคือใช้กฎการเขียน
ซ้ำ

คำตอบ:


32

คุณใช้ไวยากรณ์ที่ไม่ถูกต้อง

เมื่อคุณลบscheme://คำนำหน้า git จะไม่แปลที่อยู่ของคุณในรูปแบบ URL อีกต่อไป แต่จะเป็นรูปแบบ rcp / scp แทน แต่สำหรับที่อยู่สไตล์ rcp / scp พา ธ ต้องถูกแยกออกจาก user @ host โดยใช้โคลอน: (ไม่สนับสนุนพอร์ตที่ระบุ) ตัวอย่างเช่น:

git clone daniels@server.com:repo.git

git clone git@bitbucket.com:daniels/example.git

หากไม่มีเครื่องหมายโคลอน git จะแปลที่อยู่เป็นเส้นทางท้องถิ่นเท่านั้น

(คุณสามารถดูรายละเอียดเพิ่มเติมได้ในหน้าคู่มือgit cloneหรือgit fetch )


ฮะลึกลับแก้แล้ว คุณพูดถูก ขอขอบคุณ.
daniels

ฉันใช้เซิร์ฟเวอร์ BitBucket (เดิมคือ Stash, ที่คุณติดตั้งบนเซิร์ฟเวอร์ของคุณ, ไม่ใช่รุ่น cloud) และเพียงแค่คัดลอกและวางคำสั่ง GIT จากที่นั่น :ด้วยเหตุผลบางอย่างที่พวกเขาไม่ได้เพิ่มเหล่านั้นหายไป
daniels
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.