โซลูชั่นหัวข้อ
คำสั่งที่ถูกต้องที่จะตอบคำถามที่โพสต์อาจจะเป็นที่ใด ๆ ของ (สาขาสมมติต่อไปนี้topicมีการตรวจสอบแล้วออก):
git rebase --onto B master
git rebase --onto master~1 master
git rebase --onto B A
git rebase --onto B C
git rebase --onto B
หากtopicไม่ได้เช็คเอาต์คุณเพียง แต่ต่อท้ายtopicคำสั่ง (ยกเว้นอันสุดท้าย) ดังนี้:
git rebase --onto B master topic
หรือตรวจสอบสาขาก่อนด้วย:
git checkout topic
Reboot String of Commits ใด ๆ เป็น Commit
รูปแบบพื้นฐานของคำสั่งที่เราต้องการคัดลอกมาจากเอกสารประกอบคือ:
git rebase --onto <Target> [<Upstream> [<Branch>]]
<Branch>เป็นทางเลือกและสิ่งทั้งหมดที่ทำคือตรวจสอบสาขาที่ระบุก่อนดำเนินการคำสั่งที่เหลือ หากคุณได้ตรวจสอบสาขาที่คุณต้องการรีบูตแล้วคุณไม่ต้องการสิ่งนี้ โปรดทราบว่าคุณจะต้องมีการระบุไว้<Upstream>ในการที่จะระบุหรือคอมไพล์จะคิดว่าคุณกำลังระบุ<Branch><Upstream>
<Target>เป็นความมุ่งมั่นที่เราจะแนบสายของเรามุ่งมั่นที่จะ เมื่อระบุชื่อสาขาคุณเพียงระบุการกระทำหลักของสาขานั้น <Target>สามารถกระทำใด ๆ ที่จะไม่อยู่ในสตริงของความมุ่งมั่นที่จะถูกย้าย ตัวอย่างเช่น:
A --- B --- C --- D         master
      \
       \-- X --- Y --- Z    feature
ต้องการย้ายสาขาคุณลักษณะทั้งหมดคุณไม่สามารถเลือกX, Y, Zหรือfeatureเป็น<Target>ตั้งแต่เหล่านั้นทั้งหมดจะกระทำภายในกลุ่มที่ถูกย้าย
<Upstream>มีความพิเศษเพราะมันหมายถึงสองสิ่งที่แตกต่างกัน หากเป็นการกระทำที่เป็นบรรพบุรุษของสาขาที่เช็คเอาท์แล้วมันจะทำหน้าที่เป็นจุดตัด ในตัวอย่างที่ผมให้นี้จะเป็นอะไรที่ไม่C, หรือD masterทั้งหมดกระทำหลังจาก<Upstream>จนกระทั่งหัวหน้าสาขาที่เช็คเอาต์เป็นคนที่จะถูกย้าย
อย่างไรก็ตามหาก<Upstream>ไม่ใช่บรรพบุรุษแล้วคอมไพล์สำรองจากการคอมมิทที่ระบุไว้จนกว่าจะพบบรรพบุรุษที่มีสาขาที่เช็คเอาต์ (และยกเลิกหากไม่พบ) ในกรณีของเราเป็น<Upstream>ของB, C, Dหรือmasterจะส่งผลในการกระทำBที่ทำหน้าที่เป็นจุดตัด เป็นตัวเองคำสั่งตัวเลือกและถ้ามันไม่ได้ระบุลักษณะแล้วคอมไพล์ที่ผู้ปกครองของการตรวจสอบออกสาขาซึ่งเป็นเทียบเท่าเข้า<Upstream>master
ตอนนี้คอมไพล์ได้เลือกคอมมิตที่มันจะตัดและย้ายมันจะใช้มันเพื่อ<Target>ข้ามสิ่งใดก็ตามที่ถูกนำไปใช้กับเป้าหมายแล้ว
ตัวอย่างและผลลัพธ์ที่น่าสนใจ
ใช้จุดเริ่มต้นนี้:
A --- B --- C --- D --- E         master
            \
             \-- X --- Y --- Z    feature
- git rebase --onto D A feature
 จะนำไปใช้กระทำ- B,- C,- X,- Y,- Zที่จะกระทำ- Dและสิ้นสุดการกระโดดข้าม- Bและ- Cเพราะพวกเขามีอยู่แล้วถูกนำมาใช้
 
- git rebase --onto C X feature
 จะใช้การคอมมิท- Yและ- Zการคอมมิท- C, ลบคอมมิท- X
 
 
              
git checkout Bมาแล้วgit rebaseหรือยัง?