การใช้ git branching ที่ดีสามารถช่วยในเรื่องนี้ได้อย่างแน่นอน สิ่งสำคัญคือแต่ละสาขามีพื้นฐานการกำหนดค่าที่มั่นคง: ไม่มีอะไรภายนอกสาขาควรเปลี่ยนสถานะการกำหนดค่าภายในสาขา ดังนั้นเมื่อถึงเวลาส่งออกการกำหนดค่าในสาขาและรวมเข้ากับการผลิตในภายหลัง เฉพาะการเปลี่ยนแปลงที่เกี่ยวข้อง บันทึกไปยังสาขา
วิธีหนึ่งในการทำเช่นนี้คือการเรียกสาขาหลัก การผลิต
และ HEAD ของสาขานั้นจะติดตามสถานะการผลิตปัจจุบันของโค้ดเบสของคุณเสมอ คุณทุกคนตกลงที่จะไม่ผูกมัดหรือรวมสิ่งต่างๆ การผลิต
นอกเสียจากว่าคุณกำลังเตรียมที่จะเผยแพร่สิ่งเหล่านั้นแบบสดๆ
เมื่อ Arjun ต้องการทำงานในลักษณะใหม่ พวกเขาสร้างสาขาใหม่ขึ้นมา การผลิต
และพวกเขาเรียกมันว่า อาร์จัน-1
.
วันรุ่งขึ้น เบธต้องแก้ไขจุดบกพร่อง เธอจึงสร้างสาขาใหม่ของเธอเอง การผลิต
เรียกว่า เบธ-1
.
ในขณะเดียวกัน Ceci ผู้จัดการเนื้อหาอยู่ใน UI ของไซต์ที่สร้างเว็บฟอร์ม ซึ่งหมายความว่าเธอกำลังทำการเปลี่ยนแปลงการกำหนดค่าแบบสดที่แตกต่างจากสถานะการกำหนดค่าของ การผลิต
. ในทางหนึ่งเธอก็แตกแขนงออกไปเช่นกัน การผลิต
! อันที่จริง เรามาเริ่มสร้าง เซซี-1
สาขาออกจาก การผลิต
ตอนนี้เพื่อเป็นตัวแทนของสิ่งนี้แม้ว่าเราอาจจะยังไม่ได้ทำอะไรกับมัน
ไม่กี่วันต่อมา สาขาที่เกี่ยวข้องของ Arjun และ Beth ได้รับการตรวจสอบและยอมรับแล้ว และผู้บริหารต้องการนำผลงานรุ่นใหม่ไปใช้กับไซต์ที่ใช้งานจริง
สิ่งแรกที่ต้องทำคือตรวจสอบ เซซี-1
สาขา ส่งออกการกำหนดค่าที่ใช้งานอยู่และยอมรับไฟล์การกำหนดค่าที่อัปเดตแล้ว เซซี-1
.
ตอนนี้คุณสามารถดำเนินการผสานกับ การผลิต
: คุณสมบัติใหม่ อาร์จัน-1
การแก้ไขจุดบกพร่อง เบธ-1
และการอัปเดตการกำหนดค่าแบบสด เซซี-1
. อาจมีข้อขัดแย้งในการผสานที่ต้องตรวจสอบ แต่คุณไม่ควรกังวลเกี่ยวกับการเขียนทับการกำหนดค่าของผู้อื่นโดยไม่ตั้งใจ เนื่องจากแต่ละสาขามีพื้นฐานที่สอดคล้องกันในการส่งออกการเปลี่ยนแปลงการกำหนดค่าของตนเอง
สมมติว่าคุณไม่ได้ทำ เซซี-1
สาขา. แต่คุณรวมกันแทน อาร์จัน-1
และ เบธ-1
เข้าไปข้างใน การผลิต
จากนั้นส่งออกการกำหนดค่าที่ใช้งานจริงและยืนยันการอัปเดตที่ใช้งานจริง การผลิต
. คุณทำพลาดแล้ว! คุณเปลี่ยนพื้นฐานสำหรับการเปลี่ยนแปลงการกำหนดค่าไซต์สดของ Ceci พวกเขาตั้งอยู่บนสถานะของการผลิตโดยไม่มีสาขาของ Arjun และ Beth การส่งออกตอนนี้จะเขียนทับการเปลี่ยนแปลงการกำหนดค่าที่ทำไว้