ด้วยเหตุผลที่ขี้เกียจฉันได้ส่งข้อความที่เป็นค่าเริ่มต้นและตอนนี้กลายเป็นเรื่องยุ่งยากเพราะฉันไม่รู้ว่าฉันเปลี่ยนแปลงอะไรในแต่ละการกระทำ
ฉันจะแก้ไขเฉพาะข้อความของการคอมมิชชันก่อนหน้าและ (ถ้าเป็นไปได้) ทำให้แผนผังการคอมมิท
ด้วยเหตุผลที่ขี้เกียจฉันได้ส่งข้อความที่เป็นค่าเริ่มต้นและตอนนี้กลายเป็นเรื่องยุ่งยากเพราะฉันไม่รู้ว่าฉันเปลี่ยนแปลงอะไรในแต่ละการกระทำ
ฉันจะแก้ไขเฉพาะข้อความของการคอมมิชชันก่อนหน้าและ (ถ้าเป็นไปได้) ทำให้แผนผังการคอมมิท
คำตอบ:
ในการแก้ไขข้อความคอมมิทของชุดการคอมมิชชันฉันรัน
git rebase -i firstsha
ที่firstsha
เป็นตัวระบุสำหรับการกระทำหลักของการกระทำแรกที่ฉันต้องการแก้ไข (คุณสามารถใช้การอ้างอิงที่ถูกต้องที่นี่ดังนั้นgit rebase -i HEAD~4
จะแสดงคอมมิทสี่ครั้งล่าสุด)
ในเครื่องมือแก้ไขที่เปิดขึ้นให้เปลี่ยนรายการ "เลือก" ทั้งหมดเป็น "reword" บนคอมมิทที่คุณต้องการแก้ไขจากนั้นปิดตัวแก้ไข จากนั้นคุณจะถูกขอให้ป้อนข้อความยืนยันสำหรับการกระทำทั้งหมดที่คุณเลือก
โปรดทราบว่าสิ่งนี้จะเปลี่ยนแผนผังการส่งข้อมูลเนื่องจากแฮชของการส่งข้อความจะเปลี่ยนแปลง คุณจะต้องกดต้นไม้ใหม่ของคุณหรือผลักดันไปยังสาขาใหม่ นอกจากนี้ยังจะทำให้การรวมกันเป็นระเบียบดังนั้นหลีกเลี่ยงการแก้ไขการกระทำที่ผสาน
หากต้องการแก้ไขเฉพาะการส่งครั้งล่าสุดอย่างรวดเร็วให้เรียกใช้
git commit --amend
(แต่ระวังสิ่งที่ฉากไว้สำหรับการกระทำแม้ว่า)
preserve-merges
)
git rebase
สิ่งที่คุณกำลังมองหาอยู่
หากคุณต้องการเปลี่ยนgit commit
ข้อความก่อนหน้านี้เท่านั้นคุณจำเป็นต้องใช้ข้อความต่อไปนี้:
git commit --amend
และทำการเปลี่ยนแปลงที่คุณต้องการกระทำก่อนหน้านี้แล้วบันทึกการแก้ไข
rebase
แต่ถ้าคุณต้องเปลี่ยนการกระทำเก่าที่คุณจำเป็นต้องใช้
git rebase -i HEAD~N
เมื่อ N เท่ากับจำนวนการคอมมิทที่คุณต้องการกลับไปเช่น 2 หรือ 12 หรือ 6 เป็นต้น
ที่นี่คุณควรได้รับโปรแกรมแก้ไขข้อความที่มีความมุ่งมั่นของคุณ เปลี่ยนตัวเลือกจากpick
เป็นreword
เป็นข้อความ
เมื่อคุณระบุข้อผูกพันทั้งหมดที่คุณต้องการเปลี่ยนและเปลี่ยนตัวเลือกของพวกเขาอย่างเหมาะสมแล้วให้บันทึกและปิดตัวแก้ไข จากนั้นทำการเปลี่ยนแปลงในแต่ละข้อความยืนยัน เมื่อคุณพอใจคุณสามารถเรียกใช้:
git push --force
และคุณควรรักษาประวัติของคอมไพล์ของคุณแม้ว่าจะมีค่าแฮชต่างกันเพราะคุณได้ทำการเปลี่ยนแปลงที่จำเป็นตามที่คุณต้องการ นี่คือลิงค์เพิ่มเติมบางส่วนที่คุณควรตรวจสอบ:
7.6 เครื่องมือ Git - ประวัติการเขียน
ซ้ำวิธีใช้ GitHub - การเปลี่ยนข้อความ Commit
StackOverflow - คำถามเกี่ยวกับการเปลี่ยนข้อความยืนยันเก่า
commit --amend
” เว้นแต่ว่าคุณจะทำสิ่งที่ผิดพลาด
git rebase -i firstsha
ว่าfirstsha
เป็นผู้ปกครองกระทำกัญชาของการกระทำที่ฉันต้องการที่จะเปลี่ยนข้อความจากนั้นในการแก้ไขเปลี่ยนแปลงpick
ไปreword
, enter
ข้อความใหม่แล้วปัญหาgit rebase --continue
และทำgit push --force
อย่างไร
git rebase -i HEAD~N
โดย N เป็นจำนวนการตอบกลับที่คุณต้องการจะไป เปลี่ยนทุกตัวเลือกกระทำที่คุณต้องการแก้ไขข้อความจากpick
เป็นreword
บันทึกไฟล์นี้ทำการเปลี่ยนแปลงไฟล์กระทำแต่ละรายการและบันทึก git push --force [Name of git branch you are were working on]
เมื่อคุณมีความมั่นใจที่คุณทำคุณจะต้อง คุณสามารถย้อนกลับไปทำสิ่งนี้อีกครั้งหรือทำมันเป็นระยะ ๆ