ทำงานในสาขาที่ต้องพึ่งพาสาขาอื่นที่กำลังตรวจสอบอยู่


65

git ช่วยจัดการกับสถานการณ์ด้านล่างได้อย่างไร:

ฉันมีภาระงานแบ่งออกเป็น 2 ส่วนคือส่วนแบ็กเอนด์และส่วนหน้า ฉันสร้างคำขอดึงเพื่อรวมการเปลี่ยนแปลงแบ็กเอนด์และรอให้รวมเข้าด้วยกัน ในขณะที่รอฉันไม่สามารถทำงานกับการเปลี่ยนแปลงส่วนหน้าได้เพราะมันขึ้นอยู่กับการเปลี่ยนแปลงแบ็กเอนด์และสิ่งเหล่านั้นยังไม่สามารถใช้ได้ในสาขาหลัก

วิธีที่ดีที่สุดในการดึงการเปลี่ยนแปลงไปยังสาขาการเปลี่ยนแปลงส่วนหน้าจากสาขาการเปลี่ยนแปลงแบ็กเอนด์ในขณะที่มันยังอยู่ในระหว่างการตรวจสอบ?


14
โดยปกติแล้วอินเตอร์เฟสของโครงการแบ็คเอนด์ควรมีการกำหนดไว้อย่างชัดเจน ดังนั้นเมื่อเริ่มต้นการใช้งานส่วนหน้าของคุณมันไม่ควรรบกวนคุณหากตรรกะด้านหลังยังคงได้รับการตรวจสอบเนื่องจากคุณสามารถใช้การจำลองได้
Herr Derb

17
@HerrDerb โอ้เด็กฤดูร้อนหวาน ...
gardenhead

4
ทำไมคุณไม่สามารถเขียนมันกับรหัสแบ็กเอนด์ที่ยังไม่ผ่านการตรวจสอบของคุณ?
user253751

ทีมของคุณมีเทคนิคที่ตกลงร่วมกันเพื่อจัดการสถานการณ์นี้หรือไม่? ถ้าไม่คุณอาจเห็นด้วยกับเรื่องนี้เพราะมันเป็นสถานการณ์ที่ค่อนข้างธรรมดา
Radu Murzea

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

คำตอบ:


42

ฉันมีปัญหานี้บางครั้งเกินไป Git ยืดหยุ่นได้มาก นี่เป็นวิธีหนึ่งที่คุณสามารถทำได้

สาขาแรกของคุณfeatureAพร้อมสำหรับการตรวจสอบแล้ว

สาขาที่สองของคุณfeatureBกำลังพัฒนาและขึ้นอยู่กับรหัสในfeatureAสาขา

รวมfeatureAกิ่งไม้เข้ากับfeatureBกิ่งไม้

หากคุณทำการเปลี่ยนแปลงfeatureAสาขาคุณควรผสานfeatureAสาขาเข้ากับfeatureBสาขาอีกครั้งเพื่อรวมการเปลี่ยนแปลง

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

ฉันชอบเมื่อสาขาฟีเจอร์ของฉันไม่ได้ขึ้นอยู่กับแต่ละอื่น ๆ แต่บางครั้งพวกเขาก็ทำได้และคุณต้องหมุนไปด้วย


มันสมเหตุสมผลแล้ว สิ่งนี้จะช่วยให้ยกเลิกการรวมfeatureAเข้าด้วยกันfeatureBถ้าจำเป็นหรือไม่
sul4bh

8
ไม่มีการดำเนินการเลิกทำ แต่ในขณะที่ @ 9000 กล่าวถึงคุณสามารถสร้างสาขาใหม่และเชอร์รี่เลือกสิ่งที่คุณต้องการจากfeatureAนั้นถ้าคุณต้องเริ่มต้นใหม่อีกครั้ง เป็นเรื่องดีที่จะคิดว่าสาขา Git เป็นแบบใช้ครั้งเดียว พวกเขามีราคาถูกและง่ายคุณสามารถสร้างสาขาใหม่ได้เสมอ คุณสามารถแยกสาขาทดสอบออกจากสาขาของคุณfeatureBหากคุณต้องการเล่นกับบางสิ่งที่คุณไม่แน่ใจแล้วทิ้งมันถ้ามันไม่ได้ผลหรือรวมมันกลับไปที่featureBสาขาของคุณถ้ามันทำ
Matt

9
การผสานจะสร้างความยุ่งเหยิงที่ยากที่จะย้อนกลับ ฉันต้องการรวบรวมเชอร์รี่เลือกใหม่หรือรีบูต (เช่น: เชอร์รี่เลือกทุกอย่างในฟีเจอร์ A ที่ฐานของฟีเจอร์ B) ดูคำตอบของ 9000
Pierre.Sassoulas

