หัวข้อบทความ: "Git การยกเลิกการเปลี่ยนแปลง: ยกเลิก Commit ล่าสุดและการเปลี่ยนแปลง"
Git เป็นเครื่องมือในการควบคุมเวอร์ชันที่มีการใช้งานอย่างแพร่หลายสำหรับการจัดการซอร์สโค้ดในโปรเจคท์ซอฟต์แวร์ ความสามารถในการย้อนกลับและแก้ไขการเปลี่ยนแปลงทำให้ Git เป็นที่นิยมในหมู่นักพัฒนาโปรแกรม และในบทความนี้ เราจะมาสำรวจวิธีการยกเลิกการเปลี่ยนแปลงในสามส่วนสำคัญ: ยกเลิก Commit ล่าสุด, ยกเลิกการเปลี่ยนแปลงใน Working Directory, และยกเลิกการเปลี่ยนแปลงใน Staging Area
เมื่อคุณทำการ Commit โค้ดบ้างครั้งเราอาจเผชิญกับสถานการณ์ที่ต้องการยกเลิก Commit ล่าสุด ถ้าการ Commit ของคุณผิดพลาดหรือไม่ได้ตามความต้องการ คุณสามารถใช้คำสั่ง `git reset` หรือ `git revert` เพื่อแก้ไขสิ่งนี้
1. ใช้ `git reset`คำสั่ง `git reset` จะเปลี่ยน state ของ HEAD ไปยัง Commit ที่ระบุ และจะลบการเปลี่ยนแปลงในสถานที่ต่าง ๆ ที่ระบุ
git reset --soft HEAD~1
คำสั่งนี้จะยกเลิกการ Commit ล่าสุด แต่ยังคงการเปลี่ยนแปลงใน Staging Area เอาไว้ ซึ่งมีประโยชน์เมื่อคุณต้องการแก้ไข Commit Message หรือรวมโค้ดเพิ่มอีกเล็กน้อย
git reset --hard HEAD~1
คำสั่งนี้จะยกเลิกการ Commit ล่าสุดและลบการเปลี่ยนแปลงทั้งหมดใน Working Directory ด้วย อย่างไรก็ตาม โปรดระวังเพราะข้อมูลที่ลบแล้วจะไม่สามารถเรียกคืนได้ง่ายๆ
2. ใช้ `git revert`ถ้าคุณต้องการเก็บประวัติการ Commit เอาไว้ โดยไม่ต้องการลบ Commit นั้นออกจากประวัติ ให้ใช้ `git revert`
git revert HEAD
คำสั่งนี้จะสร้าง Commit ใหม่ที่มีการเปลี่ยนแปลงกลับของ Commit ล่าสุด นี่เป็นการแก้ปัญหาที่ปลอดภัยกว่า, โดยเฉพาะอย่างยิ่งในรีโปสที่ถูกแชร์กับหลาย ๆ คน
บางครั้งคุณอาจต้องการยกเลิกการเปลี่ยนแปลงที่ยังไม่ได้ Commit ซึ่งทำได้ง่ายด้วย `git checkout` หรือ `git restore`
1. ใช้ `git checkout`
git checkout -- <filename>
เมื่อใช้คำสั่งนี้ ไฟล์นั้นจะกลับไปยังสถานะล่าสุดใน Staging Area
2. ใช้ `git restore`ตั้งแต่ Git 2.23 เป็นต้นมา คุณสามารถใช้ `git restore` ซึ่งเข้าใจง่ายและตรงไปตรงมากว่า
git restore <filename>
คำสั่งนี้จะทำการยกเลิกการเปลี่ยนแปลงใน Working Directory เช่นเดียวกับ `git checkout`
หากคุณได้เพิ่มไฟล์เข้าสู่ Staging Area แต่ต้องการยกเลิกการเพิ่มก่อนที่จะ Commit คุณสามารถใช้ `git reset` อีกครั้ง หรือ `git restore --staged`
1. ใช้ `git reset`
git reset <filename>
ไฟล์จะถูกย้ายกลับไปยัง Working Directory ทำให้การเปลี่ยนแปลงของไฟล์นั้นยังคงอยู่โดยไม่ได้ลบออก
2. ใช้ `git restore --staged`
git restore --staged <filename>
คำสั่งนี้จะยกเลิกการ Staging ของไฟล์นั้น แต่ยังคงการเปลี่ยนแปลงใน Working Directory เช่นเดียวกับที่ `git reset` ทำ
ตัวอย่างเช่น หากคุณกำลังทำงานในโปรเจ็คต์และทำการ Commit โค้ด แต่พบว่าบางฟังก์ชันทำงานไม่ถูกต้อง คุณต้องการย้อนกลับและแก้ไข
1. ตรวจสอบการ Commit ล่าสุดด้วย `git log` เพื่อหา Commit ID
2. ใช้ `git reset` หรือ `git revert` เพื่อแก้ไขและทดสอบโค้ดใหม่
3. แก้ไขฟังก์ชันและทำการ Commit อีกครั้งหลังจากทดสอบเรียบร้อย
การยกเลิกการเปลี่ยนแปลงใน Git เป็นทักษะสำคัญที่นักพัฒนาทุกคนควรมี การเข้าใจวิธีใช้ `git reset`, `git revert`, `git checkout`, และ `git restore` ช่วยให้การจัดการประวัติซอร์สโค้ดสามารถทำได้อย่างมีประสิทธิภาพและปลอดภัย
สำหรับใครที่ต้องการพัฒนาทักษะการใช้งาน Git และเครื่องมือการเขียนโปรแกรมอื่น ๆ อย่างลึกซึ้ง แนะนำให้ศึกษาต่อในคอร์สเรียนเฉพาะทางที่สถาบัน EPT ซึ่งคุณจะได้พบกับโปรแกรมการเรียนที่เข้มข้นและตรงกับความต้องการในสายงานปัจจุบัน!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM