ดึงคำขอกับคำขอรวม


466

อะไรคือความแตกต่างระหว่างคำขอดึงและคำขอรวม

ใน Github เป็นคำขอการดึงและใน GitLab เป็นคำขอรวม ... มีความแตกต่างระหว่างทั้งสองนี้ไหม

คำตอบ:


763

คุณลักษณะ"คำขอรวม"ของ GitLab นั้นเทียบเท่ากับคุณลักษณะ"คำขอดึง"ของ GitHub ทั้งสองวิธีเป็นการดึงการเปลี่ยนแปลงจากสาขาอื่นหรือแยกเข้าสู่สาขาของคุณและรวมการเปลี่ยนแปลงกับรหัสที่มีอยู่ของคุณ เป็นเครื่องมือที่มีประโยชน์สำหรับการตรวจสอบโค้ดและการจัดการการเปลี่ยนแปลง

บทความจาก GitLabกล่าวถึงความแตกต่างในการตั้งชื่อสถานที่ที่ต้องการ:

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

"คำขอรวม" ไม่ควรสับสนกับgit mergeคำสั่ง ไม่ควร "ดึงคำขอ" จะสับสนกับgit pullคำสั่ง gitคำสั่งทั้งสองถูกใช้หลังฉากในคำขอการดึงและคำขอรวม แต่คำขอผสาน / ดึงอ้างถึงหัวข้อที่กว้างกว่าเพียงแค่สองคำสั่ง


1
GitHub สร้างสาขากลาง / ชั่วคราว (มองไม่เห็น) เมื่อมีการร้องขอการดึงหรือไม่?
Robert Koritnik

1
@stevemao เราสามารถเข้าถึงได้อย่างไร พวกเขาอ่านจริง ๆ เท่านั้นที่เราสามารถแก้ไขข้อขัดแย้งกับพวกเขา
Robert Koritnik

11
ฉันพลาดอะไรไป pull = fetch + merge หากการกระทำสุดท้ายเป็นการผสานการดำเนินการแรกจะต้องดึงข้อมูล
Vytenis Bivainis

59
นายเป็นชื่อที่ดีกว่าทุกที่ คำขอดึงไม่เคยทำให้รู้สึกถึงฉันจนกว่าฉันจะอ่านคำอธิบายของคุณว่ามันเป็นการกระทำแรกในขณะที่ฉันเข้าใจสิ่งที่ขอรวมหมายถึงครั้งที่สองที่ฉันอ่านมันเป็นครั้งแรก "สวัสดีคุณช่วยรวมรหัสนี้กับสาขาหลักได้ไหม" เทียบกับ "สวัสดีคุณสามารถดึงรหัสนี้ไปที่สาขาที่มองไม่เห็นสำหรับ <การรวมโดยนัย>" - มีผู้ชนะที่ชัดเจนที่นี่
Granitosaurus

7
@Granitosaurus เห็นด้วย ในฐานะผู้เริ่มต้นในการคอมไพล์คำขอแบบดึงไม่ได้เป็นอย่างที่ฉันคาดไว้ เมื่อฉันเริ่มใช้ Gitlab การรวมคำขอเข้ากันได้ทันที
Mark Lyons

54

พวกเขาเป็นคุณสมบัติเดียวกัน

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

- https://about.gitlab.com/2014/09/29/gitlab-flow/


ไม่ควรรวมเป็นความรับผิดชอบของนักพัฒนาที่กำลังเพิ่มคุณสมบัติใหม่? หากนักพัฒนา A เพิ่มคุณสมบัติใน feature_branch เขาควรนำสาขาหลักและรวมเข้ากับสาขาของสาขาของเขาเพื่อแก้ไขข้อขัดแย้งทั้งหมดและทดสอบก่อนที่จะสร้างคำขอผสาน?
Ciasto piekarz

