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