คำขอดึงของฉันถูกรวมแล้วจะทำอย่างไรต่อไป?


112

ฉันเพิ่งเข้าร่วมในโครงการจาก GitHub ฉันทำสิ่งต่อไปนี้:

แยกที่เก็บเดิมโคลนไปยังเครื่องในพื้นที่ของฉันสร้างสาขาเพื่อแก้ไขข้อบกพร่องที่มีอยู่แก้ไขข้อบกพร่องที่อยู่ในสาขานั้นผลักสาขานั้นไปยังที่เก็บข้อมูลของฉันส่งคำขอดึงไปยังผู้เขียนที่เก็บเพื่อรวมสาขาการแก้ไขของฉันไปที่ สาขาหลัก

นี่เป็นครั้งแรกที่ฉันยอมรับรหัสของผู้อื่นดังนั้นฉันจึงไม่รู้ว่าจะทำอย่างไร ตอนนี้คำขอดึงของฉันถูกรวมเข้ากับ repo / project ดั้งเดิมโดยผู้เขียน

ควรทำอย่างไรต่อไป ฉันควรลบสาขาหรือไม่ ฉันควรรวมสาขาหรือไม่ มีอะไรอีกไหม


ข้อมูลเพิ่มเติม:

โครงการเดิมมีสาขาเดียว

ฉันยังมีชุดอัปสตรีมเพื่อรับการอัปเดตล่าสุดจาก repo ดั้งเดิม (ฉันทำแบบนี้) :

git remote add upstream https://path/to/original/repo.git

และฉันได้รับการอัปเดตดังนี้:

git fetch upstream

12
Ghehe คุณไม่ใช่คนเดียวที่ดิ้นรน: วิดีโอ Youtube :)
แอน

คำตอบ:


65

สิ่งที่ต้องทำต่อไปคือการมีส่วนร่วมในคุณลักษณะใหม่ ๆ หรือแก้ไขข้อบกพร่องอื่น ๆ ในสาขาเฉพาะของตนเอง (ผลักไปที่ส้อมของคุณเท่านั้น)

หมายความว่าส้อมของคุณยังคงอยู่ แต่กิ่งก้านในส้อมของคุณสามารถหมุนไปมาได้

นอกจากนี้คุณยังสามารถเอาส้อมถ้าคุณไม่ได้วางแผนที่จะมีส่วนร่วมต่อไป แต่มันจะเอารายการที่สอดคล้องกันใน 'Repositories คุณนำไปสู่'

ง่ายกว่าที่จะ:

  • ลบfixสาขาของคุณ(จริงๆแล้วตอนนี้ถูกลบให้คุณแล้ว ) บนส้อมของคุณ (และใน repo ที่โคลนในเครื่องของคุณ: ดูที่ " ลบสาขา Git ทั้งในเครื่องและจากระยะไกล ")
  • git pull upstream master(หากmasterเป็นสาขาที่รวมการแก้ไขของคุณไว้: การผสานจะเป็นการกรอไปข้างหน้า): ไม่จำเป็นต้องใช้ฐานใหม่ในตอนนี้
  • สร้างสาขาการแก้ไขใหม่ที่ด้านบนของท้องถิ่นที่อัปเดตของคุณmaster(ขณะนี้มีล่าสุดจากupstream master)

อย่างไรก็ตามอย่าลืมขั้นตอนหนึ่งก่อนที่จะส่งคำขอดึงในอนาคต :

สร้างฐานข้อมูลสาขาปัจจุบันของคุณก่อน ( fix) จากสาขาปลายทางต้นน้ำ

( upstreamเป็น repo ดั้งเดิมที่คุณแยก: ดู " อะไรคือความแตกต่างระหว่างที่มาและต้นน้ำใน github ")

ก่อนที่จะส่งสิ่งใด ๆ กลับไปยัง repo เดิม ("ต้นน้ำ") คุณต้องตรวจสอบให้แน่ใจว่างานของคุณเป็นไปตามข้อมูลล่าสุดจาก repo ดั้งเดิมดังกล่าว (หรือคำขอดึงจะไม่ส่งผลให้มีการรวมกรอไปข้างหน้าเมื่อใช้แล้ว กลับไปที่upstreamrepo)
ดูตัวอย่างเช่น " เวิร์กโฟลว์สำหรับจัดการคำขอดึงบน repos ที่แชร์ใน github "

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


