การโคลน repo Github ส่วนตัว


226

ฉันมีพื้นที่เก็บข้อมูลส่วนตัวบน Github สำหรับโครงการที่ฉันกำลังทำงานอยู่ จนถึงตอนนี้ฉันทำงานบนเดสก์ท็อปที่บ้านของฉันเท่านั้น แต่ฉันเพิ่งซื้อแล็ปท็อปและพยายามติดตั้งเพื่อที่ฉันจะสามารถทำงานในโครงการได้จากคอมพิวเตอร์เครื่องใดเครื่องหนึ่งและเปลี่ยน / ดัน

ฉันเพิ่มคีย์ SSH ใหม่ให้กับบัญชี Github ของฉันสำหรับแล็ปท็อปและประสบความสำเร็จในการโคลนและทำการเปลี่ยนแปลง repo การทดสอบสาธารณะที่ฉันตั้งค่า อย่างไรก็ตามฉันไม่สามารถลอกแบบ repo ส่วนตัวได้ มีอะไรพิเศษที่ฉันต้องทำในบรรทัดคำสั่งเพื่อที่จะลอกเลียนแบบ repo ส่วนตัวหรือไม่? ฉันจำเป็นต้องตั้งค่าบัญชี GitHub ใหม่สำหรับแล็ปท็อปของฉันและตั้งค่าตัวเองเป็นผู้ทำงานร่วมกันหรือไม่

คำสั่งที่ฉันใช้คือ git clone git://github.com/myusername/reponame.git


3
คุณใช้คำสั่งใดในการลองคัดลอก repo ส่วนตัวภายในเครื่อง คุณได้รับข้อผิดพลาดอะไร
Ron DeVera

คำตอบ:


171

URL โคลนส่วนตัวใช้แบบฟอร์มgit@github.com:username/repo.git- บางทีคุณอาจต้องใช้git@มากกว่าgit://?

git:// URL เป็นแบบอ่านอย่างเดียวและดูเหมือนว่า repos ส่วนตัวไม่อนุญาตการเข้าถึงในรูปแบบนี้


ใช่ - ใช้ "git@github.com:" แทนที่จะ "https: //" แก้ปัญหาของฉัน! จริงๆแล้วฉันเปิดใช้งาน 2FA ในเวลาเดียวกัน แต่นั่นไม่เกี่ยวข้องกับมัน
leo

148

สิ่งนี้ใช้ได้กับฉัน:

git clone https://username@github.com/username/repo_name

นี้แน่นอนหลังจากการเพิ่มคีย์ SSH ของฉันไป Github ฉันใช้สิ่งนี้กับเซิร์ฟเวอร์ CentOs หากจำเป็น


4
ขอบคุณสำหรับสิ่งนี้. แต่ฉันไม่สนใจว่าทำไมสิ่งนี้ถึงได้ผล ไม่เคยถามรหัสผ่าน ควรคอมไพล์ git ผ่าน https แต่อย่างใดแตะคีย์ ssh ของฉันหรือไม่? ฉันไม่คิด
reinhardt

1
เยี่ยมมากมันทำให้ฉันสามารถดาวน์โหลด repo ส่วนตัวบน Ubuntu ได้
Nino Škopac

ทำไมจึงใช้งานได้ แต่ git@github.com: ชื่อผู้ใช้ / repo.git ไม่ทำงาน
diimdeep

@diimdeep Git และเครื่องมืออื่น ๆ มักใช้โปรโตคอล git: สำหรับการเข้าถึงไฟล์ในที่เก็บระยะไกล การกำหนดค่าไฟร์วอลล์บางอย่างกำลังปิดกั้น git: // URL ซึ่งนำไปสู่ข้อผิดพลาดเมื่อพยายามโคลนที่เก็บข้อมูลหรือการพึ่งพาการดาวน์โหลด (ตัวอย่างเช่นไฟร์วอลล์ขององค์กรคือ "ฉาวโฉ่" สำหรับการบล็อก git :. ) หากคุณพบปัญหานี้คุณสามารถบังคับให้ใช้ https: แทนโดยเรียกใช้คำสั่งต่อไปนี้: git config --global url "https: // ".insteadOf git: //
charlchad