1
สิ่งนี้จะสร้างประวัติศาสตร์ที่ซับซ้อนซึ่งจะเป็นปัญหามานานหลายปีเมื่อใดก็ตามที่ใครบางคนต้องการที่จะเข้าใจว่าโค้ดอะไรถูกเปลี่ยนสำหรับฟีเจอร์ A และฟีเจอร์ B
Ian

2
หากฟีเจอร์ A ได้รับการอัปเดตฟีเจอร์ B ควรถูกรีบูทใหม่ไม่ได้ผสาน
Lyndon White

39

กดค้างไว้ข้ามการรวม

สำหรับวิธีนี้คุณไม่ต้องการรวมfeature_aเข้าด้วยfeature_bกันซ้ำ ๆ

การรีบูตได้ถูกกล่าวถึงในคำตอบอื่น ๆ แต่สำหรับการรีบูตสิ่งต่าง ๆ ลงบนmasterเท่านั้น สิ่งที่คุณต้องการทำในกรณีของคุณคือ:

  • เริ่มต้นfeature_bจากของคุณfeature_aเช่น:

    git checkout feature_a
    git checkout -b feature_b
    
  • เมื่อใดก็ตามที่มีfeature_aการเปลี่ยนแปลงในขณะที่กำลังรอการรวมเข้าด้วยกันmasterคุณจะทำการรีบูต feature_bมัน:

    ... commit something onto feature_a ...
    git checkout feature_b
    git rebase feature_a
    
  • ในที่สุดทันทีที่feature_aมีการรวมเข้าด้วยกันmasterคุณจะได้รับสิ่งใหม่masterและfeature_aการลดระดับเป็นครั้งสุดท้าย:

    git checkout master
    git pull origin master
    git checkout feature_b
    git rebase --onto master feature_a feature_b
    

    นี้ rebase สุดท้ายจะรับสินบนกระทำทั้งหมดที่ห้อยจากfeature_aการกระทำ (ซึ่งขณะนี้ไม่เกี่ยวข้องตามที่ได้รับการผสานเข้าmaster) masterขวาเข้า ของคุณอยู่ในขณะนี้การที่ง่ายและสาขามาตรฐานจะถูกต้องจากfeature_bmaster

แก้ไข: แรงบันดาลใจจากความคิดเห็นหัวขึ้นเล็กน้อย: หากคุณต้องการเปลี่ยนแปลงบางอย่างที่มีผลต่อคุณสมบัติทั้งสองจากนั้นตรวจสอบให้แน่ใจในfeature_a(และจากนั้นรีบูตตามที่แสดง) อย่าได้ทำให้มันอยู่ในสองกระทำที่แตกต่างกันทั้งในสาขาแม้ว่าอาจจะดึงดูด; ในฐานะที่feature_aเป็นส่วนหนึ่งของประวัติศาสตร์ของfeature_bการมีการเปลี่ยนแปลงเดียวในสองกระทำที่แตกต่างกันจะผิดความหมายและอาจนำไปสู่ความขัดแย้งหรือ "การฟื้นคืนชีพ" ของรหัสที่ไม่พึงประสงค์ในภายหลัง


2
ด้วยการรีบูตfeature_aหลายครั้งคุณอาจพบปัญหาในภายหลังเมื่อfeature_aตัวเองถูกรีบูทในเวลาเดียวกัน เป็นผลจากการทำงานของคุณอาจได้รับความขัดแย้งหรือกระทำตลกที่มีกระทำการยกเลิกการเปลี่ยนแปลงใหม่git checkout feature_b; git rebase feature_a feature_aโดยปกติแล้วจะสามารถแก้ไขได้โดยใช้--interactiveและข้ามการคอมมิชชันที่นำมาจากสาขาเก่าของสาขาอื่น (ฉันต้องทำสิ่งนี้หลายครั้งเมื่อเร็ว ๆ นี้)
maaartinus

@ maaartinus ขอบคุณสำหรับหัวหน้าขึ้นฉันไม่ได้พบปัญหาดังกล่าวด้วยตัวเอง เช่นเดียวrebaseกับขั้นตอนส่วนบุคคลมากกว่าขั้นตอนง่าย ๆmergeย่อมมีโอกาสสูงขึ้นที่จะสร้างความขัดแย้ง ในทางกลับกันmergeอาจเป็นความผิดที่ค่อนข้างจะเกิดขึ้นในกรณีนี้
AnoE

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

