คุณแยกที่เก็บของคุณเองบน GitHub ได้อย่างไร


164

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


4
คุณพยายามทำอะไรให้สำเร็จ บางทีคุณสามารถแก้ไขได้ด้วยการแยกสาขาใช่ไหม
Artefact2

4
ฉันต้องการได้รับสำเนาของโครงการและขยายโครงการนั้นเพื่อทำอย่างอื่น แต่ไม่มีผลต่อโครงการดั้งเดิม นั่นมัน วิธีใดก็แก้ไขได้
WowBow

1
@ Artefact2 .. ขออภัยฉันคิดว่าวิธีการแก้ปัญหาโดย mcepl แก้ไขความต้องการของฉัน แต่มันก็ไม่ได้ หลังจากที่ฉันโคลนโครงการโดยใช้ 'git clone' ฉันไม่ต้องการชี้ไปที่ repo ดั้งเดิม แต่ไปที่ repo ใหม่บน github ที่ฉันสร้างขึ้น ฉันจะบรรลุสิ่งนั้นได้อย่างไร
WowBow

1
@ Artefact2 คุณได้รับคำถามของฉันหรือไม่
WowBow

1
ประโยชน์ของการเปรียบเทียบกับการสร้าง repo ใหม่คือกราฟและประวัติเครือข่ายเชื่อมโยงเข้าด้วยกัน มันน่าเสียดายที่ Github ไม่อนุญาตสิ่งนี้
kenchew

คำตอบ:


205

ฉันไม่คิดว่าคุณสามารถแยกซื้อคืนของคุณเอง
โคลนและผลักดันมันไปสู่ ​​repo ใหม่เป็นสิ่งที่ดี แต่คุณต้อง:

git clone https://github.com/userName/Repo New_Repo
cd New_Repo
git remote set-url origin https://github.com/userName/New_Repo
git remote add upstream https://github.com/userName/Repo
git push origin master
git push --all

(ดูgit push)

ดูกระบวนการทั้งหมดที่อธิบายไว้ที่ " แยกโครงการของคุณเองบน GitHub "


หกปีต่อมา (2559) ตอนนี้คุณมีผู้นำเข้า GitHubซึ่งอนุญาตให้คุณนำเข้า repo จากแหล่งอื่น ... รวมถึง GitHub
ดูที่ " การนำเข้าพื้นที่เก็บข้อมูลด้วย GitHub Importer "

https://help.github.com/assets/images/help/importer/import-repository.png

narf 'sคำตอบ (upvoted) ยังแสดงให้เห็นถึงกระบวนการดังกล่าว

ที่จะช่วยให้คุณสร้างที่เก็บใหม่และนำเข้าประวัติเต็มของอันเก่าไปยังที่เก็บใหม่โดยใช้ URL ของ GitHub

อีกครั้ง: สิ่งที่คุณได้รับคือการคัดลอกไม่ใช่ทางแยกจริง: คุณไม่สามารถทำการร้องขอแบบดึงจาก repo ใหม่ไปยังอันเก่าได้

อีกครั้ง (ทวิ) ตามที่ระบุไว้ในความคิดเห็นโดยmpersicoนี้ไม่ได้เป็นส้อมที่แท้จริง

หากฉันมี foo ซึ่งเป็น reposit ของ canonical สำหรับโครงการโอเพ่นซอร์สที่ฉันต้องการให้คนอื่น ๆ แยกและเข้าถึง PR ทำแล้วฉันไม่ต้องการทำงานใน repo นั้นฉันต้องการ fork ที่ฉันสามารถใช้เพื่อแก้ไขปัญหา PR ที่เหมาะสมกับโครงการของฉัน
ฉันได้แก้ไขสิ่งนี้แล้วการสร้างบัญชีที่สองใน GitHub และการทำเช่นนั้น


ขอบคุณ @VonC ฉันคิดว่าคุณลืมพูดถึงการแก้ไขไฟล์กำหนดค่า
WowBow

1
ฉันกำลังพูดถึง. git / config ถ้าคุณไม่เปลี่ยน url ดั้งเดิมเมื่อคุณพูดว่า "git remote add .... " มันจะปฏิเสธคุณเพราะชื่อแหล่งกำเนิดนั้นมีอยู่แล้ว แต่เมื่อฉันเปลี่ยน URL ในไฟล์ปรับแต่งมันก็ใช้งานได้ดี บทความที่คุณชี้ให้ฉันเห็นนั้น
WowBow

