ถ้าฉันแยกโปรเจ็กต์ที่โฮสต์บน github ฉันคีบกิ่งทั้งหมดหรือไม่ ฉันจะรู้ได้อย่างไรว่าส้อมของฉันอิงกับสาขาใด? กล่าวอีกนัยหนึ่งว่าสาขาใดจะถูกดาวน์โหลดไปยังพีซีของฉัน
ถ้าฉันแยกโปรเจ็กต์ที่โฮสต์บน github ฉันคีบกิ่งทั้งหมดหรือไม่ ฉันจะรู้ได้อย่างไรว่าส้อมของฉันอิงกับสาขาใด? กล่าวอีกนัยหนึ่งว่าสาขาใดจะถูกดาวน์โหลดไปยังพีซีของฉัน
คำตอบ:
ทุกสาขาใน GitHub จะถูกคัดลอกด้วยส้อม (เห็นได้ชัดว่านี่ไม่รวมถึงสาขาที่ไม่เคยถูกผลักไปที่ GitHub ตั้งแต่แรก)
แต่ส้อมคือการดำเนินการ GitHub-to-GitHub ไม่มีการคัดลอกไปยังพีซีของคุณ มันไม่มากเช่นเดียวกับ Git โคลน ถ้าคุณหมายถึงการถามว่า“สิ่งที่คัดลอกเมื่อฉันโคลนโครงการ?” git-clone(1)
ดูคู่มือสำหรับ
คิดแบบนี้:
repo [ไซต์]สอดคล้องกับการทำงานร่วมกันของทีมในสาขาเดียวหรือหลายสาขา ผู้ร่วมให้ข้อมูลทุกคนมีสำเนาของตนเอง
แต่ละส้อมของสอดคล้อง repo หลักในการทำงานของผู้มีส่วนร่วมของ ส้อมเป็นโครงสร้าง Github (ไม่ใช่ Git) เพื่อเก็บโคลนของ repo ไว้ในบัญชีผู้ใช้ของคุณ ในฐานะที่เป็นโคลนจะมีสาขาทั้งหมดใน repo หลักในเวลาที่คุณสร้างส้อม
แต่ละสาขาภายในส้อมและ / หรือใน repo หลักสามารถสอดคล้องกับสิ่งต่างๆได้หลายประเภทขึ้นอยู่กับว่าคุณต้องการทำงานอย่างไร แต่ละสาขาสามารถอ้างถึงเวอร์ชันของโครงการ แต่ยังสามารถสอดคล้องกับช่องทางการพัฒนาที่แตกต่างกันเช่นโปรแกรมแก้ไขด่วนหรืองานทดลอง
คำขอดึง (ในระบบนิเวศ GitHub) สอดคล้องกับงาน ทุกครั้งที่ฉันต้องการมีส่วนร่วมในงานที่แยกเสร็จแล้วให้กับ repo หลักฉันจะสร้างคำขอดึงที่สอดคล้องกับการคอมมิตที่ทำในงานนั้น กระทำเหล่านี้จะถูกดึงออกมาจากทั้งของฉันส้อมหรือฉันสาขาไปrepo หลัก
การคอมมิตคือชุดของการเปลี่ยนแปลงโค้ด นี่เป็นหนึ่งในสิ่งที่น่าสนใจที่สุดเกี่ยวกับ Git คุณไม่ได้ถ่ายโอนไฟล์คุณถ่ายโอนบันทึกการเปลี่ยนแปลง
Fork เป็นโคลนที่ฝั่ง GitHub (โคลนทุกอย่าง)
เมื่อคุณโคลน repo คุณจะได้รับประวัติทั้งหมดของ repo ดังกล่าวพร้อมด้วยสาขาทั้งหมด
แม้ว่าในทางทฤษฎีคุณสามารถเปลี่ยนสาขาเริ่มต้นของ repo ระยะไกลได้แต่โคลนจากที่เก็บ GitHub จะมองหาสาขาหลักเป็นหลัก ความหมายในการเปลี่ยนสาขา "เริ่มต้น" ที่โคลน GitHub จะได้รับคุณจะต้องเปลี่ยนชื่อสาขาหลัก
หากคุณแยกโปรเจ็กต์คุณกำลังทำสำเนาของโปรเจ็กต์ทั้งหมดไปยังบัญชีคอมไพล์ฮับของคุณ คุณไม่ได้รับมือกับพีซีของคุณ
ในการทำสำเนาในพีซีของคุณคุณต้องโคลนและดึงข้อมูลทั้งหมดและคุณจะได้รับสาขาและรหัสทั้งหมดของโครงการนั้น
หากคุณสร้างส่วนแยกของโครงการจากเว็บไซต์ Github คุณจะได้รับสาขาทั้งหมดจากโครงการต้นน้ำ
หากคุณโคลนจากส้อมที่สร้างใหม่ไปยังพีซีในพื้นที่ของคุณคุณจะมีorigin
รีโมทบนพีซีของคุณชี้ไปที่สาขาหลักของส้อมของคุณบน Github
upstream
สาขาคือสิ่งที่คุณต้องทำ; และพวกเขาบอกคุณว่าต้องทำอย่างไร
สิ่งนี้สามารถอธิบายได้เป็นอย่างดี คุณมีที่เก็บส่วนกลางที่ GitHub เมื่อใดก็ตามที่คุณทำการโคลนบนคอมพิวเตอร์ส่วนบุคคลของคุณเพื่อทำการเปลี่ยนแปลงบางอย่างการโคลนภายในของที่เก็บหลักนี้เรียกว่าส้อม
สาขาเป็นสิ่งที่แตกต่างและรวมอยู่ใน fork / repo จริงๆแล้วสาขาคืองานของคุณในขั้นตอนต่างๆของการพัฒนา พวกเขาถูกสร้างขึ้นตามและเมื่อจำเป็นในการบันทึกชุดฟังก์ชันเพื่อให้การเข้าถึงแก่ผู้ใช้ที่แตกต่างกันเพื่อสาธิตไซต์ให้กับลูกค้าเป็นต้น
ฉันต้องการแบ่งปันตัวอย่างชีวิตจริงเมื่อเราใช้ Branches และเมื่อเราใช้ Forks
เรามี GitLab ที่ร้านของเราและบางครั้งเราต้องทำงานกับแพ็คเกจจากโครงการ Laravel โดยปกติเราจะสร้างสาขาและผลักดันการเปลี่ยนแปลงไปยังสาขาที่เราได้ทำการทดสอบในสภาพแวดล้อม VM dev ในพื้นที่ของเราเมื่อทำงานกับโครงการ Laravel จริง
สมมติว่าโครงการของเราตั้งอยู่ที่
https://github.com/yardpenalty/mainproject.git
การใช้งานสาขา:
มาบอกว่าเรียกสาขา It_doesnt_matter
เมื่อเรามีสาขาตามที่เราต้องการสำหรับการผลิตแล้วเราก็ทำการผลักดันครั้งสุดท้ายไปที่สาขานี้และสร้างคำขอรวมซึ่งจะเข้าสู่ UAT เพื่อทำการทดสอบเมื่อการทดสอบผ่าน QC แล้วการเปลี่ยนแปลงจะรวมเข้ากับการผลิต
ตอนนี้การรวมจากIt_doesnt_matter
สาขาจะถูกผลักไปยังโปรเจ็กต์หลัก
ที่ https://github.com/yardpenalty/mainproject.git
สมมติว่าโครงการแพ็คเกจตั้งอยู่ที่
https://github.com/yardpenalty/mypackage.git
โปรดทราบว่าโครงการหลักใช้แพ็กเกจนี้ในการผลิตดังนั้นเราจึงไม่สามารถทำการเปลี่ยนแปลงได้โดยเพียงแค่ผลักดันไปที่แพ็คเกจนี้ (ด้วยเหตุผลอื่น ๆ ) สมมติว่านักพัฒนาเว็บต้องแก้ไขแพ็คเกจนี้เพื่อทำการเปลี่ยนแปลงในการผลิต
สาขาที่เรียบง่ายจะไม่สามารถใช้งานได้เนื่องจากเราไม่สามารถเห็นการเปลี่ยนแปลงของเราได้โดยไม่ต้องเผยแพร่แพ็คเกจเป็นต้น
การใช้ส้อม: ตอนนี้เป็นตอนที่เราต้องใช้กลอุบายเล็กน้อยกับแพ็คเกจของเราดังนั้นเราจึงสร้างโคลนของแพ็คเกจการผลิตด้วยส้อม ไฟล์ composer.json สามารถอัปเดตให้ชี้ไปที่ทางแยกซึ่งตอนนี้อยู่ที่เส้นทางผู้ใช้หรือกลุ่ม
ดังนั้นเราจะสร้างส้อมใน https://github.com/yardpenalty/mypackage.git
และเรียกมันว่า https://github.com/yardpenalty/yards/mypackage.git
ตอนนี้เราสามารถอัปเดตไฟล์composer.jsonของเราให้ชี้ไปที่แพ็กเกจนี้ใน "ที่เก็บ" ของเรา: [อาร์เรย์เช่นนี้แล้วเราจะไป!
{
"type": "github",
"url": "https://github.com/yardpenalty/yard/mypackage.git"
}
]