1
ในบางกรณีหากคุณได้รับพร้อมท์ให้ใส่รหัสผ่านและปฏิเสธการเข้าถึงอาจเป็นเพราะคุณต้องระบุ "โทเค็นการเข้าถึงส่วนบุคคล" แทนรหัสผ่าน GitHub ของคุณ [1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/…
David Winiecki

71

สิ่งนี้ใช้ได้กับฉัน:

git clone https://username:password@github.com/username/repo_name.git

5
นี้เป็นปัญหาที่มีรหัสผ่านอักขระพิเศษใบรหัสผ่านของคุณลงในสมุดบันทึกและดูเหมือนจะไม่ทำงานอีกต่อไป
pcnate

5
ลองนี้ - คุณจะได้รับแจ้งให้ป้อนรหัสผ่านบัญชีของคุณ ไม่ต้องกังวลกับการใช้รหัสผ่านในประวัติหรือบันทึก git clone https://username@github.com/username/repo_name.git
Vinay

64

ฉันพบปัญหานี้หลายครั้งและทุกครั้งที่ฉันลงจอดบนหน้านี้ลองทุกสิ่งและล้มเหลว!

เป็นเพราะฉันเปิดใช้งาน 2FA แล้ว !!!

ตามhttps://help.github.com/articles/which-remote-url-should-i-use/#when-2fa-is-enabled

หากคุณเปิดใช้งาน  การรับรองความถูกต้องด้วยสองปัจจัยหรือหากคุณกำลังเข้าถึงองค์กรที่ใช้การ  ลงชื่อเพียงครั้งเดียวของ SAMLคุณจะต้อง  ให้โทเค็นการเข้าถึงส่วนบุคคล  แทนการป้อนรหัสผ่านสำหรับ HTTPS Git

  1. ตามลิงค์นี้และสร้างโทเค็นการเข้าถึง
  2. git clone https://github.com/username/repo_name.git (ลิงค์ repo git เริ่มต้นดีพอ!)
  3. ป้อนชื่อผู้ใช้ของคุณและใช้โทเค็นการเข้าถึงเป็นรหัสผ่าน !!

ปรับปรุง:

  • หากคุณไม่ต้องการเปิดเผยโทเค็นการเข้าถึงในบรรทัดคำสั่งคุณสามารถวางโทเค็นการเข้าถึงเป็นชื่อผู้ใช้แล้วกด Enter Enter (ไม่จำเป็นต้องใช้รหัสผ่าน)
  • เกลียดการคัดลอกและวางโทเค็นการเข้าถึงซ้ำแล้วซ้ำอีกหรือไม่
    ใช้git config credential.helper store(อย่าทำสิ่งนี้บนเครื่องที่คุณไม่เชื่อถือ)

หากคุณอยู่บน Windows คุณสามารถติดตั้งgithub.com/microsoft/Git-Credential-Manager-for-Windowsจากนั้นเมื่อทำการโคลนพื้นที่เก็บข้อมูลส่วนตัวหน้าต่าง UI พร้อมลงชื่อเข้าใช้ Github จะปรากฏขึ้น มันจะช่วยให้คุณกรอกรหัส 2FA ข้อมูลประจำตัว Github ของคุณจะถูกเก็บไว้อย่างปลอดภัย
Jirik

18

การใช้ Git สำหรับ Windows เป็นการง่ายกว่าที่จะใช้ HTTPS url

git clone https://github.com/user/repoเปิดเปลือกคอมไพล์แล้ว ป้อนชื่อผู้ใช้และรหัสผ่านเมื่อได้รับแจ้ง ไม่จำเป็นต้องตั้งค่าคีย์ SSH


1
ฉันเห็นด้วยกับความเรียบง่ายไม่ต้องติดตั้ง ssh
Félix Gagnon-Grenier

เห็นด้วยกับความคิดเห็นอื่น ๆ เพียงแค่ใช้ HTTPS url ทำงานได้อย่างสมบูรณ์บน Windows หรือ Ubuntu (ทดลองที่ 116.04)
greg_data

18

สำหรับฉันทางออกคือ:

git clone https://myusername@restoftherepolink.git

ที่นี่คุณจะต้องเป็นเจ้าของ repo แต่ถ้าคุณไม่ได้มันจะเป็นไป

git clone https://myusername@github.com/ownersusername/repo_name.git

หากคุณมี2FA enabledแล้ว:

  1. ไปที่การตั้งค่าจากไอคอนโปรไฟล์ที่ด้านบนขวาหรือเยี่ยมชมhttps://github.com/settings/profile
  2. ไปที่แท็บด้านล่างหรือไปที่https://github.com/settings/tokens
  3. เปิดแท็บสุดท้ายที่นี่โทเค็นส่วนบุคคล และสร้างโทเค็น
  4. คัดลอกโทเค็นและเรียกใช้ git clone https://myusername@restoftherepolink.git

เมื่อได้รับพร้อมต์สำหรับรหัสผ่านให้ใส่โทเค็นนั้นในที่นี่ ภาพรุ่น Token ที่นี่


1
ดูเหมือนว่าคอมไพล์พร้อมท์ชื่อผู้ใช้ / รหัสผ่านถ้าไม่มีที่เก็บสาธารณะกับ URI นั้นดังนั้นคำสั่งแรกถูกต้อง
pcnate

8

ฉันมีบัญชี บริษัท (ส่วนตัว) และเปิดใช้งาน 2-Factor-Authentication ดังนั้นฉันจึงต้องรวมโพสต์สองสามโพสต์เพื่อให้ทำงานได้ดังต่อไปนี้ (การจดบันทึกดังนั้นอาจเป็นประโยชน์กับคนที่มีสถานการณ์เดียวกัน)

Initially it was the Fatal Error. 
fatal: repository 'https:
...
remote: Repository not found.
fatal: repository 'https:

ติดตั้งตัวจัดการข้อมูลประจำตัวและอัปเดต GIT ตามที่กล่าวไว้ที่นี่: https://codeshare.co.uk/blog/how-to-solve-the-github-error-fatal-httprequestexception-encountered/

ไม่ได้แก้ปัญหาเนื่องจากปัญหาย้ายไปด้านล่างเมื่อฉันลองใช้คำสั่ง clone ดังนี้:

$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

remote: Invalid username or password.
fatal: Authentication failed for 'https://

รหัสผ่านของฉันมีสัญลักษณ์ $ อยู่และด้วยเหตุผลบางอย่างบรรทัดคำสั่ง GIT / GIT Bash ไม่ชอบ ฉันเห็นสิ่งนี้ในข้อผิดพลาดที่ส่งคืนข้อความไม่มีสัญลักษณ์ $ อยู่ในนั้น

fatal: Authentication failed for 'https://<username>:<password-missing-$-symbol>@github.com/<ORG_NAME>/<PROJECT-NAME>.git'

ฉันต้องอ้างอิงเว็บไซต์นี้: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

โปรดทราบ: หากมีการจัดเก็บรหัสผ่านที่ไม่ถูกต้องสำหรับบัญชีของคุณใน Windows Credential Managerระบบจะเพิ่มปัญหาดังกล่าวด้วย ฉันลบข้อมูลประจำตัว GitHub ที่เก็บไว้ด้วยวิธีนี้ก่อนที่จะย้ายไปยังขั้นตอนด้านล่าง

$ git config --global credential.helper cache
$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

ตอนนี้ตัวจัดการข้อมูลประจำตัว Windows โผล่ขึ้นมา ฉันพิมพ์ชื่อผู้ใช้และรหัสผ่านของฉันในกล่องข้อความ (ซึ่งเป็นที่ยอมรับรหัสผ่านของฉันที่มีสัญลักษณ์ $) และแจ้งให้ฉันขอรหัสยืนยันตัวตนแบบ 2 ชั้น ฉันพิมพ์รหัสการรับรองความถูกต้องจาก Google Authenticator และการโคลนเริ่มต้นอย่างสมบูรณ์แบบ


สัญลักษณ์ดอลลาร์$เป็นอักขระที่สงวนไว้ใน Unix มันเป็นจุดเริ่มต้นของการดึงค่าตัวแปรที่มีชื่อนั้นเท่ากับสตริงที่ตามหลัง$สัญลักษณ์
ให้ฉันพูดเกี่ยวกับเรื่องนี้

สำหรับฉันการลบข้อมูลประจำตัวของ Windows แก้ไขปัญหา
Michael Larionov

6

เมื่อโคลนจาก repos ส่วนตัวที่เปิดใช้งาน 2FA มีขั้นตอนง่าย ๆ ที่คุณต้องทำ

  1. ไปที่บัญชี Git ของคุณ
  2. ไปที่ Settings-> Developer Settings-> Token การเข้าถึงส่วนตัว
  3. คลิกที่สร้างโทเค็นใหม่
  4. สร้างโทเค็นที่มีชื่อเรื่องที่คุณต้องการและด้วยฟังก์ชันการทำงาน
  5. เมื่อคุณโคลน repo ส่วนตัวโดยใช้ git clone repoName หลังจากป้อนชื่อผู้ใช้ของคุณให้โทเค็นการเข้าถึงส่วนบุคคลเป็นรหัสผ่าน

ทำตามขั้นตอนเดียวกันเมื่อคุณได้รับข้อความแสดงข้อผิดพลาดการตรวจสอบล้มเหลวสำหรับ repo ส่วนตัว


5

ในการตอบสนองต่อคำตอบของ mac คุณสามารถรับ URL โคลน SSH บนหน้า repo github ของคุณโดยคลิกSSHที่You can clone with HTTPS, SSH, or Subversion.และคัดลอก URL



3

นอกเหนือจากคำตอบของ MK Yung: ตรวจสอบให้แน่ใจว่าคุณเพิ่มพับลิกคีย์สำหรับทุกที่ที่คุณกำลังปรับใช้กับคีย์การนำไปใช้สำหรับ repo หากคุณไม่ต้องการรับการตอบสนอง 403 ที่ต้องห้าม


3

ก่อนอื่นตรวจสอบให้แน่ใจว่าคุณมีคีย์ SSH หรือสร้างขึ้นที่: https://help.github.com/articles/generating-ssh-keys/

เมื่อคุณมีรหัสของคุณคุณจะต้องเพิ่มรหัสลงในบัญชี Github ของคุณที่: https://github.com/settings/ssh

สำหรับผู้ใช้ Windows จะมีประโยชน์ในการรัน git bash ในฐานะผู้ดูแลระบบ

ตอนนี้การโคลนควรทำงานกับที่เก็บส่วนตัว (repo) โดยไม่ต้องใส่ชื่อผู้ใช้และรหัสผ่านของคุณ


3

ฉันต้องการวิธีการที่ไม่โต้ตอบสำหรับการโคลน repo ส่วนตัว

แรงบันดาลใจจากปัญหานี้: https://github.com/github/hub/issues/1644

ขั้นตอนที่ 1.

สร้างโทเค็นการเข้าถึงส่วนบุคคลในการตั้งค่านักพัฒนา github: https://github.com/settings/tokens

ขั้นตอนที่ 2.

git clone https://$token:x-oauth-basic@github.com/$username/$repo.git

1

หากคอมพิวเตอร์ที่ใช้ใหม่มีข้อมูลประจำตัวที่แตกต่างกันใช้คำสั่งนี้

git clone https://github.com/username/reponame.git

โดยตรงจะไม่ทำงาน Git จะพยายามใช้ข้อมูลรับรองที่เก็บไว้และจะไม่แจ้งให้คุณทราบชื่อผู้ใช้และรหัสผ่าน เนื่องจากข้อมูลรับรองไม่ตรงกัน git จะส่งออกRepository not foundและการดำเนินการโคลนล้มเหลว วิธีที่ฉันแก้ไขมันคือการลบข้อมูลประจำตัวเก่าเนื่องจากฉันไม่ได้ใช้อีกต่อไปและรันคำสั่งดังกล่าวข้างต้นอีกครั้งและป้อนชื่อผู้ใช้และรหัสผ่านที่จำเป็นและโคลน repo ส่วนตัว


1

1) ลองเรียกใช้คำสั่งด้วยชื่อผู้ใช้และรหัสผ่านในรูปแบบด้านล่าง