7
@WowBow ถ้ามีอยู่แล้วแล้วทำremote git remote set-url origin https://github.com/userName/New_Repoที่จะเปลี่ยน.git/configไฟล์ให้คุณ ดูgit-scm.com/docs/git-remote
VonC

1
@aus ที่คาดไว้เพื่อให้คุณดึงข้อมูลจากอัปสตรีม ดูstackoverflow.com/a/33360766/6309
VonC

1
ฉันยังรู้สึกว่าควรอนุญาตให้ฟอร์กจาก repo ในองค์กรเดียวกัน จะเกิดอะไรขึ้นถ้ามีที่เก็บส่วนกลางที่เป็นเรื่องธรรมดาสำหรับทุกคนและคุณต้องการได้รับการอัพเดตจากมันตลอดเวลาและในเวลาเดียวกันก็ทำการเปลี่ยนแปลงเฉพาะกับสำเนาที่ถูกแยกของคุณตามความต้องการของคุณ?
Prachi

107

วิธีที่ง่ายสุด ๆ ใน 30 วินาทีจากเว็บไซต์ GitHub:

  1. คัดลอก URL ของ repo ของคุณ Ex:https://github.com/YourName/YourOldRepo (คำใบ้: เป็น URL เมื่อคุณดูหน้าหลักของ repo ของคุณใน gitHub
  2. คลิก+ไอคอนที่มุมบนขวา
    https://i.stack.imgur.com/9zJgo.png
  3. เลือก "นำเข้าที่เก็บข้อมูล"
  4. จะขอรหัส "URL เก่า" วาง URL ที่คุณคัดลอกไว้ในขั้นตอนที่ 1
    https://i.stack.imgur.com/vgWd3.png
  5. ป้อนชื่อ repo ใหม่ของคุณแล้วคลิก Begin Importใหม่ของคุณและคลิก
  6. แค่นั้นแหละ! ตอนนี้คุณมีสำเนาของ repo เต็มรูปแบบที่มีประวัติความเป็นมาและสาขา!

ข้อ จำกัด : มันไม่ใช่ทางแยกที่แท้จริง มันเป็นสำเนาของ repo ไม่อนุญาตให้ทำการดึงคำขอไปมา


4
ฉันลืมผู้นำเข้า GitHub (เปิดตัวในปี 2559) ในคำตอบเก่าปี 2010 ของฉัน: ฉันได้เพิ่มการอ้างอิงถึงเครื่องมือนั้นและคำตอบของคุณ
VonC

10
  1. git clone https://github.com/YOURREPO.git TargetRepoName
  2. cd TargetRepoName /
  3. คอมไพล์ชุด URL ระยะไกล git https://github.com/TargetRepoName.git
  4. git push -u origin master

1
อาจเพิ่มว่าคุณต้องสร้างgithub.com/TargetRepoName.gitก่อนหน้านี้ใน GitHub แต่ยกเว้นว่าคำตอบนี้เป็นตัวเลือกแรกของฉันและใช้งานได้
Florian Straub

5

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

ภาพด้านล่างจะช่วยให้:

แยก repo ของตนเองผ่านทาง import-1

แยก repo ของตนเองผ่าน import-2


4

เพียงโคลนมันสร้าง repo เปล่าใหม่และผลักดันมัน


1
ขอบคุณ ฉันคิดมากเกินไป
WowBow

ฉันโคลนมันกับเครื่องท้องถิ่นของฉันและสร้าง repo เปล่า แต่เมื่อฉันพยายามคอมไพล์gitub.com/userName/New_Repo.git .. มันบอกว่ามีแหล่งกำเนิดระยะไกลอยู่แล้ว ฉันจะแก้ปัญหาอย่างไร
WowBow

และตอนนี้เมื่อฉันผลักมันกำลังเปลี่ยน repo ดั้งเดิม
WowBow

คุณช่วยบอกวิธีการไปยัง repo ใหม่ได้ไหม ฉันทำโคลนและสร้าง repo ใหม่ แต่ฉันไม่สามารถผลักดันไปยัง repo ใหม่ได้
WowBow