2
ใช่ แต่ยังคงมีการผสานอย่างรวดเร็วที่ใครบางคนจะต้องทำหลังจากนั้นเพื่อให้ได้รหัสเพื่อต้นแบบ และจริง ๆ แล้วฉันคิดว่าทีมที่ทำงานเต็มเวลานั้นน่าจะดีที่สุดถ้าผู้พัฒนาคุณลักษณะทำเช่นนั้น แต่มันอาจมีประโยชน์สำหรับพวกเขาที่จะรอให้ใครซักคนมาตรวจสอบ PR ก่อน
bdsl

21

ในมุมมองของฉันพวกเขาหมายถึงกิจกรรมเดียวกัน แต่จากมุมมองที่แตกต่างกัน:

ลองคิดถึงเรื่องนี้อลิซให้คำมั่นสัญญากับ repository A ซึ่งแยกจากที่เก็บของ Bob

เมื่ออลิซต้องการ "รวม" การเปลี่ยนแปลงของเธอเป็น B จริง ๆ แล้วเธอต้องการให้บ๊อบ "ดึง" การเปลี่ยนแปลงเหล่านี้จาก A

ดังนั้นจากมุมมองของอลิซจึงเป็น "คำขอรวม" ในขณะที่บ๊อบมองว่าเป็น "คำขอดึง"


มันทำให้ฉันนึกถึงตัวอย่างเมื่อฉันทำรายงานเล็ก ๆ เพื่อให้เพื่อนร่วมงานคนอื่นรู้ว่าคอมไพล์ทำงานได้อย่างไร
Ravi Yadav

4

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

ดูhttps://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html

"GitLab แก้ไขข้อขัดแย้งด้วยการสร้างการรวมการกระทำในสาขาต้นทางที่ไม่ได้รวมเข้ากับสาขาเป้าหมายโดยอัตโนมัติซึ่งจะช่วยให้การตรวจสอบการผสานได้รับการตรวจสอบและทดสอบก่อนที่การเปลี่ยนแปลงจะถูกผสานป้องกันการเปลี่ยนแปลงที่ไม่ตั้งใจ การสร้าง "


3

GitLab 12.1 (กรกฎาคม 2019) แนะนำความแตกต่าง:

" รวมคำขอสำหรับปัญหาที่เป็นความลับ "

เมื่อพูดคุยวางแผนและแก้ไขปัญหาที่เป็นความลับเช่นช่องโหว่ด้านความปลอดภัยอาจเป็นเรื่องที่ท้าทายอย่างยิ่งสำหรับโครงการโอเพ่นซอร์สที่จะคงประสิทธิภาพเนื่องจากพื้นที่เก็บข้อมูล Git เป็นแบบสาธารณะ

https://about.gitlab.com/images/12_1/mr-confidential.png

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

โปรดดูที่ " ประเด็นที่เป็นความลับ " จากปัญหา 58583

มีคุณลักษณะที่คล้ายกันใน GitHub แต่เกี่ยวข้องกับการสร้างส้อมส่วนตัวแบบพิเศษเรียกว่า " คำแนะนำด้านความปลอดภัยของผู้ดูแล "


0

ดังที่กล่าวไว้ในคำตอบก่อนหน้าทั้งสองตอบสนองวัตถุประสงค์เดียวกันเกือบ โดยส่วนตัวแล้วฉันชอบ git rebase และ merge request (เหมือนใน gitlab) ต้องใช้ภาระจากผู้ตรวจสอบ / ผู้ดูแลตรวจสอบให้แน่ใจว่าในขณะที่เพิ่มคำขอผสานสาขาคุณลักษณะรวมถึงการกระทำล่าสุดที่ทำในสาขาหลักหลังจากสร้างฟีเจอร์สาขาแล้ว นี่คือบทความที่มีประโยชน์มากที่อธิบายการลดระดับโดยละเอียด: https://git-scm.com/book/en/v2/Git-Branching-Rebasing

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