มีสาขาส่วนตัวของ repo สาธารณะบน GitHub หรือไม่?


128

ฉันมีโครงการ PHP สาธารณะในที่เก็บ GitHub ซึ่งมีเพียงสาขาเดียว (หลัก)

ฉันต้องการมีสาขา / ส้อมแยกต่างหากที่เป็นส่วนตัวสำหรับฉัน (ฉันจ่ายเงินสำหรับ repos GitHub ส่วนตัวแล้ว) ฉันต้องการที่จะรวมการเปลี่ยนแปลงจากสาขา / ส้อมส่วนตัวไปยัง repo สาธารณะและในทางกลับกัน

ด้วยเหตุนี้คำถามของฉันจึงมีดังนี้:

  1. ฉันสามารถมีสาขาส่วนตัวใน repo สาธารณะได้หรือไม่?
  2. ฉันสามารถแยก repo สาธารณะของตัวเองไปยังสาขา / ส้อมส่วนตัวของฉันเองได้หรือไม่?
  3. หากเป็นไปได้ทั้งสองข้อทางใดเป็นวิธีที่ดีที่สุดในอนาคต หากไม่มีฉันควรดำเนินการอย่างไร

1
ไม่ใช่ความคิดที่ดีที่สุดในการแยกที่เก็บสาธารณะของคุณเป็นที่เก็บส่วนตัวโดยที่คุณสร้างหลายสาขาที่คุณไม่ได้ดัน (กลับ) ไปยังที่เก็บสาธารณะ (และในทางกลับกัน)?
Legolas

1
นั่นคือสิ่งที่ฉันขอฉันต้องการสร้างสำเนาของ repo สาธารณะ แต่การอัปเดตของฉันเป็นแบบส่วนตัว (เว้นแต่ฉันต้องการผลักดันบางสิ่งกลับสู่สาธารณะ)
Lizard


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

@ mbh86 มันไม่ใช่คำตอบจริงๆเป็นลิงค์และฉันไม่มีเวลาเปลี่ยนเป็นคำตอบ แต่ถ้าคุณต้องการใช้เนื้อหาของหน้านั้นเพื่อสร้างคำตอบที่นี่ (โดยอ้างอิงถึงไซต์ต้นฉบับ) มันสามารถช่วยผู้ใช้รายอื่นได้อย่างแน่นอนและคุณจะได้รับคะแนน
โหวตเพิ่มขึ้น

คำตอบ:


70
  1. ซ้ำ repo
  2. ทำให้ repo ที่ซ้ำกันเป็นแบบส่วนตัวบน GitHub
  3. โคลน repo ส่วนตัวไปยังเครื่องของคุณ
  4. เพิ่มรีโมตลงใน repo สาธารณะของคุณ (git remote เพิ่มสาธารณะ git@github.com: ... )
  5. ผลักดันสาขาที่มีจุดมุ่งหมายสำหรับ repo สาธารณะของคุณไปยังรีโมตสาธารณะใหม่นั้น (ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใส่รหัสส่วนตัวเท่านั้นโดยไม่ได้ตั้งใจ)
  6. คุณสามารถนำการเปลี่ยนแปลงไปยัง repo สาธารณะของคุณโดยใช้ 'git fetch public' จากนั้นรวมเข้าด้วยกันในเครื่องและส่งไปยัง repo ส่วนตัวของคุณ (ระยะไกลต้นทาง)

1
การทำสำเนาใช้งานได้ดีสำหรับฉันแม้ว่าฉันจะต้องทำในลำดับที่ตรงข้ามก่อนอื่นให้สร้างที่เก็บส่วนตัวจากนั้นทำซ้ำ repo สาธารณะที่นั่นจากบรรทัดคำสั่ง ขอบคุณ!
Joel

104

เป็นไปได้ไหมที่จะมีสาขาส่วนตัวใน repo สาธารณะ?

บน GitHub ที่เก็บของคุณจะเป็นแบบสาธารณะหรือส่วนตัว คุณไม่สามารถ "แปรรูป" เฉพาะสาขาได้

ฉันสามารถแยก repo สาธารณะของตัวเองไปยังสาขา / ส้อมส่วนตัวของฉันเองได้หรือไม่?