5
คุณต้องเปลี่ยนรีโมท มิฉะนั้นจะพยายามผลักดันไปยังตำแหน่งเดียวกัน git remote rm originตามด้วยgit remote add origin URL-to-new-repository
wadesworld

1

ฉันทำตามคำแนะนำอย่างเป็นทางการสำหรับ "การทำซ้ำที่เก็บ" และดูเหมือนว่าจะทำงาน

https://help.github.com/articles/duplicating-a-repository/

ในการสร้างซ้ำของที่เก็บโดยไม่ต้องฟอร์กคุณจะต้องรันคำสั่งโคลนพิเศษกับที่เก็บต้นฉบับและมิเรอร์ดันไปที่ใหม่ สิ่งนี้ใช้ได้กับที่เก็บ git ใด ๆ ไม่ใช่เฉพาะที่โฮสต์ใน GitHub


1

วิธีแก้ปัญหาที่ยอมรับของ VonC แต่น่าเสียดายที่ไม่ได้ผลสำหรับฉันอย่างที่ฉันได้รับ

รีโมต: ไม่พบที่เก็บ

สิ่งที่ได้ผลคือ:

  1. สร้าง new_repo ที่ github
  2. git clone new_repo
  3. cd new_repo
  4. git remote เพิ่ม upstream old_repo.git
  5. คอมไพล์ดึงต้นแบบต้นน้ำ
  6. git push ต้นกำเนิดมาสเตอร์

ผมได้ทั้งหมดข้างต้นจากที่นี่


1

สำหรับผู้ที่ไม่มีความรู้ด้านเทคโนโลยีโดยใช้ GitHub นี่เป็นวิธีแก้ปัญหาที่ง่าย ๆ ทางเลือกหนึ่งสำหรับคำตอบที่ยอดเยี่ยมอื่น ๆ ด้านบน สิ่งที่คุณต้องการคือแอปพลิเคชัน GitHub บนเดสก์ท็อป

  1. เปิด repo โครงการของคุณเองจากเบราว์เซอร์และดาวน์โหลดเป็น zip เช่น your-project-master.zipของคุณเองโครงการจากเบราว์เซอร์และดาวน์โหลดเป็นซิปเช่น
  2. เปิดเครื่องรูดและเปลี่ยนชื่อเป็น repo ใหม่ของคุณ
  3. เปิด GitHub เดสก์ท็อปและเพิ่ม repo ใหม่ของคุณโดยเรียกดูไปยัง repo ใหม่ในพื้นที่ที่ไม่ได้ซิป ป้อนคำอธิบายรูปภาพที่นี่
  4. เผยแพร่ไปยัง GitHub ของคุณโดยคลิกที่ปุ่มเผยแพร่ อย่าลืมเพิ่มชื่อและคำอธิบาย :)

1

ตอนนี้คุณสามารถทำเครื่องหมายที่เก็บฐานเป็นแม่แบบ (ในการตั้งค่าทำเครื่องหมายเป็นที่เก็บแม่แบบ ) และในหน้าหลักของ repo คลิกใช้แม่แบบนี้เพื่อสร้าง repo ที่สองของคุณ

วิธีใช้ Github: การสร้างที่เก็บเทมเพลต การสร้างที่เก็บจากเทมเพลต


-1

เพิ่งลองสิ่งนี้และใช้งานได้:

  1. แยกส่วน repo ของคุณให้เป็นบัญชีองค์กร
  2. เปลี่ยนชื่อ
  3. โอนสิทธิ์การเป็นเจ้าของให้กับคุณ

4
ความคิดที่ดี aspiers already has a repository in the UPSTREAM/NAME networkแต่ฉันก็พยายามนี้และได้รับข้อผิดพลาด:
Adam Spires

นี่เป็นเพราะตอนนี้พวกเขาเปลี่ยนเส้นทางหลังจากที่คุณเปลี่ยนชื่อหรือโอน repos ของคุณgithub.com/blog/1508-repository-redirects-are-here
shadowbq

-1

เมื่อคุณสร้าง repo ใหม่คุณสามารถนำเข้าจาก repo อื่นด้วย repo .git url ฉันใช้เวลา 30 วินาที

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