ฉันจะจัดระเบียบที่เก็บ Git ส่วนตัวได้อย่างไร


20

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

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

มีบางอย่างที่ฉันขาดหายไปซึ่งจะทำให้ฉันสามารถใช้พื้นที่เก็บข้อมูล git กับลำดับชั้นและตรวจสอบชิ้นส่วนตามที่ฉันต้องการ / ทำงานกับพวกเขาวิธีที่ฉันทำกับ SVN ในปัจจุบัน?

GitHub (หรือคู่แข่งเช่น BitBucket) มีคุณสมบัติบางอย่างขององค์กรโครงการที่ฉันขาดหายไปหรือไม่?

หากไม่เป็นเช่นนั้น "วิธี Git" ที่เป็นที่ยอมรับโดยทั่วไปในการจัดการกับสถานการณ์นี้ (ยกเลิกโครงการที่ไม่ได้มีไว้สำหรับเผยแพร่ให้เก็บออฟไลน์รวมพวกมันเข้าด้วยกัน ฯลฯ )?

เท่าที่ฉันสามารถบอกได้ตัวเลือกของฉันคือ:

  1. ใส่ไลบรารี่บน GitHub แล้วดำเนินการโฮสต์ SVN ของฉันต่อไปสำหรับโครงการอื่น ๆ ทั้งหมดใช้โซลูชันที่ไม่ใช่ VCS สำหรับการสำรองข้อมูลนอกไซต์ (blech)
  2. ใส่ไลบรารีและซอฟต์แวร์ที่ฉันวางแผนจะวางจำหน่ายบน GitHub (ในฐานะที่เป็นรัฐและเอกชนตามลำดับ) ดำเนินการโฮสต์ SVN ของฉันต่อไปสำหรับโครงการที่ฉันไม่สนใจมากและมีแนวโน้มว่าจะกลับมาอีกครั้งเพื่อรีเฟรชหน่วยความจำของฉัน ตัดสินใจว่าฉันยินดีที่จะเขียนออกหากบ้านของฉัน implodes (blech คู่)
  3. ใส่ทุกอย่างลงใน [GitHub และ / หรือ BitBucket] จัดการกับที่เก็บข้อมูลจำนวนมากโดยการค้นหาสิ่งที่ฉันต้องการ / รักษาพอยน์เตอร์ออฟไลน์ไว้ในบัญชี [GitHub และ / หรือ BitBucket] ของฉัน (triple blech)

2
ฉันอยากรู้ว่าที่เก็บจำนวนมากที่เรากำลังพูดถึงอยู่ที่นี่ "พอยน์เตอร์" หมายถึงอะไร
mhulse

เนื่องจากนี่เป็นคำถามเก่า bitbucket ช่วยให้คุณสร้างองค์กรฟรีและในโครงการที่คุณสามารถมีโครงการได้ซึ่งมี repositories องค์กรมีจำนวนผู้ใช้ไม่ จำกัด จำนวนมาก คุณสามารถจัดการสิทธิ์ตามองค์กร / โครงการ / repo
xenoterracide

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

คำตอบ:


11

bitbucket.org ให้คุณสร้าง repos ส่วนตัวได้ไม่ จำกัด

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

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

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


จริงจริง ... ฉันอาจไม่ได้เรียก GitHub เป็นพิเศษเพราะฉันเปิดให้ใช้ BitBucket สำหรับโครงการส่วนตัว แก้ไขคำถามเล็กน้อยเพื่อให้น้อยลงโดยเฉพาะ
Arkaaito

5

คำตอบสั้น ๆ ...

คำแนะนำของฉัน:เริ่มต้นด้วยบัญชีสาธารณะใน GitHub และ / หรือ Bitbucket (อื่น ๆ ?) สร้างโปรเจ็กต์สาธารณะเล็กน้อยและเริ่มใช้เครื่องมือ / ส่วนต่อประสาน เมื่อคุณรู้สึกถึงการบริการแล้วคุณควรเข้าใจว่าข้อ จำกัด ข้อดีและข้อเสียของแต่ละบริการคืออะไร จากตรงนั้นคุณควรจะเลือกเส้นทางที่ดีที่สุดไปยังการตรัสรู้การควบคุมเวอร์ชัน :)


