อัปเดตสาขาที่ล้าสมัยเทียบกับมาสเตอร์ใน Git repo


123

ฉันมีที่เก็บ Git ที่มีสาขา (ภายในและระยะไกล) ที่ล้าสมัยแล้ว ฉันต้องการนำสาขานี้ไปอัปเดตกับสาขาหลัก แต่ฉันไม่รู้ว่าจะทำอย่างไร นอกจากนี้ยังอาจมีความขัดแย้งในการรวมจำนวนมาก

ฉันจะนำหรืออัปเดตสาขาที่ล้าสมัยนี้ให้อยู่ในสถานะเดียวกับสาขาหลักได้อย่างไร


1
หากคุณมาที่นี่เพื่อค้นหาวิธีอัปเดตสาขาที่ล้าสมัยเทียบกับมาสเตอร์ใน Git repo หากคุณยังไม่ได้ทำการเปลี่ยนแปลงใด ๆ ในสาขาท้องถิ่นให้ทำการ "git pull"
โทรม

คำตอบ:


152

อัปเดตสาขาหลักซึ่งคุณต้องทำโดยไม่คำนึงถึง

จากนั้นหนึ่งใน:

  1. สร้างสาขาเก่าเทียบกับสาขาหลัก แก้ไขความขัดแย้งในการผสานระหว่าง rebase และผลลัพธ์จะเป็นสาขาที่ทันสมัยซึ่งรวมเข้ากับมาสเตอร์อย่างหมดจด

  2. รวมสาขาของคุณเป็นหลักและแก้ไขข้อขัดแย้งในการผสาน

  3. ผสานหลักเข้ากับสาขาของคุณและแก้ไขข้อขัดแย้งในการผสาน จากนั้นการรวมจากสาขาของคุณเป็นหลักควรสะอาด

ไม่มีสิ่งใดดีไปกว่าสิ่งอื่นพวกเขามีรูปแบบการแลกเปลี่ยนที่แตกต่างกัน

ฉันจะใช้วิธีการ rebase ซึ่งให้ผลลัพธ์โดยรวมที่สะอาดกว่าแก่ผู้อ่านในภายหลังในความคิดของฉัน แต่นั่นก็ไม่มีอะไรนอกจากรสนิยมส่วนตัว

ในการสร้างฐานใหม่และรักษาสาขาคุณต้อง:

git checkout <branch> && git rebase <target>

ในกรณีของคุณลองดูสาขาเก่าแล้ว

git rebase master 

เพื่อสร้างมันขึ้นมาใหม่กับปรมาจารย์


1
@Andrew: git rebase:)
CharlesB

1
git checkout $branch && git rebase $target- ในกรณีของคุณให้ตรวจสอบสาขาเก่าแล้วgit rebase masterสร้างใหม่เทียบกับมาสเตอร์
Daniel Pittman

3
repo ของคุณเป็นแบบสาธารณะหรือไม่? การตั้งฐานใหม่เป็นเรื่องสาธารณะหรือไม่
event_jr

4
คำแนะนำที่ดีเมื่อใช้ rebase ในสาขาระยะไกล: ทำการ rebase สาขาระยะไกลเทียบกับสาขาหลักเฉพาะเมื่อใครก็ตามที่ไม่ได้ผลักดันคอมมิตในสาขาระยะไกลนี้
Dherik

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