git clone https://your_username:your_password@github.com/username/reponame.git

ปัญหาขณะที่คนอื่น ๆ ได้กล่าวถึงที่นี่คือเมื่อเรามีอักขระพิเศษในรหัสผ่านของเรา ใน Javascript ใช้โค้ดด้านล่างเพื่อแปลงรหัสผ่านด้วยอักขระพิเศษเป็นการเข้ารหัสแบบ UTF-8

console.log(encodeURIComponent('password@$123'));

ตอนนี้ใช้รหัสผ่านที่สร้างขึ้นแทนรหัสผ่านที่มีอักขระพิเศษและเรียกใช้คำสั่ง

หวังว่าการแก้ปัญหานี้



0

หากคุณแน่ใจว่าคุณไม่ได้เปิดใช้งาน 2FA คุณได้รับอนุญาตให้เข้าถึง repo และ repo นั้นมีอยู่เป็นไปได้ว่า git@github.com ของคุณถูกลงชื่อเข้าใช้ด้วยบัญชีอื่น

เพื่อตรวจสอบว่าคุณสามารถทำได้

ssh -T git@github.com

หากมันแสดงบัญชีอื่นเพื่อแก้ไขปัญหานี้:

 ssh-add -D
 ssh-add ~/.ssh/your_rsa
 ssh -T git@github.com
 git clone git@github.com:<owner_name>/<repo_name>.git