คำตอบยาว ...

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

คุณได้พิจารณาติดตั้งไคลเอนต์ Git ของคุณเองหรือยัง? หากคุณชำระเงินให้กับเว็บโฮสติ้งอยู่แล้วคุณควรใช้โฮสต์นั้นสำหรับการตั้งค่า Git ของคุณเอง

ตัวอย่างเช่นโฮสต์ของฉันคือWebFaction (ไม่มีส่วนเกี่ยวข้อง):

การติดตั้ง Git Web Application

ส่วนหัวเส้นทางนี้อาจทำให้คุณประหยัดได้ $$$, esp. หากคุณจ่ายค่าบริการโฮสต์แล้ว

GitHub ไม่เพียงเรียกเก็บจากที่เก็บข้อมูลส่วนตัวเท่านั้น

เพียงชี้แจงให้ผู้อื่นทราบ (ไม่มีความเกี่ยวข้องทางธุรกิจกับ GitHub หรือ BitBucket):

GitHub: แผนการและราคา

  • $ 7 / mo สำหรับที่เก็บส่วนตัวสูงสุด5 แห่งไม่ จำกัด ทุกสิ่ง
  • $ 12 / เดือน สำหรับพื้นที่เก็บข้อมูลส่วนตัวสูงสุด10 แห่งไม่ จำกัด ทุกสิ่ง
  • $ 12 / เดือน สำหรับที่เก็บข้อมูลส่วนตัวสูงสุด20 แห่งไม่ จำกัด ทุกสิ่ง

โปรดทราบว่าการกำหนดราคา "แผนธุรกิจ" นั้นแตกต่างกัน

ราคาสำหรับ Git และ Mercurial repo โฮสติ้งสำหรับ Bitbucket โดย Atlassian

ตามที่ระบุไว้โดย Andrew ในคำตอบอื่น Bitbucket ทำเป็น repos ส่วนตัวไม่ จำกัด

  • ผู้ใช้ 5 คน:ฟรี
  • ผู้ใช้ 10 คน: $ 10 / เดือน
  • ผู้ใช้ 25 ราย: $ 25 / เดือน
  • ผู้ใช้ 50 ราย: $ 50 / เดือน
  • ผู้ใช้ 100 ราย: $ 100 / เดือน
  • ไม่ จำกัด $ 200 / เดือน

ดูเหมือนว่าจะไม่มีวิธีการจัดระเบียบที่เก็บแบบลำดับชั้น

ไม่แน่ใจว่าสิ่งที่คุณหมายถึงโดย "ลำดับชั้น" (อาจเป็นเพราะฉันไม่คุ้นเคยกับ SVN)

ฉันไม่แน่ใจว่าสิ่งนี้จะช่วยได้หรือไม่ แต่คุณสามารถดูที่ตารางเปรียบเทียบนี้เพื่อดูว่าคำสั่งต่าง / เปรียบเทียบ:

มีบางอย่างที่ฉันขาดหายไปซึ่งจะทำให้ฉันสามารถใช้พื้นที่เก็บข้อมูล git กับลำดับชั้นและตรวจสอบชิ้นส่วนตามที่ฉันต้องการ / ทำงานกับพวกเขาวิธีที่ฉันทำกับ SVN ในปัจจุบัน?

การแตกแขนง?

GitHub (หรือคู่แข่งเช่น BitBucket) มีคุณสมบัติบางอย่างขององค์กรโครงการที่ฉันขาดหายไปหรือไม่?

ไม่แน่ใจว่าสิ่งนี้จะช่วยได้หรือไม่ แต่คุณอาจลองดู:

