แก้ไข Last Commit หรือ Multiple Commit Messagesใน git

Phatcharaphan Ananpreechakun
odds.team
Published in
3 min readFeb 19, 2021

หลายๆครั้งที่เรา push code ขึ้นไปบน server หรือ commit ไว้ใน local นั้น บางครั้งเราอาจจะจำเป็น ที่จะแก้ไข commit message ที่เพิ่ง push หรือว่า commit message ก่อนหน้านั้นอีก ซึ่ง git ก็มี command line ให้เราสามารถเข้าไปแก้ไข commit message ได้

Changing the Last Commit

ต้องการจะแก้ไข last commit เพิ่ง push code ขึ้นไปบน serverสามารถทำตามตัวอย่างได้ดังนี้

  • last commit จะเขียนข้อความว่า Change message และต้องการที่จะแก้ไข จะใช้คำสั่ง
git commit -amend
  • เมื่อเรากด Enter ไปแล้วจะเข้าสู่อีกโหมด เพื่อทำการแก้ไขข้อความที่เราต้องการ

ขั้นตอนการเข้าไปแก้ไขจะมีดังนี้

  1. ให้กด A เพื่อที่จะแก้ไขข้อความได้
  2. แก้ข้อความที่เราต้องการ
  3. กด esc เพื่อที่จะออกจากโหมดแก้ไข
  4. ให้กด :wq! คือการบันทึกสิ่งที่เราแก้ไขในครั้งนี้และต้องการที่จะออกจากโหมดนี้
  5. เมื่อเรา git log ดูจะเห็นว่าข้อความในเครื่องของเราได้เปลี่ยนแปลงได้ แต่บน Server ยังไม่ได้เปลี่ยนแปลง
local
server

6. หลังจากนั้นใช้คำสั่งนี้ เพื่อ push code ขึ้นไปบน server ([branchname] คือ branch name ที่เรากำลังแก้ไข)

git push origin --force [branchname]
Server

Changing Multiple Commit Messages

ต้องการจะแก้ไขหลายๆ commit message พร้อมกัน เราจะใช้คำสั่งดังนี้

git rebase -i HEAD~N

โดยที่ N คือ จำนวนสุดท้ายที่ต้องการนำเข้ามาแก้ไข เช่น

git rebase -i HEAD~3
  • เมื่อเรา enter เข้ามาจะเจอหน้าจอแบบนี้ ซึ่งจะเห็นว่ามี 3 commit ที่เข้ามา
  • พอเข้ามาถึงหน้านี้แล้ว สิ่งที่เราจะต้องทำคือ เปลี่ยน pick ให้เป็น reword

reword คือ ต้องการจะแก้ไข commit message นั้น

ในตัวอย่างต้องการที่จะแก้ไข 2 commit ก็จะใส่ดังภาพ

  • เมื่อเปลี่ยนเป็น reword แล้วให้ :wq! ออกมาได้เลย หลังจากนั้นก็จะเข้าสู่หน้า commit message ที่ละหน้าที่ต้องการเปลี่ยนแปลงข้อความ ดังภาพ
  • เมื่อทำการแก้ข้อความในแต่ละหน้าแล้วให้ :wq! ออกมาได้เลย จะเห็นว่า commit ที่เราต้องการแก้ไขได้ถูกเปลี่ยนแปลงแล้วใน local
  • หลังจากนั้นใช้คำสั่งนี้ เพื่อ push ขึ้นไปบน server ([branchname] คือ branch name ที่เรากำลังแก้ไข)
git push origin --force [branchname]

จบแล้วว เจอกันบทความถัดไปน๊าาาา

Ref.

https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History

--

--