ฉันจะ git rebase คอมมิตแรกได้อย่างไร


132

ฉันเคยgit initสร้าง repo ใหม่จากนั้นทำสามคอมมิต ตอนนี้ฉันต้องการ rebase เพื่อกลับไปแก้ไขคอมมิตแรกของฉัน แต่ถ้าฉันทำgit rebase -i HEAD~3มันจะบ่น! ถ้าฉันลองเหมือนกันHEAD~2มันก็ใช้ได้ แต่ให้ฉันจัดเรียงคอมมิตสองครั้งสุดท้ายเท่านั้น

ฉันจะอ้างถึง 'การกระทำก่อนที่จะมีการกระทำใด ๆ ' ได้อย่างไรหรือย้อนกลับและแทรกการกระทำที่ว่างเปล่า


4
เป็นไปได้ที่จะซ้ำกับEdit the root คอมมิตใน Git
Liam

คำตอบ:


221

วิธีง่ายๆด้วยคอมไพล์ล่าสุดที่เพียงพอ (ตอนนี้มีมานานแล้วดังนั้นคุณควรมีสิ่งนี้):

git rebase -i --root

วิธีง่ายๆอีกวิธีหนึ่งดังที่twalberg ระบุไว้ในความคิดเห็นคือการใช้git checkout --orphanเพื่อตั้งค่าเพื่อสร้างการคอมมิตรูทใหม่ซึ่งคุณสามารถคัดลอกคอมมิตเก่าที่ด้านบนของ (นี่คือสิ่งที่rebase -i --rootต้องทำภายในต่อไป)


การใช้git rebase -i --rootฉันได้รับข้อผิดพลาดerror: cannot 'fixup' without a previous commitเมื่อพยายาม
บีบคอมมิต

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