ใน Git ฉันสามารถทำสิ่งนี้:
1. เริ่มทำงานกับคุณสมบัติใหม่: $ git co -b newfeature-123 # (สาขาการพัฒนาคุณลักษณะท้องถิ่น) ทำไม่กี่กระทำ (M, N, O) ปรมาจารย์ A --- B --- C \ newfeature-123 M --- N --- O 2. ดึงการเปลี่ยนแปลงใหม่จากต้นแบบต้นน้ำ: $ git pull (อัปเดตข้อมูลหลักด้วย ff-commits) ปรมาจารย์ A --- B --- C --- D --- E --- F \ newfeature-123 M --- N --- O 3. Rebase off master เพื่อให้ฟีเจอร์ใหม่ของฉัน สามารถพัฒนาต่อการเปลี่ยนแปลงต้นน้ำล่าสุด: (จาก newfeature-123) $ git rebase master ปรมาจารย์ A --- B --- C --- D --- E --- F \ newfeature-123 M --- N --- O
ฉันต้องการรู้วิธีการทำสิ่งเดียวกันใน Mercurial และฉันได้ค้นหาเว็บเพื่อหาคำตอบ แต่สิ่งที่ดีที่สุดที่ฉันสามารถหาได้คือ: git rebase - สามารถ hg ทำได้
ลิงค์นั้นมี 2 ตัวอย่าง:
1. ฉันจะยอมรับสิ่งนี้: (แทนที่การแก้ไขจากตัวอย่างด้วยสิ่งเหล่านั้นจากตัวอย่างของฉันเอง)
hg up -CF สาขา hg -f newfeature-123 การปลูกถ่าย hg -a -b newfeature-123
ไม่เลวร้ายนักยกเว้นว่าจะทิ้งไว้ข้างหลัง pre-rebase MNO ในฐานะ unmerged head และสร้าง 3 คอมมิชชันใหม่ M ', N', O 'ที่เป็นตัวแทนของพวกเขาแยกออกจากการปรับปรุงการฉีด
โดยทั่วไปปัญหาคือฉันท้ายด้วยสิ่งนี้:
ปรมาจารย์ A --- B --- C --- D --- E --- F \ \ newfeature-123 \ M '--- N' --- O ' \ newfeature-123 M --- N --- O
มันไม่ดีเพราะมันทิ้งไว้ข้างหลังความมุ่งมั่นที่ไม่พึงประสงค์ที่ควรทิ้งไว้
- ตัวเลือกอื่นจากลิงค์เดียวกันคือ
hg qimport -r M: O hg qpop -a hg up F สาขา hg newfeature-123 hg qpush -a hg qdel -r qbase: qtip
และนี่จะส่งผลให้กราฟที่ต้องการ:
ปรมาจารย์ A --- B --- C --- D --- E --- F \ newfeature-123 M --- N --- O
แต่คำสั่งเหล่านี้ (ทั้งหมด 6 คำสั่ง!) ดูเหมือนจะซับซ้อนกว่า
$ git rebase master
ฉันต้องการทราบว่านี่เป็น Hg เทียบเท่าเท่านั้นหรือหากมีวิธีอื่นที่ใช้งานง่ายเช่น Git
git reflog
และพวกเขาจะไม่หายไปทั้งหมดจนกว่าพวกเขาจะได้รับการเก็บขยะ หากคุณต้องการให้พวกเขาอยู่ในสาขาที่มีชื่อเพื่อที่คุณจะได้ไม่ต้องใช้ reflog ให้ทำgit branch feature-123_original
ก่อนที่จะทำการรีบูต