มันจะดีกว่าที่จะเริ่มคำขอดึงหรือดำเนินการผสานท้องถิ่นกระทำกับต้นแบบ?


12

ตอนนี้ฉันใช้ GitHub มาระยะหนึ่งแล้วฉันมักจะใช้ฟีเจอร์ - สาขาแล้วก็เริ่มคำขอดึงซึ่งตัวฉันเองรวมเข้าด้วยกัน ฉันพบว่ามันช่วยฉันติดตามว่าฉันรวมสาขาที่ไหน

แต่เมื่อเร็ว ๆ นี้ฉันได้อ่านมากขึ้นเกี่ยวกับวิธีการทำงานของ Git และฉันก็ตระหนักว่าฉันสามารถใช้การผสานที่มุ่งมั่นในการอ้างถึงเมื่อฉันรวมสาขา

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

ฉันได้อ่านIntroducing Pull Requests สำหรับทีม 2 คนแล้วรวมคำขอของฉันเองหรือ และขั้นตอนการทำงานกับ 2 คนในโครงการคืออะไรและฉันควรจะเปิดคำขอดึงจากสาขาใน repo อย่างเป็นทางการหรือทางแยกของฉัน? แต่ดูเหมือนว่าไม่มีใครตอบคำถามที่ฉันต้องการ


2
คุณรู้สึกว่าขาดอะไรจากคำตอบเหล่านั้น?
RubberDuck

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

1
ฉันกำลังดูสิ่งนี้จากวิธีปฏิบัติที่ดีที่สุดหรือวิธีรักษามุมมองประวัติ Git ที่ดี
Ashhar Hasan

1
เมื่อฉันรวม PR ฉันทำเช่นนั้นด้วยการรวมสาขาในพื้นที่ สิ่งนี้ทำให้ฉันแน่ใจว่าการผสานใช้อย่างหมดจดและทำการทดสอบอีกครั้งก่อนที่จะเผยแพร่ผลลัพธ์ คำขอดึงข้อมูลของ GitHub เป็นเพียงขั้นตอนการทำงานที่เป็นทางการนี้ Git เองก็ไม่มีแนวคิดของ PRs
amon

2
เมื่อ PR รวมเข้าด้วยกันมันจะทำให้เกิดการรวมกลุ่มกับมาสเตอร์ดังนั้นฉันไม่คิดว่านี่จะสร้างความแตกต่างให้กับประวัติคอมไพล์ ดังนั้นฉันไม่คิดว่าจะมีเหตุผลใดที่จะใช้อย่างใดอย่างหนึ่งนอกเหนือจากการตั้งค่าส่วนตัวของคุณระหว่างบรรทัดคำสั่งและ Github UI
Ixrec

คำตอบ:


15

กลไก git-merge:
การใช้git merge featureขณะที่บนมาสเตอร์ผสานสาขาfeatureกับmasterและสร้าง a merge-commit(หากไม่สามารถส่งต่อสาขาได้อย่างรวดเร็ว) ในประวัติ git เพื่อบังคับให้merge-commitมีการทำใช้ตัวเลือกด้วย--no-ffmerge

ผสานกลไกการดึงคำขอ:
เมื่อเราเริ่มคำขอดึงบน GitHub มันจะสร้างGitHub Issueที่ที่ผู้คนสามารถพูดคุยและหารือเกี่ยวกับข้อตกลงในการประชาสัมพันธ์ก่อนที่จะรวมเข้าด้วยกัน เมื่อมีการประชาสัมพันธ์รวมบน GitHub git merge featureมันจะเป็นสิ่งเดียวกันกับ

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

แนวทางปฏิบัติที่ดีที่สุด:
และฉันไม่สามารถหาแนวทางปฏิบัติที่ดีที่สุดได้ แต่ตรรกะบอกว่า PRs ไม่เป็นประโยชน์มากนักถ้ามีเพียงคนเดียวในที่เก็บ

@lxrec และ @amon ช่วยให้ฉันได้ข้อสรุปนี้


5
เคล็ดลับ: git mergeอาจไม่บันทึกการรวมที่กระทำหากสามารถทำได้ "กรอไปข้างหน้า" หากต้องการบังคับให้คอมมิชชันรวมคุณสามารถเพิ่ม--no-ffตัวเลือก
amon

ฉันชอบทำ git-merge บน local มากกว่าทำบน githuib.com ถ้าฉันต้องทำอะไรเช่นนี้บน github.com ฉันไม่ต้องการทำโดยตรงบนสาขาหลักฉันควรเลือกสาขาที่ไม่ใช่สาขาที่สามารถทำได้ก่อน ถูกตั้งค่าในโหมดการแสดงละครก่อนที่จะให้พร้อมสำหรับการผลิต
Ciasto piekarz

5

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

โปรดทราบว่าอาจใช้ข้างหน้าอย่างรวดเร็วหากมีการเปลี่ยนแปลงที่จะโทไม่ดังนั้นคุณอาจต้องการที่จะใช้git merge git merge --no-ffฉันมักจะไม่

ดังนั้นโดยสรุปให้ใช้เฉพาะ PRs เมื่อคุณต้องการสนทนา มิฉะนั้นเพียงผสานโดยตรง


1
นอกจากนี้ยังมีมูลค่าการกล่าวถึงว่าการอภิปรายและข้อเสนอแนะเกี่ยวกับคำขอดึงสามารถมาจากแหล่งอัตโนมัติและสมาชิกในทีม หากคุณมีการตั้งค่าเซิร์ฟเวอร์ CI จะสามารถให้ผลลัพธ์การสร้างและทดสอบเพื่อให้คุณไม่ต้องรวมบางสิ่งบางอย่างที่ทำลายการสร้างบนต้นแบบ
Eric
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.