คำขอดึงเข้ามาใน repo ของฉันซึ่งโฮสต์บน Github โดยค่าเริ่มต้นจะรวมเข้ากับmaster
สาขา
มีวิธีใดบ้างที่ฉันจะเปลี่ยนสาขาที่จะรวมการเปลี่ยนแปลงเข้าด้วยกัน
คำขอดึงเข้ามาใน repo ของฉันซึ่งโฮสต์บน Github โดยค่าเริ่มต้นจะรวมเข้ากับmaster
สาขา
มีวิธีใดบ้างที่ฉันจะเปลี่ยนสาขาที่จะรวมการเปลี่ยนแปลงเข้าด้วยกัน
คำตอบ:
ณ วันที่ 15.08.2016 GitHub อนุญาตให้เปลี่ยนสาขาเป้าหมายของคำขอดึงผ่าน GUI คลิกEdit
ถัดจากชื่อเรื่องจากนั้นเลือกสาขาจากเมนูแบบเลื่อนลง
ตอนนี้คุณสามารถเปลี่ยนสาขาพื้นฐานของคำขอดึงแบบเปิดได้ หลังจากที่คุณสร้างคำขอดึงคุณสามารถปรับเปลี่ยนสาขาพื้นฐานเพื่อให้เปรียบเทียบการเปลี่ยนแปลงในคำขอดึงกับสาขาอื่น ด้วยการเปลี่ยนสาขาพื้นฐานของคำขอดึงเดิมของคุณแทนที่จะเปิดสาขาใหม่ด้วยสาขาฐานที่ถูกต้องคุณจะสามารถเก็บงานและการอภิปรายที่มีคุณค่าไว้ได้
ผู้ส่งสามารถเปลี่ยนแปลงได้เมื่อพวกเขาส่งคำขอดึง แต่เมื่อพวกเขาออกแล้วคุณจะไม่สามารถเปลี่ยนแปลงได้
ในทางกลับกันคุณสามารถรวมสาขาและพุชด้วยตนเองซึ่งฉันทำกึ่งประจำสำหรับคำขอดึงที่ไม่ตรงเป้าหมาย
คุณอาจพบว่าhub
อัญมณีมีประโยชน์ในการทำงานกับส่วนประกอบของคำขอดึง
อัญมณีนั้นสรุปกระบวนการแบบแมนนวลนั่นคือ:
git checkout ${target_branch} && git merge ${remote}/${branch}
git push origin ...
git merge --no-ff ...
ตามที่ @GuillermoMansilla กล่าวถึงในคำตอบของเขา
อีกทางเลือกหนึ่งในการใช้ฮับเจมที่กล่าวถึงโดยคำตอบอื่น ๆ คือการใช้บรรทัดคำสั่งเพื่อรวมคำร้องขอดึงแบบโลคัลซึ่งช่วยให้คุณทำ:
$ git fetch origin
$ git checkout *target_branch*
$ git merge pr/XXX
$ git push origin *target_branch*
คำสั่งด้านบนจะใช้ได้โดยตรงก็ต่อเมื่อคุณเพิ่มบรรทัดต่อไปนี้ใน.git/config
ไฟล์ของคุณเป็นครั้งแรก:
fetch = +refs/pull/*/head:refs/remotes/symbolic_name_origin_or_upstream/pr/*
สิ่งที่ช่วยให้คุณสามารถดาวน์โหลดคำขอดึงทั้งหมด เนื่องจากอาจไม่เป็นที่ต้องการสำหรับ repos ขนาดใหญ่ GitHub จึงปรับเปลี่ยนคำแนะนำเพื่อนำเสนอgit fetch origin pull/ID/head:BRANCHNAME
ไวยากรณ์ซึ่งหลีกเลี่ยงการแก้ไขไฟล์การกำหนดค่าและดาวน์โหลดเฉพาะคำขอดึงรายการเดียวเท่านั้น
แม้ว่าคุณจะไม่สามารถเปลี่ยนคำขอดึงที่มีอยู่ได้เนื่องจากไม่ใช่ของคุณ แต่คุณสามารถสร้างใหม่ได้อย่างง่ายดายหากที่เก็บซอร์สที่เกี่ยวข้องยังคงมีอยู่ - ใช่แม้ว่าจะเป็นของคนอื่นก็ตาม
ไปที่ที่เก็บของผู้ส่งจากนั้นสร้างคำร้องขอดึงใหม่ในที่เก็บของเขา / เธอโดยใช้คอมมิตเดียวกัน แต่ต้องแน่ใจว่าคุณตั้งค่าสาขาเป้าหมายที่ถูกต้อง
จากนั้นกลับไปที่ที่เก็บของคุณเองและยอมรับคำขอดึงใหม่ Voila!
ไม่มีอะไรผิดปกติกับวิธีแก้ปัญหาของ Daniel Pittman อย่างไรก็ตามฉันจะถือว่าการผสานเหล่านั้นเป็น "ไม่กรอไปข้างหน้า" นั่นคือการเปลี่ยนขั้นตอนที่ 3 สำหรับ:
git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}
โดยการใช้--no-ff
ประวัติจะง่ายต่อการอ่าน จะบอกอย่างชัดเจนว่าความ$n
มุ่งมั่นมาจาก$branch
ไหนและมันจะทำให้ชีวิตของคุณง่ายขึ้นด้วยหากคุณต้องการคืนค่าบางสิ่งที่ทำในสาขานั้น
หากต้องการตอบคำถามของ eoinoc และให้คำแนะนำเพิ่มเติม:
หลังจากทำการผสานแล้ว git cli ของคุณจะแจ้งให้คุณเขียนข้อความโดยทั่วไปข้อความทั่วไปจะปรากฏขึ้นโดยพูดว่า
รวมสาขาการติดตามระยะไกล 'ผู้ใช้ / สาขาของพวกเขา' เข้ากับสาขาของคุณ
อย่าลืมแก้ไขข้อความนั้นและรวมการอ้างอิงหมายเลขคำขอดึง นั่นคือ: (สมมติว่าหมายเลขคำขอดึงคือ 123)
รวมสาขาการติดตามระยะไกล 'ผู้ใช้ / สาขาของพวกเขา' เข้ากับสาขาของคุณ
refs # 123 แก้อะไรก็ได้ ...
ครั้งต่อไปที่คุณไปที่หน้าปัญหา / คำขอดึงข้อมูล github ของคุณและตรวจสอบคำขอดึงนั้นคุณจะเห็นข้อความของคุณพร้อมลิงก์เพื่อยืนยันว่าคุณได้ทำการผสานที่ใด
นี่คือภาพหน้าจอของสิ่งที่ฉันหมายถึง
โดยไปที่โฮมเพจของที่เก็บของคุณคลิกที่สาขาและเปลี่ยนสาขาเริ่มต้นจากต้นแบบเป็นอย่างอื่นในกรณีของฉันคือ "dev"
หลังจากนั้นเมื่อใดก็ตามที่มีคนสร้างคำขอดึงmerge
ปุ่มจะรวมคำขอเป็น "dev" โดยอัตโนมัติแทนที่จะเป็นมาสเตอร์