Git มาพร้อมกับเครื่องมือ GUI ในตัวสำหรับการส่ง ( git-gui ) และการเบราส์ ( gitk ) แต่มีเครื่องมือของบุคคลที่สามหลายตัวสำหรับผู้ใช้ที่กำลังมองหาประสบการณ์เฉพาะแพลตฟอร์ม

... อีกครั้งไม่แน่ใจว่ามีเครื่องมือใด ๆ ที่สามารถช่วยให้คุณรู้สึกถึงสิ่งที่เป็นไปได้

เพื่อความชัดเจนฉันไม่แน่ใจในระดับความสามารถของคุณ Git ... ถ้าคุณยังใหม่กับ Git / GitHub การใช้ GUI อาจเป็นวิธีที่ง่าย / รวดเร็วสำหรับคุณที่จะรู้สึกถึงสิ่งต่าง ๆ ฉันชอบใช้ GitHub อย่างเป็นทางการสำหรับแอพ Mac / Windows

หากไม่เป็นเช่นนั้น "วิธีคอมไพล์" ที่เป็นที่ยอมรับโดยทั่วไปของการจัดการสถานการณ์นี้ (ยกเลิกโครงการที่ไม่ได้มีไว้สำหรับเผยแพร่ให้เก็บออฟไลน์รวมพวกมันเข้าด้วยกัน ฯลฯ )?

ถ้าฉันเป็นคุณฉันจะใช้ที่เก็บ

คุณต้องการที่เก็บส่วนตัวกี่แห่ง

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

เคล็ดลับ:หากคุณใช้ Git เวอร์ชันใหม่กว่านี้คุณสามารถดึงสาขาเฉพาะโดยใช้git clone -b mybranch --single-branch git://sub.domain.com/repo.git:

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

(ดูคำตอบของฉันที่นี่สำหรับข้อมูลที่เกี่ยวข้องเกี่ยวกับสาขา GitHub )

อีกครั้งฉันคิดว่า repos หลายรายการเป็นวิธีที่จะไป

คุณอาจถามตัวเองว่ารหัสของคุณจำเป็นต้องเป็นส่วนตัวหรือไม่ เป็นไปได้หรือไม่ที่คุณสามารถเผยแพร่สู่สาธารณะด้วยรหัสที่กล่าวมาโดยไม่มีผลกระทบใด ๆ

ใส่ไลบรารี่บน GitHub แล้วดำเนินการโฮสต์ SVN ของฉันต่อไปสำหรับโครงการอื่น ๆ ทั้งหมดใช้โซลูชันที่ไม่ใช่ VCS สำหรับการสำรองข้อมูลนอกไซต์ (blech)

หากคุณมุ่งหน้าเส้นทางนี้Dropbox (หรือคล้ายกัน) อาจเป็นวิธีที่ดีในการรับการควบคุมเวอร์ชันและการซิงค์สำหรับการสำรองข้อมูลนอกสถานที่ของคุณ

ใส่ไลบรารีและซอฟต์แวร์ที่ฉันวางแผนจะวางจำหน่ายบน GitHub (ในฐานะที่เป็นรัฐและเอกชนตามลำดับ) ดำเนินการโฮสต์ SVN ของฉันต่อไปสำหรับโครงการที่ฉันไม่สนใจมากและมีแนวโน้มว่าจะกลับมาอีกครั้งเพื่อรีเฟรชหน่วยความจำของฉัน ตัดสินใจว่าฉันยินดีที่จะเขียนออกหากบ้านของฉัน implodes (blech คู่)

สิ่งนี้ทำให้ฉันย้อนกลับไปยังคำถามที่ว่า "คุณจ่ายค่าโฮสติ้งแล้วหรือยังถ้าเป็นเช่นนั้นคุณสามารถติดตั้งโฮสต์ Git ของคุณเอง"; ข้อดีคือคุณสามารถมีซอร์สโค้ดทั้งหมดภายใต้ Git umbrella แม้ว่าจะไม่ได้อยู่ในพื้นที่เดียวกัน (เช่นใช้ GitHub สำหรับข้อมูลสาธารณะที่คุณต้องการอวด)

