ฉันต้องการทราบความแตกต่างระหว่างการทำ Fork ของโครงการและทำclone
มัน
ฉันสามารถส่งคำขอดึงผ่าน GitHub ได้เฉพาะเมื่อฉันแยกโครงการหรือไม่
ฉันต้องการทราบความแตกต่างระหว่างการทำ Fork ของโครงการและทำclone
มัน
ฉันสามารถส่งคำขอดึงผ่าน GitHub ได้เฉพาะเมื่อฉันแยกโครงการหรือไม่
คำตอบ:
โดยทั่วไปแล้วใช่ เป็นเพียงการขอ GitHub โคลนโครงการและลงทะเบียนภายใต้ชื่อผู้ใช้ของคุณ ; GitHub ยังติดตามความสัมพันธ์ระหว่างที่เก็บสองแห่งดังนั้นคุณสามารถเห็นภาพการคอมมิทและดึงระหว่างโครงการทั้งสอง (และส้อมอื่น ๆ )fork
คุณยังสามารถขอให้ผู้คนดึงจากที่เก็บโคลนของคุณแม้ว่าคุณจะไม่ได้ใช้fork
- แต่คุณต้องจัดการกับการทำให้มันเปิดเผยต่อสาธารณะด้วยตัวคุณเอง หรือส่งแพทช์ของนักพัฒนาซอฟต์แวร์ (ดูgit format-patch
) ที่พวกเขาสามารถนำไปใช้กับต้นไม้ของพวกเขา
git pull
โคลนสามารถปรับปรุงด้วยง่าย ทางแยกใช้หลายคำสั่ง และไม่น่าแปลกใจที่เกือบทุกส้อมที่ฉันดูจะล้าสมัย ส้อมเป็นเหมือนปัญหาที่เก็บ Maven บนเตียรอยด์ แทนที่จะเป็นหนึ่ง repo ที่ล้าสมัย (Maven) มีหลายพันรายการ (Git)
git pull
ดังนั้นจึงยังมีความสัมพันธ์บางอย่างที่มีอยู่ หากคุณคัดลอกสำเนาทั้งหมดนั่งบนเครื่องของคุณเองและตัดการเชื่อมต่อจาก repo เดิม
เมื่อคุณบอกว่าคุณมีการฟอร์กที่เก็บคุณมีพื้นการสร้างสำเนาของพื้นที่เก็บข้อมูลภายใต้ GitHub ID ของคุณ จุดสำคัญที่ควรทราบที่นี่คือการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับที่เก็บต้นฉบับจะสะท้อนกลับไปยังที่เก็บแบบแยกของคุณ(คุณต้องดึงข้อมูลและรีบูต) อย่างไรก็ตามหากคุณทำการเปลี่ยนแปลงใด ๆ กับที่เก็บแบบแยกของคุณคุณจะต้องสร้างคำขอดึงไปยังที่เก็บต้นฉบับอย่างชัดเจน หากคำขอการดึงของคุณได้รับการอนุมัติโดยผู้ดูแลระบบของที่เก็บต้นฉบับการเปลี่ยนแปลงของคุณจะถูกคอมมิต / ผสานกับรหัสฐานเดิมที่มีอยู่ ก่อนหน้านั้นการเปลี่ยนแปลงของคุณจะปรากฏเฉพาะในสำเนาที่คุณแยกเท่านั้น
ในระยะสั้น:
โมเดล Fork & Pull ช่วยให้ทุกคนสามารถแยกที่เก็บข้อมูลที่มีอยู่และผลักดันการเปลี่ยนแปลงไปยังทางแยกส่วนบุคคลของพวกเขาโดยไม่ต้องมีการอนุญาตให้เข้าถึงที่เก็บข้อมูลต้นทาง การเปลี่ยนแปลงนั้นจะต้องถูกดึงเข้าสู่แหล่งเก็บข้อมูลโดยผู้ดูแลโครงการ
โปรดทราบว่าหลังจากการฟอร์กคุณสามารถโคลนพื้นที่เก็บข้อมูลของคุณ (ที่อยู่ภายใต้ชื่อของคุณ) ในเครื่องของคุณ ทำการเปลี่ยนแปลงในมันและผลักดันมันไปยังพื้นที่เก็บข้อมูลที่คดเคี้ยวของคุณ อย่างไรก็ตามเพื่อสะท้อนถึงการเปลี่ยนแปลงของคุณในที่เก็บต้นฉบับคำขอดึงของคุณจะต้องได้รับการอนุมัติ
คู่สนทนาที่น่าสนใจอื่น ๆ -
คุณสามารถคอมมิชชัน repo ออนไลน์ของคุณ (หรือคอมมิชชัน repo ท้องถิ่นของคุณและจากนั้นกดไป repo ออนไลน์ของคุณ), จากนั้นส่งคำขอ pull
ผู้จัดการโครงการสามารถยอมรับเพื่อรับการเปลี่ยนแปลงในเวอร์ชันออนไลน์หลักของเขา
โคลนคือที่ที่คุณมีการทำซ้ำที่เหมาะสมและแยกระหว่างสองรุ่น (อาจแตกต่างกัน) ของที่เก็บ เมื่อมีการแก้ไข repo หนึ่งเนื้อหาใหม่ต้องถูกคัดลอกไปยัง repo อื่นอย่างแข็งขันโดยใช้คำสั่ง push และการเปลี่ยนแปลงในการซื้อคืนอื่น ๆ
เมื่อคุณแยก repo บนเซิร์ฟเวอร์คุณไม่จำเป็นต้องทำซ้ำเนื้อหาเนื่องจาก repos ทั้งสองจะใช้เนื้อหา [วัตถุคงที่] เดียวกันจากเซิร์ฟเวอร์เดียวกันนั้น 'เคล็ดลับ' อยู่ในการจัดการมุมมองของผู้ใช้ที่แตกต่างกันเพื่อให้ผู้ใช้แต่ละคนเชื่อว่าพวกเขามีสำเนาส่วนตัวของ repo การกดและดึงข้อมูลระหว่างส้อมเป็นเพียงการอัปเดตพอยน์เตอร์ของผู้ใช้
ในระดับที่ต่ำกว่า git ทำสิ่งเดียวกันภายใน หากคุณมีสามไฟล์ที่แตกต่างกันแต่ละไฟล์มีHello World
แล้วคอมไพล์เพียง 'คัดลอก' สำเนาของ Hello World หยดเดียวและเสนอในสามแห่งตามที่ต้องการ
ความสามารถในการแยกเซิร์ฟเวอร์หมายความว่าค่าเผื่อการจัดเก็บข้อมูลขนาดใหญ่ของ Github นั้นไม่ใหญ่มากนักเนื่องจากทุก ๆ หน่วยงานจะใช้ repo พื้นฐานเดียวร่วมกัน
โดยสรุปการแยกอาจเหมือนกับ "การโคลนภายใต้ GitHub ID / โปรไฟล์" ของคุณ ส้อมจะดีกว่าโคลนทุกเวลาโดยมีข้อยกเว้นบางอย่างชัดเจน ที่เก็บที่ถูกแยกจะถูกมอนิเตอร์ / เปรียบเทียบกับที่เก็บดั้งเดิมเสมอซึ่งแตกต่างจากที่เก็บที่โคลน ที่ช่วยให้คุณติดตามการเปลี่ยนแปลงเริ่มต้นคำขอการดึงและยังซิงค์การเปลี่ยนแปลงที่เกิดขึ้นในที่เก็บต้นฉบับด้วยตนเองโดยใช้ทางแยก
ในขณะที่คำตอบของ @ AniketThakur นั้นดีมาก ยังไม่มีใครตอบคำถามต่อไปนี้
ฉันสามารถส่งคำขอดึงผ่าน GitHub ได้เฉพาะเมื่อฉันแยกโครงการหรือไม่
ไม่หากคุณเป็นผู้มีส่วนร่วมในที่เก็บคุณสามารถ: สร้างโคลนในเครื่อง ทำสาขาท้องถิ่น เพิ่มความมุ่งมั่นในสาขานั้น ผลักสาขาในท้องถิ่นกลับไปที่ GitHub (สร้างสาขาระยะไกลในกระบวนการ) สร้างคำขอดึงเพื่อขอให้สาขานั้นรวมเข้ากับสาขาหลัก (หรือสาขาใดก็ได้ที่คุณต้องการ)
ในกรณีที่คุณทำในสิ่งที่ผู้ถามบอกไว้ (ลืมที่จะแยกและเพียงแค่คัดลอก repo ในพื้นที่ทำการเปลี่ยนแปลงและตอนนี้ต้องออกคำขอดึง) คุณสามารถกลับมาติดตาม:
ความแตกต่างที่แปลกประหลาดอีกประการหนึ่งของ GitHub คือการเปลี่ยนแปลงของส้อมจะไม่ถูกนับในบันทึกกิจกรรมจนกว่าจะมีการดึงการเปลี่ยนแปลงของคุณไปยัง repo เดิม ยิ่งกว่านั้นเมื่อต้องการเปลี่ยนทางแยกให้เป็นโคลนที่เหมาะสมคุณต้องติดต่อฝ่ายสนับสนุน Github อย่างชัดเจน
จากสาเหตุที่ฉันบริจาคไม่แสดง :
กระทำถูกสร้างขึ้นในทางแยก
ความมุ่งมั่นที่ทำในทางแยกจะไม่นับรวมกับเงินบริจาคของคุณ เพื่อให้นับคุณต้องทำอย่างใดอย่างหนึ่งต่อไปนี้:
เปิดคำร้องขอดึงเพื่อให้การเปลี่ยนแปลงของคุณรวมเข้ากับที่เก็บพาเรนต์ ในการถอดแยกและทำให้มันกลายเป็นพื้นที่เก็บข้อมูลแบบสแตนด์อโลนบน GitHub ติดต่อGitHub สนับสนุน หากส้อมมีส้อมของตัวเองให้ฝ่ายสนับสนุนทราบว่าส้อมควรย้ายด้วยที่เก็บของคุณไปยังเครือข่ายใหม่หรือยังคงอยู่ในเครือข่ายปัจจุบัน สำหรับข้อมูลเพิ่มเติมโปรดดูที่ " เกี่ยวกับส้อม "
สรุป "fork" สร้างสำเนาของโครงการที่โฮสต์ในบัญชี GitHub ของคุณเอง
"Clone" ใช้ซอฟต์แวร์ git บนคอมพิวเตอร์ของคุณเพื่อดาวน์โหลดซอร์สโค้ดและมันเป็นประวัติรุ่นทั้งหมดของคอมพิวเตอร์นั้น