วิธีเปิดคำขอดึงหลายรายการใน GitHub


139

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

ฉันไม่สามารถควบคุมได้ว่าจะเพิ่มการผูกมัดใดและไม่
เมื่อฉันพยายามเปิดคำขอดึงอีกครั้งฉันได้รับข้อผิดพลาด "อุ๊ปส์! มีคำขอดึงขึ้น" แล้ว

มีวิธีง่ายๆในการเปิดคำขอดึงหลายรายการโดยไม่ต้องยุ่งกับบรรทัดคำสั่งหรือไม่

คำตอบ:


116

คำขอดึงขึ้นอยู่กับสาขา
วิธีเดียวที่จะเปิดคำขอดึงสำหรับการส่งหลายรายการคือ:

  1. แยกพวกเขาเข้าไปในสาขาของตัวเอง
  2. เปิดคำขอการดึงจากที่นั่น

3
ตกลงนั่นยอดเยี่ยมฉันคิดว่ามันเป็นแค่กับเจ้านายเท่านั้น ดังนั้นสิ่งที่คุณหมายถึงคือฉันสามารถสร้างสาขาจำนวนมาก (เช่น: คุณสมบัติการไหล git) และทำการร้องขอแบบดึงสำหรับแต่ละรายการ ... ไปลอง!
Ziyan Junaideen

8
ฉันเพิ่งพบว่าสาขารักษาประวัติความเป็นมาของการกระทำก่อนหน้าดังนั้นการร้องขอแบบดึงกับต้นน้ำยังคงรวมถึงการกระทำทั้งหมด
ปลาไหล gEEEEz

2
สวัสดี @ eel-gheez คุณคิดออกเกี่ยวกับสิ่งนี้ไหม? วิธีสร้าง PR ที่แยกได้โดยไม่แสดงการเปลี่ยนแปลงจากสาขาอื่น?
Jonathan Cross

3
สิ่งนี้ไม่ได้แก้ปัญหา: เมื่อฉันพยายามสร้างการประชาสัมพันธ์ทั้งสองสาขา (ที่มีการกระทำอย่างน้อยหนึ่งรายการ) จะถูกเปรียบเทียบ ผมทำอะไรผิดหรือเปล่า?
ลด

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

11