1
@ maaartinus ฉันได้เพิ่มภาคผนวกเล็ก ๆ เกี่ยวกับเรื่องนี้ (เพื่อทำการเปลี่ยนแปลงอย่างต่อเนื่องซึ่งจำเป็นต้องเข้าไปในทั้งสองสาขาเฉพาะในสาขาฐานไม่ใช่ในสองคอมมิชชันที่ต่างกัน)
AnoE

เทคนิคที่ดี มันเป็นวิธีที่ฉันมักจะทำเช่นกัน git rebase --ontoFTW: D
Radu Murzea

29

คุณมีสาขาที่สาขาฟีเจอร์ทุกสาขาของคุณขึ้นอยู่กับที่และเปลี่ยนแปลงอยู่ตลอดเวลา masterมันเรียกว่า

วิธีทั่วไปสำหรับสาขาฟีเจอร์ที่จะซิงค์masterอยู่กับที่จะอยู่ด้านบนของมัน เมื่อมีmasterการเปลี่ยนแปลงตามปกติคุณจะgit fetch origin master:master && git rebase masterอยู่ในไดเรกทอรีทำงานของสาขา

คุณสามารถทำสิ่งเดียวกันกับสาขาฟีเจอร์อื่นได้: ดึงข้อมูลและรีบูตจากด้านบน

หากด้วยเหตุผลบางอย่างคุณจะต้องย้ายการเปลี่ยนแปลงของคุณไปยังสาขาอื่นคุณสามารถรับเชอร์รี่ที่คุณไม่เคยผสมกับคอมมิชชันของสาขาอื่น


แต่ฉันคิดว่าสถานการณ์คือฟีเจอร์ -b ต้องการโค้ดที่อยู่ในฟีเจอร์ -a การแตกสาขาจากต้นแบบจะไม่ช่วยได้มากนัก ฉันจะเริ่มได้ที่ไหน ฉันควรแยกสาขาจากฟีเจอร์ a และเก็บซิงโครไนซ์ไว้จนกว่าฟีเจอร์ a จะถูกรวมเข้ากับมาสเตอร์และจากนั้นรีบูตจากมาสเตอร์ไปยังฟีเจอร์ b
Sinaesthetic

@Sinaesthetic: คุณสามารถฐานแน่นอนfeature-bบนfeature-aและทำเวลา rebase หลังจากเวลาที่feature-aมีการเปลี่ยนแปลง นี่เป็นวิธีทั่วไปที่จะทำการเปลี่ยนแปลงขนาดใหญ่ที่สังเกตได้: แบ่งออกเป็นpart-A(ปิดตามmaster), part-B(ปิดตามpart-A) และอื่น ๆ หากจำเป็น จากนั้นทำการร้องขอการดึงสำหรับแต่ละส่วนและผู้ตรวจสอบจะมีเวลาง่ายขึ้นในการดูชิ้นส่วนที่เล็กกว่าและจัดกลุ่มตามหลักเหตุผล
9000

จะเกิดอะไรขึ้นถ้าฉันรีบูตส่วน -b กับ part-a vs. part-b กับ master ในรูปของ PR? ฉันแค่ต้องการให้แน่ใจว่าการเปลี่ยนแปลงของฉันไม่แสดงการเปลี่ยนแปลงส่วนหนึ่งเป็นการเปลี่ยนแปลงในส่วนที่ -b นอกจากนี้ถ้าฉันผสานกับการรีบูตสิ่งนี้จะส่งผลต่อ PR-b อย่างไร ทุกครั้งที่ฉันคิดว่าฉันเข้าใจผลกระทบฉันจะได้ผลลัพธ์ที่แตกต่างออกไปฮ่า ๆ ๆ
Sinaesthetic

5

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

