ลบการอ้างอิงแยกของที่เก็บ GitHub


206

ฉันจะทำให้ GitHub ลืมหรือยกเลิกการเชื่อมโยงที่ repo ของฉันเดิมเป็นอีกหนึ่งโครงการอื่นได้อย่างไร

ฉันแยกโครงการใน GitHub ตอนนี้ฉันสามารถเห็น "แยกจากสิ่งใด / อะไรก็ได้" ที่เก็บพาเรนต์ "อะไรก็ตาม / อะไรก็ตาม" จะไม่ได้รับการบำรุงรักษาอีกต่อไป ฉันได้รับอนุญาตให้ใช้ฐานรหัสของที่เก็บต้นฉบับต่อไปเพื่อสร้างที่เก็บอิสระ

มีวิธีแยกโครงการของฉันออกจากที่เก็บต้นฉบับหรือไม่?

คำตอบ:


175

คุณสามารถติดต่อฝ่ายสนับสนุน GitHubและขอให้พวกเขาเปลี่ยนที่เก็บของคุณเป็น "โหมดปกติ"

ในหน้านี้ย่อหน้า "Commit ถูกสร้างขึ้นใน fork" มีการอธิบายว่าต้องผ่านการสนับสนุนเพื่อสลับ ดังนั้นจึงเป็นไปได้ว่ามีวิธีการทำด้วยตัวเองไม่มี (ยกเว้นกรณีที่คุณทำลายและสร้าง repo ของคุณซึ่งจะมีการอธิบายก่อน ... ถ้าคุณไม่ดังนั้นจึงควรระวังถ้าคุณมีตั๋วหรือวิกิพีเดียที่แนบมากับโครงการของคุณเป็นพวกเขาจะถูกลบ!)


31
ฉันสามารถยืนยันได้ว่าการติดต่อฝ่ายสนับสนุนนั้นทำงานได้อย่างไร้ที่ติแถมพวกเขาก็มักจะตอบกลับในเวลาไม่กี่ชั่วโมง :-)
BenC

1
หน้าที่เชื่อมโยงไม่ได้มีข้อมูลที่ระบุไว้อีกต่อไป
Kara Brightwell

3
@MattBrennan หน้าเปลี่ยนไป แต่ส่วนสุดท้ายยังรวมถึง: "เมื่อต้องการแยกทางแยกและเปลี่ยนเป็นที่เก็บแบบสแตนด์อโลนบน GitHub.com หรือ GitHub Enterprise ให้ติดต่อฝ่ายสนับสนุน GitHub หรือผู้ดูแลไซต์ของคุณตามลำดับ"
Thomas Moulard

1
เร็วสุด .. พวกเขาตอบฉันใน 1 ชั่วโมง ขอบคุณ
myDoggyWritesCode

2
ใน Github Enterprise คุณสามารถค้นหาได้ภายใต้ผู้ดูแลระบบ -> การทำงานร่วมกัน -> เครือข่ายและขึ้นอยู่กับกรณีการใช้งานของคุณคุณควรใช้ 'Make Root', 'Detach' หรือ 'Extract'
Kutzi

45

คุณสามารถทำซ้ำที่เก็บที่แยกไปยังที่เก็บใหม่ (โดยไม่ต้องพึ่งพาการแยก) จาก github UI จากนั้นลบที่แยกที่เดิมออก:

  • ลงชื่อเข้าใช้ GitHub
  • เลือก+เครื่องหมายที่มุมขวาบนและพื้นที่เก็บข้อมูลนำเข้า
  • นำเข้าพื้นที่เก็บข้อมูลที่มีการแยกของคุณ ที่เก็บใหม่จะไม่มีการพึ่งพาแยก
  • ลบที่เก็บต้นฉบับที่เป็นทางแยกในการตั้งค่าที่เก็บ

1
นี่เป็นวิธีที่ง่ายที่สุดและเหมาะกับฉัน :) ฉลาดมาก.
moxi

1
มีคนอื่นมีปัญหากับคุณลักษณะการนำเข้า "หยุด" หรือไม่? Mine ได้มาจาก "กำลังตรวจหาระบบควบคุมเวอร์ชันของโครงการของคุณ ... " เป็นเวลาประมาณ 5 ชั่วโมง ฉันไม่แน่ใจว่าฉันเข้าคิวหรือไม่ repo มีขนาดเล็ก ล่อลวงให้ทิ้งไว้ข้ามคืนในกรณีที่ฉันเข้าแถว
Benjamin West