คุณสามารถโคลน repo สาธารณะของคุณไปยังเครื่องท้องถิ่นของคุณสาขาตามความจำเป็นและไม่เพียงแค่ผลักดันของคุณกิ่ง "เอกชน" ต้นน้ำ (โดยระบุซึ่งสาขาที่จะผลักดันในการกำเนิด: git push origin masterหรือgit push origin branch-i-want-to-be-public:master)

วิธีใดเป็นวิธีที่ดีที่สุดในการส่งต่อ / ฉันควรดำเนินการอย่างไร

เพื่อที่จะใช้ประโยชน์จาก GitHub สำหรับการพัฒนาทั้งภาครัฐและเอกชนของคุณฉันขอแนะนำให้คุณแยกสาขาสาธารณะของคุณภายใน GitHub เปลี่ยนการตั้งค่าของทางแยกใหม่เป็น "ส่วนตัว" จากนั้นโคลนเวอร์ชันส่วนตัวลงในเครื่องของคุณ เมื่อคุณพร้อมที่จะทำการเปลี่ยนแปลงต่อสาธารณะให้ส่งข้อมูลทั้งหมดไปยังทางแยกส่วนตัวของคุณบน GitHub จากนั้นใช้คำขอดึงเพื่อคัดลอกสาขาไปยัง repo สาธารณะ

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

หากคุณมีบัญชี GitHub แบบชำระเงินหรือกำลังใช้บริการอื่นที่เสนอส้อมสาธารณะและส่วนตัวและคำขอดึง (เช่นBitBucket ) คุณสามารถใช้วิธีใดวิธีหนึ่งข้างต้นเพื่อทำให้รหัสของคุณเป็นแบบสาธารณะ


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

3
ความหมายของสิ่งนี้น่าเสียดายที่ไม่สามารถใช้คำร้องขอดึงเพื่อดึงการเปลี่ยนแปลงจาก "ส้อม" ส่วนตัวไปเป็นสำเนาสาธารณะของที่เก็บได้
Michael Mior

6
ตอนนี้ GitHub เสนอที่เก็บส่วนตัวแบบไม่ จำกัด สำหรับบัญชีฟรี
Nathan F.

1
นี่ไม่ควรเป็นคำตอบอันดับต้น ๆ เนื่องจากขั้นตอนการแนะนำ (PR จากทางแยกส่วนตัว) ไม่ทำงาน คำตอบโดย @ mj1531 คือขั้นตอนการทำงานที่ดีกว่า
stewSquared

3

มีวิธีแก้ปัญหาอื่นที่ฉันพบว่าดีกว่าเนื่องจากไม่ส่งผลให้เกิด repos ซ้ำในเครื่องเดียวกัน

  • สร้างสาขาด้วยสิ่งที่คุณต้องการเป็นส่วนตัว
  • สร้าง repo ใหม่บน GitHub ตั้งค่าเป็นส่วนตัว
  • เพิ่ม GitHub repo ใหม่เป็นรีโมตที่สองให้กับ repo บนเครื่องของคุณ
  • ผลักดันสาขาส่วนตัวไปยังรีโมตที่สอง

ผลลัพธ์สุดท้ายคือ 1 ที่เก็บพร้อมรีโมท 2 อัน 1 สาธารณะ 1 ส่วนตัว.
เพียงแค่ต้องระมัดระวังเกี่ยวกับสิ่งที่คุณผลักดันให้ตั้งชื่อตามนั้น


1

1. ) เป็นไปได้หรือไม่ที่จะมีสาขาส่วนตัวใน repo สาธารณะ

จากสิ่งที่ฉันรู้ไม่

2. ) ฉันสามารถแยก repo สาธารณะของตัวเองเป็นสาขาส่วนตัวของฉันเองได้หรือไม่

ไม่คุณไม่สามารถแยก repo แบบเต็ม (1-n สาขา) เป็นสาขาเดียวได้ ที่จริงคุณทำได้ถ้าคุณแค่แยกสาขาหนึ่งของ repo เต็มรูปแบบ เพียงเพิ่มเป็นรีโมตหรือเริ่มจากโคลน

นอกจากนี้คุณอาจจะสนใจในการจ่ายเงินเบาบาง

3. ) หากทั้งสองข้อเป็นไปได้ซึ่งเป็นวิธีที่ดีที่สุดในอนาคต

n / a

4. ) ถ้าเป็นไปไม่ได้ฉันควรดำเนินการอย่างไร?

n / a

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