หากคุณต้องการย้อนกลับไปยัง commit ก่อนหน้าใน Git โดยต้องการลบ commit ที่ผิดพลาดออกทั้งหมด

(เช่น ย้อนกลับไป 4 commit) คุณสามารถใช้คำสั่ง git reset หรือ git revert ได้ โดยมีรายละเอียดดังนี้:

 

ใช้ git reset

คำสั่งนี้จะย้อนกลับไปยัง commit ที่คุณต้องการและลบ commit หลังจากนั้นออกจากประวัติการ commit:


 

bash

git reset --hard HEAD~4

  • HEAD~4 หมายถึง 4 commit ก่อนหน้า HEAD ปัจจุบัน
  • --hard จะลบการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นตั้งแต่ commit ที่ย้อนกลับไป

หมายเหตุ: การใช้ --hard จะทำให้การเปลี่ยนแปลงในพื้นที่ทำงาน (working directory) ของคุณหายไป หากคุณมีการเปลี่ยนแปลงที่ยังไม่ได้ commit คุณอาจจะสูญเสียข้อมูลเหล่านั้น

ใช้ git revert

หากคุณไม่ต้องการลบ commit แต่ต้องการสร้าง commit ใหม่ที่กลับการเปลี่ยนแปลงของ commit ก่อนหน้า คุณสามารถใช้คำสั่ง git revert ดังนี้:


 

bash

git revert HEAD~4..HEAD

  • คำสั่งนี้จะสร้าง commit ใหม่ที่เป็นการย้อนกลับการเปลี่ยนแปลงจาก commit ที่ 4 จนถึง HEAD ปัจจุบัน

สรุปขั้นแรก 
 

  • ใช้ git reset --hard HEAD~4 หากคุณต้องการลบ commit และไม่สนใจการเปลี่ยนแปลงที่เกิดขึ้น
  • ใช้ git revert HEAD~4..HEAD หากคุณต้องการย้อนกลับการเปลี่ยนแปลงโดยไม่ลบประวัติการ commit

อย่าลืมสำรองข้อมูลหรือทำความเข้าใจเกี่ยวกับคำสั่งที่คุณใช้ก่อนที่จะดำเนินการ!

 

การติดตามผล 

 

หลังจากที่คุณใช้คำสั่ง git reset หรือ git revert แล้ว คุณสามารถตรวจสอบประวัติการ commit และดูผลลัพธ์ได้ด้วยคำสั่ง git log หรือคำสั่งอื่นๆ ตามนี้:

 

1. ใช้ git log

 

คำสั่งนี้จะแสดงประวัติการ commit ของคุณ:

bash

git log

 

  • คุณจะเห็นรายชื่อ commit ที่แสดง SHA-1 hash, ชื่อผู้ commit, วันที่ และข้อความ commit
  • หากคุณใช้ git reset --hard HEAD~4 คุณควรจะเห็นว่ามี commit ที่ล่าสุดถูกลบออกไป
  • หากคุณใช้ git revert คุณจะเห็น commit ใหม่ที่สร้างขึ้นซึ่งทำการย้อนกลับการเปลี่ยนแปลงของ commit ที่ถูกย้อนกลับ

 

2. ใช้ git status

หากคุณใช้ git reset แล้วคุณสามารถใช้คำสั่งนี้เพื่อตรวจสอบสถานะของพื้นที่ทำงานและการ staging:


 

bash

git status

  • คำสั่งนี้จะแสดงว่าคุณอยู่ใน branch ไหน, มีการเปลี่ยนแปลงใดบ้างในพื้นที่ทำงาน และไฟล์ไหนที่ถูก staged สำหรับ commit

 

3. ใช้ git diff

หากต้องการดูการเปลี่ยนแปลงที่เกิดขึ้นก่อนและหลังการ reset หรือ revert สามารถใช้คำสั่งนี้:


 

bash

git diff

  • คำสั่งนี้จะแสดงการเปลี่ยนแปลงที่เกิดขึ้นในไฟล์ต่างๆ หากมีการเปลี่ยนแปลง

 

4. ใช้ git reflog

ถ้าคุณใช้ git reset --hard และต้องการกลับไปยัง commit ที่คุณเคยอยู่ก่อนหน้านี้ คุณสามารถใช้ git reflog เพื่อดูการอ้างอิงถึง commit ที่คุณทำงานล่าสุด:


 

bash

git reflog

  • คำสั่งนี้จะแสดงประวัติของ HEAD ที่คุณทำการเปลี่ยนแปลง ซึ่งจะช่วยให้คุณสามารถย้อนกลับไปยัง commit ที่คุณต้องการได้

 

สรุป

หลังจากใช้คำสั่ง reset หรือ revert ให้ใช้ git log เพื่อตรวจสอบประวัติการ commit ว่าได้มีการเปลี่ยนแปลงตามที่คุณต้องการหรือไม่ และใช้คำสั่งอื่น ๆ เพื่อตรวจสอบสถานะหรือการเปลี่ยนแปลงที่เกิดขึ้นในไฟล์ต่าง ๆ ครับ