สาขาฟีเจอร์ที่มีชีวิตอยู่นานพอที่จะต้องรวมในการเปลี่ยนแปลงจากต้นแบบเป็นครั้งคราว (เพื่อให้แน่ใจว่าคุณจะกระทบยอดการรวมหรือความขัดแย้งทางความหมายในฐานะที่เป็นส่วนหนึ่งของ dev ทำงานในฟีเจอร์สาขาแทนที่จะเป็นส่วนหนึ่งของ กระบวนการสู่ต้นแบบ ") ดังนั้นคุณจึงทำเช่นนั้นในสาขาปลายด้านหน้าของคุณและเมื่องานแบ็กเอนด์ได้รับการยอมรับเป็นอย่างดีคุณจะได้รับการเปลี่ยนแปลงเล็กน้อยที่ทำกับแบ็กเอนด์โดยเป็นส่วนหนึ่งของการตรวจสอบ / การยอมรับโดยอัตโนมัติตามเส้นทางเดียวกับที่คุณต้องการ รับการเปลี่ยนแปลงรหัสอื่น ๆ ในต้นแบบ

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

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


2

ฉันไม่เห็นปัญหาที่นี่

คุณมีสิ่งนี้ทุกครั้งที่มีmasterสาขาของคุณซึ่งเปลี่ยนแปลงอยู่ตลอดเวลาในขณะที่คุณสมบัติต่างๆได้รับการพัฒนาและผสานเข้าด้วยกัน

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

ดังนั้นเพียงแค่เริ่มต้นสาขาอื่น, feature_yyy_frontend. คุณอาจต้องการที่จะแยกสาขาโดยตรงfeature_xxx_backendเพื่อให้คุณมีการเปลี่ยนแปลงเหล่านั้นในธนาคารของคุณ masterจากนั้นก็พัฒนาคุณลักษณะส่วนหน้าราวกับสาขาได้

เมื่อfeature_xxx_backendสาขาเปลี่ยนแปลงเช่นเนื่องจากมีสิ่งต่าง ๆ เกิดขึ้นระหว่างการตรวจสอบที่จำเป็นต้องแก้ไขเพียงทำการเปลี่ยนแปลงเหล่านี้และผสานเข้ากับfeature_yyy_frontendสาขา จากนั้นดำเนินการต่อในส่วนหน้าสาขา

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

สิ่งนี้สามารถทำได้เมื่อคุณมีสาขาขึ้นอยู่กับสองสามหรือมากกว่านั้น หากคุณมีสาขาฟีเจอร์สองสาขาที่คุณพึ่งพาให้สร้างสาขาที่ได้มาซึ่งมีทั้งฟีเจอร์ที่ผสานสาขาจากนั้นพัฒนาฟีเจอร์ที่สามผสานสาขาฟีเจอร์ทั้งสองไปพร้อมกันเมื่อแต่ละการเปลี่ยนแปลงเหล่านั้น เมื่อคุณสมบัติทั้งสองเสร็จสิ้นและถูกรวมเข้ากับสาขาที่ได้รับให้ทำการ rebase ไปยังที่นั้นหรือถ้าพวกมันถูกรวมเข้ากับ master ให้ทำการ rebase ไปยัง master

การรีบูต (ดังที่แนะนำไว้ด้านบน) มีประสิทธิภาพมากและช่วยให้บันทึกการเปลี่ยนแปลงนั้นสะอาดหมดจดทำให้การตรวจสอบง่ายขึ้นมาก


2

ดังที่ Polygnome กล่าวถึงคุณสามารถผสานสาขาส่วนหน้ากับสาขาแบ็กเอนด์แทนเจ้านายได้ แม้จะมีการตั้งค่าสาขาปัจจุบันที่คุณมีอยู่ตอนนี้คุณก็สามารถทำได้:

git checkout frontend
git merge backend

หรือเพียงแค่

git merge backend frontend

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

ในทางเทคนิคคุณสามารถทำทุกอย่างด้วยการรีบูต แต่นั่นจะทำให้ประวัติศาสตร์ของสาขาส่วนหน้าของคุณยุ่งเหยิง ฉันมาจากไหนถือว่าเป็นการกระทำที่ไม่ดี YMMV


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

@ ส่วนต่อหน้า Polygnome ไม่จำเป็นต้องแยกจากแบ็กเอนด์โดยตรง ทั้งสองสามารถแยกจากต้นแบบได้เช่นกัน แต่คุณยังสามารถผสานได้ ดังนั้นคำตอบของคุณไม่ได้พูดถึงสิ่งนั้น
Joris Meys

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

@ Polygnome แล้วฉันเข้าใจผิดคำตอบของคุณ อัปเดตโดยเฉพาะสำหรับคุณ :-)
Joris Meys

ฉันไม่ทราบว่าใครเป็นผู้ลงคะแนนในเรื่องนี้ แต่โปรดช่วยบอกฉันด้วยว่าฉันผิดตรงไหน
Joris Meys

1

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

เมื่อใดก็ตามที่คุณมีสองชุดของการเปลี่ยนแปลงครั้งใหญ่ที่คุณต้องการที่จะตรวจสอบเป็นรายบุคคล (ชอบfeatureAและfeatureB) สร้างการประชาสัมพันธ์ที่ไม่ได้หมายความว่าจะต้องรวม แต่เพื่อรวบรวมความคิดเห็นต้นบน PoC featureAของ

ผู้คนจะสามารถตรวจสอบได้อย่างรวดเร็ว (เป็นเพียง PoC) และมีวัตถุประสงค์เพื่อตรวจสอบการออกแบบหรือวิธีการทั่วไป

จากนั้นคุณสามารถทำงานกับคุณสมบัติ A สร้างคำขอดึงและสาขาและทำงานในคุณสมบัติ B

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

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