ใส่ทุกอย่างลงใน [GitHub และ / หรือ BitBucket] จัดการกับที่เก็บข้อมูลจำนวนมากโดยการค้นหาสิ่งที่ฉันต้องการ / รักษาพอยน์เตอร์ออฟไลน์ไว้ในบัญชี [GitHub และ / หรือ BitBucket] ของฉัน (triple blech)

---> ดูคำตอบสั้น ๆ ของฉันด้านบน ^^^^^^


0

นี่คือสิ่งที่ฉันทำ:

  • วางโครงการเดี่ยว ๆ ที่คุณต้องการให้เป็นสาธารณะในrepos ของGitHubแยกกัน เนื่องจาก GitHub เป็นสถานที่ที่ใช้รหัสร่วมซึ่งจะทำให้โครงการของคุณค้นพบ / แยกได้ง่ายขึ้น
  • สำหรับโครงการใด ๆ ที่คุณต้องการรักษาความเป็นส่วนตัวให้ใส่ใน repos ส่วนตัวที่โฮสต์โดยผู้ให้บริการที่คุณเลือก ตามที่ได้กล่าวไปแล้วBitbucketเป็นตัวเลือกที่ดีสำหรับสิ่งนี้เนื่องจากอนุญาตให้มี repos ส่วนตัวไม่ จำกัด
  • ใส่รหัสอื่น ๆ ทั้งหมดลงใน repo "ขยะ" ซึ่งอาจรวมถึงรหัสที่ใช้สำหรับการเรียนรู้และทดสอบรวมถึงตัวอย่างเล็ก ๆ ที่ไม่ได้เป็นส่วนหนึ่งของโครงการ ตราบใดที่ไม่มีเหตุผลที่จะรักษาความเป็นส่วนตัวนี้คุณสามารถโฮสต์ repo นี้ไว้ใน GitHub ได้เช่นกัน

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

    คุณสามารถใส่รหัสนี้ลงใน repos แยกต่างหากหรือใช้สิ่งที่แฟนซีเช่น git submodules หรือ subtrees แต่ฉันคิดว่ามันง่ายที่สุดที่จะเก็บทุกอย่างไว้ใน repo เดียวและจัดการมันโดยใช้โฟลเดอร์ มันง่ายกว่าและคอมไพล์เร็วพอที่ขนาดของ repo ไม่น่าจะมีปัญหา


0

เทคนิคหนึ่งที่เป็นไปได้คือการใช้กิ่งไม้

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

ในพื้นที่คุณสามารถเก็บกิ่งใน repos ท้องถิ่นแยก (ไม่จำเป็นต้องมีการแมป 1: 1 ระหว่าง repos ท้องถิ่นและระยะไกล) หรือมี repo ท้องถิ่นเดียวและใช้ git worktree เพื่อรักษาต้นไม้ทำงานหลาย โดยส่วนตัวฉันสงสัยว่าวิธีแรกจะเกิดข้อผิดพลาดน้อยกว่า


การเก็บไว้ใน repo ระยะไกลเดียวกันไม่ได้หมายความว่าคุณต้องใช้ repo ในพื้นที่เดียวกัน
ปีเตอร์กรีน

แค่ลืมความคิดเห็นสุดท้ายของฉัน ฉันเพิ่งเรียนรู้เกี่ยวกับgit worktreeคำสั่งซึ่งช่วยให้คุณสร้างแผนผังการทำงานเพิ่มเติมสำหรับที่เก็บช่วยให้คุณสามารถตรวจสอบหลายสาขาพร้อมกัน ด้วยวิธีนี้ข้อเสียของวิธีการของคุณก็หายไป: เพียงแค่สร้างแผนผังงานสำหรับแต่ละสาขาอิสระและใช้มันเหมือน repos อิสระ อาจเป็นความคิดที่ดีที่จะเพิ่มคำตอบของคุณ :-)
cmaster - reinstate monica

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