วิธีที่ง่ายที่สุดที่ฉันพบคือทำด้วยคำสั่งฮับ ( https://github.com/defunkt/hub )

จากสาขาหัวข้อของคุณ ("คุณสมบัติ" ในตัวอย่างนี้) ที่คุณต้องการสร้างคำขอดึงคุณสามารถเรียกใช้:

git pull-request

(อย่าลืมดันสาขาของคุณก่อน!)

และจะเปิดคำขอดึงใหม่ใน GitHub สำหรับ "YOUR_USER: ฟีเจอร์"

หากคุณได้สร้างปัญหาใน GitHub แล้วคุณสามารถแนบคำขอดึงกับปัญหาที่มีอยู่นั้นได้ (สิ่งที่คุณไม่สามารถทำได้จากเว็บ UI):

$ git pull-request -i 123
[ attached pull request to issue #123 ]

2

คุณสามารถทำสิ่งนี้ได้โดยไม่ต้องสร้างสาขาอื่น แต่ใช้เวลาเล่นเล็กน้อย
นี่คือขั้นตอน:

  1. ระบุช่วงการคอมมิตสองช่วงที่คุณต้องการดึง นี่คือสิ่งที่ฉันจะใช้เป็นตัวอย่าง:
    (อื่น ๆ / หลัก) A -> B -> C -> D -> E (คุณ / นาย)
    สมมติว่าคุณต้องการดึง B และ C ในคำขอเดียวและ D & อีในอีก
  2. ทำการร้องขอการดึง มีด้านซ้าย ("ฐาน") ที่จะกระทำ A. สำหรับด้านขวา ("หัว") พิมพ์ในจำนวนการกระทำของ C
  3. เขียนคำอธิบายสำหรับคำขอแรกของคุณ
  4. ขออีกครั้ง สำหรับฐานพิมพ์จำนวนการกระทำของ C และสำหรับหัวใส่ E (คุณ / นาย)
  5. เขียนคำอธิบาย

ตามที่ฉันเห็นคำขอดึงจะเห็นการกระทำ C เป็นจุดสาขา หรือบางสิ่งบางอย่าง.


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

ฉันโพสต์เรียงลำดับของคำตอบนี้ตรงกันข้ามกับข้อมูลบางอย่างใน Github ให้ดูstackoverflow.com/questions/23159860
Mark Bennett

ฉันสามารถเห็นสิ่งนี้จะสร้างสอง PRs ที่ดูถูกต้องในการที่พวกเขาแต่ละคนมีความมุ่งมั่นที่ต้องการ แต่จะชัดเจนว่ามันทำสิ่งที่ถูกต้องเมื่อพวกเขาได้รับการรวม? เช่นเดียวกับในฉันเห็นว่า PR แรกจะรวม B & C เข้ากับคนอื่น / อาจารย์ได้อย่างถูกต้อง แต่เมื่อการประชาสัมพันธ์ครั้งที่ 2 ผสานกันแล้วจะรู้ได้อย่างไรว่าสาขาใดที่จะผสานเข้าด้วยกัน (เนื่องจากมันถูกสร้างขึ้นจากการกระทำ 'C' ไม่ได้อยู่ที่อื่น / หลัก) มันเป็นสิ่งสำคัญที่สั่ง PRs ได้รับการผสาน? (น่าจะเป็นเช่นนั้น)
Jonathan Hartley

1

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


1

ฉันยังใหม่กับ Git และ GitHub และมีคำถามเดียวกันกับ OP

ฉันได้พบวิธีแก้ปัญหาซึ่งอาจไม่พร้อมใช้งานในเวลาที่ OP

สถานการณ์: คุณมีการเปลี่ยนแปลง 3 ครั้งและคุณต้องการให้แต่ละแบบถูกสร้างขึ้นก่อนหน้านี้และแต่ละแบบมีคำขอดึง (PR) ของตนเอง

ปัญหา: เมื่อคุณสร้าง PR ครั้งแรกที่พยายามดึงการพัฒนาสู่ต้นแบบทุกสิ่งดูดี แต่หลังจากคุณทำการเปลี่ยนแปลงสำหรับ PR ที่สองและรวมเข้าด้วยกัน (ใช้สาขาเดียวกัน) การเปลี่ยนแปลงทั้งหมดอยู่ใน PR เดียวกัน .

Mini Solution: สร้างสาขาใหม่

git branch mini_change_2
git checkout mini_change_2

ตอนนี้คุณกดรหัสไปที่ GitHub และสร้าง PR แต่เริ่มต้นที่ Pull จาก mini_change_2 เป็น master ยกเว้น master ยังไม่มีการเปลี่ยนแปลงจาก PR แรกดังนั้นจึงรวมการเปลี่ยนแปลงทั้งหมดจาก PR1 และ PR2

ทางออกที่ดีที่สุด: ระบุสาขาที่คุณกำลังรวมอยู่ใน PR2

อย่าเพิ่งยอมรับค่าเริ่มต้นเมื่อสร้าง PR ตัวที่สองกล่าวว่าคุณกำลังจะดึง mini_chnage_2 เพื่อพัฒนาสิ่งนี้จะแสดงการเปลี่ยนแปลงใน mini_change_2 เท่านั้น

ตอนนี้สร้างสาขาใหม่ mini_change_3 และ PR ที่ไปยัง mini_change_3

ปัญหาเกิดขึ้นเมื่อคุณเริ่มรวมพวกเขา ... แต่นั่นคือการออกกำลังกายที่แตกต่างกัน

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