เคยไหมครับ? กด commit ไปแล้วแต่นึกขึ้นได้ว่าลืม add ไฟล์ หรือพิมพ์ commit message ผิด!
แทนที่จะต้องสร้าง commit ใหม่เพื่อแก้คำผิด เราสามารถใช้คำสั่งมหัศจรรย์อย่าง git commit --amend
เพื่อแก้ไข commit ล่าสุดของเราได้ เนียนเหมือนไม่เคยทำผิดมาก่อน
git commit --amend คืออะไร?
คำสั่ง git commit --amend ใช้สำหรับ "เขียนทับ" commit ล่าสุดของคุณ
มันมีประโยชน์มากเมื่อคุณต้องการแก้ไขสิ่งเล็กๆ น้อยๆ โดยไม่ต้องสร้าง commit ใหม่ให้รก History
สถานการณ์ที่ 1: แค่อยากแก้ Commit Message
ถ้าคุณแค่พิมพ์ผิด และไม่ได้ต้องการเปลี่ยนแปลงไฟล์ใดๆ ให้ใช้คำสั่งนี้:
git commit --amend -m "ข้อความ Commit ใหม่ที่ถูกต้อง"
คำสั่งนี้จะเปลี่ยนข้อความของ commit ล่าสุดเป็นข้อความใหม่ทันที
สถานการณ์ที่ 2: ลืม Add ไฟล์
สมมติว่าคุณ commit ไปแล้ว แต่ลืมไฟล์ style.css ที่แก้ไปนิดหน่อย วิธีแก้คือ:
- Add ไฟล์ที่ลืมเข้า staging area ก่อน:
git add style.css - รันคำสั่ง amend เพื่อรวมไฟล์นี้เข้าไปใน commit ล่าสุด:
git commit --amend --no-edit
Option --no-edit หมายความว่าเราจะใช้ Commit Message เดิม ไม่ต้องการแก้ไขข้อความ
(แต่ถ้าอยากแก้ข้อความด้วย ก็แค่ตัด --no-edit ออก แล้วใส่ -m "ข้อความใหม่" แทน)
⚠️ คำเตือนสำคัญ!
ห้ามใช้ --amend กับ Commit ที่ Push ขึ้น Server ไปแล้ว! (ถ้าคุณทำงานร่วมกับคนอื่น)
การทำ amend คือการเปลี่ยน Hash ID ของ commit นั้นๆ ใหม่ เท่ากับว่ามันคือ commit ตัวใหม่เลย ถ้าคนอื่นในทีมดึง code ชุดเก่าไปแล้ว และคุณไป amend แล้ว push ทับ (Force push) จะทำให้ history ของเพื่อนร่วมทีมพังได้
ดังนั้น: ใช้ amend เฉพาะกับ commit ที่ยังอยู่แค่ในเครื่องของคุณ (Local) เท่านั้น!
สรุป
git commit --amend เป็นเครื่องมือที่ช่วยให้ Git History ของคุณสะอาดและดูเป็นมืออาชีพขึ้น
จำไว้ใช้เวลาพิมพ์ผิดหรือลืมของ แต่อย่าลืมกฎเหล็กเรื่องการ Push ด้วยนะครับ!