OP Santosh Kumarถามว่าในความคิดเห็นที่ :

ฉันดึงและรวมจากหนึ่งupstreamไปยังหลักแล้วตอนนี้คืออะไร?

หากคุณยังไม่ได้ทำการแก้ไขใหม่ตั้งแต่คำขอดึงล่าสุดของคุณโปรดดูด้านบน (ลบและสร้างสาขาใหม่fixที่ด้านบนของการอัปเดตของคุณmaster)

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

git pull --rebase upstream master

ด้วยวิธีนี้งานในพื้นที่ใหม่ทั้งหมดของฉันจะถูกเล่นซ้ำที่ด้านบนของคอมupstream masterมิตล่าสุด(ดึงมาจาก repo ในพื้นที่ของฉัน) โดยสมมติว่าmasterเป็นสาขาเป้าหมายที่จะรวมคำขอดึงในอนาคตของฉัน

แล้วฉันจะสามารถผลักดันการทำงานในท้องถิ่นของฉันไป ' origin' ซึ่งเป็นทางแยกของฉันบน GitHub upstreamของ
และจากทางแยกของฉันบน GitHub ฉันสามารถส่งคำขอดึงได้อย่างปลอดภัยโดยรู้ว่ามันจะเพิ่มคอมมิตใหม่เท่านั้นupstreamโดยไม่ต้องใช้ความละเอียดในการรวมใด ๆ : การรวมคอมมิตใหม่เหล่านั้นในupstreamrepo จะหมายถึงการรวมกรอไปข้างหน้าอย่างง่าย


การgit pull --rebaseไม่ระบุสาขาที่คุณต้องการตั้งฐานใหม่fixสาขา(เช็คเอาต์ในปัจจุบัน) จะไม่ทำงาน:

ที่ ( git pull --rebase) พูดว่า:

You asked to pull from the remote '`upstream`', but did not specify a branch. 

ในที่สุดฉันควรต่อท้ายอาจารย์หรือไม่? แล้วสิ่งนี้จะทำอย่างไรมันจะลบfixสาขาของฉัน?

ได้คุณสามารถระบุสาขาที่จะเป็นเป้าหมายของคำขอดึงเช่น ' master'
ซึ่งจะไม่ลบfixสาขาของคุณแต่จะเล่นซ้ำที่ด้านบนของต้นน้ำที่masterดึงมาใน repo ของคุณ


คุณช่วยอธิบายrebase จากส่วนต้นน้ำได้ไหม
Santosh Kumar

@SantoshKumar คุณต้องกำหนดฐานข้อมูลท้องถิ่นของคุณใหม่บน repo เดิม (ที่นี่อ้างอิงว่าเป็นต้นน้ำ) ก่อนที่จะผลักดันไปที่ทางแยกของคุณและทำการร้องขอการดึงของคุณ: ดู stackoverflow.com/questions/9257533/…
VonC

ใช่ฉันรู้ว่าฉันกำลังถามคำถามพื้นฐาน ฉันได้ดึงและรวมจากต้นน้ำเป็นหลักแล้วตอนนี้คืออะไร?
Santosh Kumar

@SantoshKumar มันเป็นคำถามที่ดี ฉันได้แก้ไขคำตอบเพื่อจัดการกับมันแล้ว มองหา "OP Santosh Kumar ถามในความคิดเห็น: ... "
VonC

ที่ระบุว่า: ในที่สุดYou asked to pull from the remote 'upstream', but did not specify a branch.ฉันควรต่อท้ายmasterหรือไม่? แล้วสิ่งนี้จะทำอย่างไรมันจะลบไฟล์สาขาการแก้ไขหรือไม่?
Santosh Kumar

18

ก่อนอื่นขอแสดงความยินดีสำหรับการมีส่วนร่วมครั้งแรกในโครงการบน Github

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

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