ในที่สุดฉันก็อยากรู้อยากเห็นและคลิก "ยกเลิก" การคลิกยกเลิกอนุญาตให้ข้ามการตรวจจับ VCS และเพียงนำเข้าโค้ด / คอมมิชชัน / สาขาเป็นต้นนี่เป็นกรณีเมื่อนำเข้า Github -> Github การนำเข้าอาจไม่หยุดทำงานถ้าฉันมาจาก VCS อื่นหรือไม่ ไม่แน่ใจ. โปรดทราบด้วยว่าการทำเช่นนี้กับ repo ครั้งที่สองฉันต้องยกเลิกสองครั้งเพื่อให้มันทำงาน หาก CLI คัดลอกข้อมูลเดียวกันทั้งหมดซึ่งอาจเป็นวิธีที่ดีกว่า แต่หวังว่าจะช่วยผู้อื่นที่เลือกเส้นทางนี้
Benjamin West

9
เพียงเพื่อให้มีความชัดเจนวิธีการนี้จะไม่รักษาปัญหาและดึงคำขอ
golopot

ทำงานเหมือนจับใจ! ขอบคุณคุณช่วยชีวิต! :)
omnimind

44

ให้แน่ใจว่าคุณมีทุกสาขาที่สำคัญและแท็กบน repo ท้องถิ่นของคุณลบ repo GitHub การสร้างพื้นที่เก็บข้อมูลด้วยวิธีการปกติ (ไม่มีฟอร์ก) git push --allและผลักดันกลับประเทศที่มีพื้นที่เก็บข้อมูล โปรดทราบว่าหากคุณมีสาขาในพื้นที่ที่คุณไม่ต้องการเผยแพร่อาจมีค่าในการสร้างโคลนโลคัลคลีนชั่วคราวสำหรับการดำเนินการ

อย่างไรก็ตามนี่จะกำจัด wiki และปัญหา เนื่องจากที่จริงแล้ววิกินั้นเป็นที่เก็บของมันเองก็สามารถจัดการได้เช่นเดียวกันโดยการโคลนจากนั้นสร้างใหม่และผลักดัน ที่อยู่ repo อยู่ในหน้า Git Access ( git@github.com:user/repo.wiki.git) ของวิกิ

สิ่งนี้ทำให้ปัญหา พวกเขาสามารถส่งออกผ่านAPIแต่เท่าที่ฉันรู้คุณสามารถสร้างปัญหาและความคิดเห็นกับบุคคลของคุณเท่านั้นดังนั้นการนำเข้าพวกเขาอย่างสมบูรณ์นั้นเป็นไปไม่ได้

ดังนั้นหากคุณต้องการแก้ไขปัญหาคุณควรผ่านการสนับสนุน Github ตามที่ Thomas Moulard แนะนำ


ขึ้นอยู่กับจำนวนปัญหาที่มีอยู่อาจเป็นไปได้ที่จะถ่ายโอนทีละหนึ่งไปยังที่เก็บใหม่ก่อนที่จะลบออกจากที่เดิมจากเว็บ ( help.github.com/en/github/managing-your-work-on- github / … ) ฉันเดาว่าคนที่ตั้งใจแน่วแน่สามารถถ่ายโอนมากกว่า 100 เรื่องต่อชั่วโมง - ไม่ใช่เรื่องสนุก แต่สำหรับที่เก็บข้อมูลหลาย ๆ เรื่องเป็นสิ่งที่ทำได้
Suma

22

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

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

git clone --bare git@github.com:user/forked_repo.git

สร้าง reposity ใหม่ที่ว่างเปล่าnew-repositoryบนเว็บไซต์ github และดันเวอร์ชั่นที่ทำมิเรอร์:

cd user.github.com.git/

git push --mirror git@github.com:user/new-repository.git

หนึ่งสามารถเปลี่ยนชื่อใน GitHub, forked_repositoryด้วยชื่ออื่นเพื่อให้มันเป็นสำรองและตรวจสอบการปรับปรุงหากจำเป็น หรือเพียงแค่ลบ