unknown option -Tจะแสดง: เวอร์ชันคอมไพล์ของฉันคือ2.7.4
bvdb

@bvdb คำขอโทษของฉันมันควรจะเป็นssh -T git@github.com
Kexin Lu

0

หากคุณต้องการที่จะบรรลุมันDockerfileด้านล่างบรรทัดช่วย

ARG git_personal_token
RUN git config --global url."https://${git_personal_token}:@github.com/".insteadOf "https://github.com/"
RUN git clone https://github.com/your/project.git /project

จากนั้นเราสามารถสร้างด้วยอาร์กิวเมนต์ด้านล่าง

docker build --build-arg git_personal_token={your_token} .

0
git clone https://myusername:mygithubpassword@github.com/myusername/project.git

เมื่อคุณพยายามใช้ repo ส่วนตัวจาก repo ในเวลาที่คุณต้องส่งชื่อผู้ใช้และรหัสผ่านสำหรับสิ่งนั้น


สิ่งนี้ไม่ปลอดภัย repo ที่โคลนจะเก็บลิงค์ http ที่ระบุไว้ในไฟล์. git / config ความมุ่งมั่นทั้งหมดที่ทำกับ repo ท้องถิ่นสามารถผลักไปที่ระยะไกลโดยไม่ต้องใช้ชื่อผู้ใช้และรหัสผ่าน ซึ่งเป็นอันตรายจริง ๆ ถ้าคุณไม่ใช่ผู้ใช้เท่านั้น !!
Tian
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.