Git flow - สร้างฟีเจอร์แยกสาขาออกจากสาขาฟีเจอร์อื่น


86

ฉันใช้git flowมาระยะหนึ่งแล้ว ฉันอยากรู้เกี่ยวกับกรณีการใช้งานที่เฉพาะเจาะจง

สำหรับหนึ่งในโครงการของฉันฉันมีตั๋วสำหรับคุณสมบัติเว็บไซต์ใหม่ ตั๋วนี้ขึ้นอยู่กับงานย่อยหลายอย่าง ฉันต้องการสร้างสาขาคุณลักษณะสำหรับตั๋วหลักจากนั้นสำหรับงานย่อยแต่ละงานให้สร้างสาขาคุณลักษณะจากสาขาคุณลักษณะหลัก

สมมติว่าฉันมีตั๋ว PROJ-500 และฉันสร้างสาขาคุณลักษณะสำหรับมัน

git flow feature start PROJ-500

แล้วฉันต้องการที่จะรวมตั๋วPROJ-501ผ่านPROJ-515เข้าไปก่อนที่จะรวมทั้งสิ่งที่เข้ามาในPROJ-500 developมีวิธีให้ฉันทำอะไรบ้างเช่น

git flow feature start PROJ-511 -b PROJ-500

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

git flow feature finish PROJ-511

คำสั่งดังกล่าวจะรวมPROJ-511เข้าด้วยกันPROJ-500

และเมื่องานย่อยทั้งหมดเสร็จสิ้นแล้วก็PROJ-500จะเสร็จสิ้นและรวมเข้าdevelopด้วยกัน

ด้วยวิธีนี้คุณลักษณะใหม่ของเว็บไซต์จะรวมเข้ากับการพัฒนาเป็นหน่วยเดียวแทนที่จะเป็นแบบทีละชิ้น


นี่ไม่ทำหรอ git flow feature start PROJ-511 PROJ-500เหรอ? ลิงก์ที่คุณโพสต์ในความคิดเห็นไปยังคำตอบของ DerekS ชี้ให้เห็นว่าควร
Paul Hicks

คำตอบ:


120

คุณสามารถสร้างสาขาคุณสมบัติย่อยผ่านทาง

git flow feature start PROJ-511 feature/PROJ-500

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

git flow feature finish PROJ-511

คุณลักษณะนี้จะรวมเข้าdevelopด้วยกัน ไม่รองรับคุณสมบัติย่อยของ Ergo คุณต้องดำเนินการด้วยตนเอง

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


อัปเดต 2019-12-13:ตามที่ผู้ใช้MatějKřížเพิ่งพูดถึงในความคิดเห็นของเขาผู้ใช้Tony Chemitได้เขียนคำตอบที่นี่ไม่กี่เดือนหลังจากของฉันโดยชี้ไปที่gitflow-avhเป็นทางเลือกแทนผลิตภัณฑ์ gitflow ดั้งเดิม สนับสนุนคุณสมบัติย่อยนอกกรอบด้วยไวยากรณ์ที่แสดงด้านบน หลายปีผ่านไปและปัจจุบันรุ่น AVH เป็นส่วนหนึ่งของการติดตั้ง Git สำหรับ Windows ตามปกติฉันเพิ่งตรวจสอบสิ่งนี้ในกล่องภายในของฉันและทดสอบตัวเลือกคุณสมบัติย่อย เช่นสำหรับผู้ใช้ Windows จะใช้งานได้ทันทีหลังจากติดตั้ง Git


1
@pymarco: ขอบคุณที่ยอมรับคำตอบ ฉันสงสัยว่า: คุณลองทางเลือกอื่นหรือไม่? ถ้าเป็นเช่นนั้นผลลัพธ์คืออะไรและเป็นอย่างไร ได้ผลตามที่คาดหวังหรือไม่? บางทีผู้อ่านคนอื่นอาจเรียนรู้บางอย่างจากประสบการณ์ของคุณ :-)
kriegaex

ขออภัยฉันไม่มีเวลากลับไปที่นี่ ฉันจะพยายามในบางจุด
pymarco

3
ทำไมต้องโหวตลง? การโหวตลงคะแนนมีไว้เพื่อใช้สำหรับคำตอบที่เขียนไม่ดีและไม่เป็นระเบียบซึ่งแสดงว่าไม่มีความพยายามในการค้นคว้าหรือความรู้ ยังไงก็ขอบคุณ
kriegaex

หากคุณใช้เวอร์ชัน gitflow-avh ให้ดูที่ด้านล่างที่stackoverflow.com/a/29353800/472611 @ tony-chemit คำตอบ
MatějKříž

32

อย่างที่ฉันเข้าใจ gitflow นั้นค่อนข้างถูกละทิ้ง

gitflow-avhแทนที่และเสนอคุณสมบัตินี้ (ดู https://github.com/petervanderdoes/gitflow#creating-featurereleasehotfixsupport-branches )

ฉันแค่ลองและมันก็ใช้ได้ดีกับฉัน

git flow feature start PROJ-511 feature/PROJ-500
git flow feature finish PROJ-511

PROJ-511ถูกผสานเข้ากับคุณลักษณะ / PROJ-500


13

ดังที่ได้กล่าวไปแล้วเราสามารถเริ่มต้นคุณลักษณะใหม่โดยใช้สาขาฐานใดก็ได้

git flow feature start PROJ-511 feature/PROJ-500

และเพื่อสิ้นสุดคุณสมบัติย่อยเราสามารถเปลี่ยนการกำหนดค่า git flow ชั่วคราวเพื่อใช้สาขาคุณลักษณะของเราแทนdevelop:

git flow config set develop feature/PROJ-500 && git flow feature finish PROJ-511

ด้วยวิธีนี้ git flow จะเรียกใช้คำสั่งและการตรวจสอบความสมบูรณ์ สุดท้ายในการคืนค่า config เราสามารถเรียกใช้

git flow config set develop develop 

9

อัปเดต (5 พฤศจิกายน 2020): ดังที่ระบุไว้ในคำตอบที่ใหม่กว่าที่นี่สิ่งนี้เป็นไปได้ด้วย gitflow-avh ซึ่งแทนที่ git flow เดิม

===================

คำตอบเดิม:

ฉันไม่คิดว่าจะมีวิธีการนี้ใน git flow แต่มันค่อนข้างง่ายเพียงแค่ git

git checkout PROJ-500
git checkout -b PROJ-511
...do your PROJ-511 work...
git checkout PROJ-500
git merge PROJ-511
git branch -d PROJ-511

2
ขอบคุณ Derek ที่ตอบกลับ ใช่ฉันสามารถทำตามขั้นตอนการทำงานนั้นได้ แต่ git flow จะห่อหุ้มคำสั่งจำนวนหนึ่งและการตรวจสอบความมีเหตุผลที่ฉันต้องการใช้สำหรับการพัฒนาคุณลักษณะย่อย ตัวอย่างเช่นลิงค์ไปยัง git-flow-feature - github.com/nvie/gitflow/blob/develop/git-flow-feature
pymarco
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.