การเปลี่ยนชื่อเป็นnew-repositoryชื่อเดิมจะทำงาน ผลข้างเคียงของคุณตอนนี้จะปรากฏในประวัติของคุณ


11

ใช้กับ GitHub Enterprise เท่านั้นไม่ใช่ใน github.com

ลงชื่อเข้าใช้บัญชีที่มีสิทธิ์ผู้ดูแลระบบ:

  1. ไปที่ที่เก็บที่คุณต้องการแยกออก: https://<ghe url>/<org>/<repo>
  2. คลิกที่จรวด“ Site Admin” ที่มุมบนขวา
  3. คลิก "การทำงานร่วมกัน" ที่แถบเมนูด้านบน
  4. คลิกที่ "เครือข่าย" ในบานหน้าต่างด้านซ้าย
  5. คลิกที่“ สร้างรูท” ในบานหน้าต่างโครงสร้างเครือข่าย
  6. ยอมรับ

สิ่งนี้ได้รับการทดสอบบน GitHub Enterprise 2.9


ขึ้นอยู่กับกรณีการใช้งานของคุณ 'แยกออก' หรือ 'แยก' อาจเหมาะสมกว่า ฉันพบ 'ทำให้รูต' ดูแปลก ๆ เพราะมันจะกลับทิศทางของรูท -> ลูกในปัจจุบัน (Github Enterprise 2.17)
Kutzi

10

เมื่อใช้ข้อมูลจากaurelienและClaytonฉันสามารถทำสิ่งต่อไปนี้ได้:

$ git clone --bare https://github.com/my/forked_repo.git
<delete forked_repo on GitHub>
<recreate repo on GitHub using same name>
$ cd forked_repo.git
$ git push --mirror

นี่คือเอกสารสำหรับgit clone --bare :

สร้างที่เก็บ Git เปลือย นั่นคือแทนการสร้าง<directory>และวางไฟล์ในการบริหาร<directory>/.gitให้ตัวเอง<directory> $GIT_DIRเห็นได้ชัดว่านี่หมายถึง -n เพราะไม่มีที่ไหนที่จะตรวจสอบต้นไม้ทำงาน refs/remotes/origin/นอกจากนี้ยังมีหัวสาขาที่ห่างไกลจะถูกคัดลอกโดยตรงไปยังสอดคล้องหัวสาขาในประเทศโดยไม่ต้องให้พวกเขาทำแผนที่ เมื่อใช้ตัวเลือกนี้จะไม่มีการสร้างสาขาการติดตามระยะไกลหรือตัวแปรการกำหนดค่าที่เกี่ยวข้อง

นี่คือเอกสารสำหรับgit push --mirror :

แทนการตั้งชื่อแต่ละเตะที่จะผลักดันระบุว่า refs ทั้งหมดภายใต้refs/(ซึ่งรวมถึง แต่ไม่ จำกัดrefs/heads/, refs/remotes/และrefs/tags/) จะสะท้อนไปยังพื้นที่เก็บข้อมูลระยะไกล การอ้างอิงแบบโลคัลที่สร้างขึ้นใหม่จะถูกผลักไปที่ปลายรีโมตการอ้างอิงแบบโลคัลที่อัปเดตในท้องถิ่นจะถูกบังคับให้อัปเดตบนรีโมตปลายทางและการอ้างอิงที่ถูกลบจะถูกลบออกจากรีโมตปลายทาง นี่เป็นค่าเริ่มต้นหากตั้งค่าตัวเลือกการremote.<remote>.mirrorกำหนดค่า

หมายเหตุ: เช่นเดียวกับgitคำตอบอื่น ๆซึ่งจะไม่คัดลอกปัญหาที่ไม่ได้เป็นส่วนหนึ่งของgitธุรกรรมซื้อคืนเช่น wiki และปัญหา ต่อ Tapio:

  • wiki เป็น repo คอมไพล์แยกต่างหากและสามารถจัดการในลักษณะเดียวกันต่อ Tapio ที่อยู่คือ: git@github.com:user/repo.wiki.git.
  • ปัญหาสามารถส่งออกผ่าน GitHub API ได้ แต่มีปัญหาในการสร้างใหม่เนื่องจากผู้ใช้ของคุณสามารถสร้างได้เท่านั้นดังนั้นการนำเข้าจะสูญเสียข้อมูล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.