Git Reset เป็นคำสั่งสำหรับย้อนการกระทำ หรือเข้าใจง่ายๆ คือเหมือนกับคำสั่ง undoing ในโปรแกรมอื่นๆ วิธีการใช้จะแสดงให้เห็นในตัวอย่างด้านล่าง โดยตัวอย่างมีการแก้ไขข้อมูลในไฟล์ที่ชื่อว่า README.txt และภาพด้านล่างเป็นผลลัพธ์จากการใช้คำสั่ง git status เพื่อให้เห็นว่าเอกสารดังกล่าวมีการแก้ไข
จากนั้นทดลองใช้คำสั่ง git add
เพื่อจะทดสอบใช้คำสั่ง git reset
โดยการย้อนกลับมายังสถานะดังภาพตัวอย่างด้านบน
$ git add .
รูปภาพด้านล่างเป็นผลลัพธ์จากการใช้คำสั่ง git add
แล้วตรวจสอบสถานะด้วยคำสั่ง git status
เมื่อต้องการยกเลิกคำสั่ง git add
ที่กระทำไปก่อนหน้านี้ สามารถทำได้โดยใช้คำสั่ง
$ git resert HEAD <file>
ผลลัพธ์จากการใช้คำสั่ง git reset
แล้วตรวจสอบสถานะด้วยคำสั่ง git status
จะพบว่าสถานะจะย้อนกลับไปก่อนการใช้คำสั่ง git add
ดังรูปภาพตัวอย่างด้านบนสุด
อีกหนึ่งคำสั่งที่เกี่ยวกับการยกเลิกคือคำสั่ง Git Rebase แต่คำสั่ง Git Rebase นั้น มีจุดประสงค์ไม่เหมือนกับคำสั่ง Reset ที่กล่าวมาข้างต้น เนื่องจาก Git Rebase นั้นเป็นคำสั่งในการย้าย branch ที่สร้างไว้กับ base ก่อนหน้า ไปยัง base ใหม่ อธิบายได้ดังรูปภาพด้านล่าง
เพื่อให้เห็นวิธีการใช้คำสั่ง git rebase
ได้ชัดเจน จึงได้ทดลองสร้างไฟล์ CHANGEME.txt โดยกำหนดค่าเริ่มต้น ดังภาพตัวอย่างด้านล่าง
ทดลองสร้าง branch จาก master ในส่วนนี้ ด้วยคำสั่ง
$ git checkout -b new-branch master
หลังจากใช้คำสั่งดังกล่าว เมื่อลองตรวจสอบ branch ด้วยคำสั่ง git branch
จะพบว่าขณะนี้สถานะ active อยู่ที่ branch ที่เพิ่งสร้างขึ้นมาใหม่นี้
จากนั้นทดลองแก้ไขข้อมูลภายในเอกสาร บน branch ที่สร้างขึ้นมาใหม่นี้ จากตัวอย่างจะเพิ่มข้อความลงไปในเอกสารดังกล่าว
จากนั้นให้ใช้คำสั่ง commit ด้วยวิธีการตามปกติ
ทดลอง switch กลับมายัง master แล้วลองดูไฟล์ CHANGEME.txt ซึ่งจะพบว่าข้อมูลภายในไฟล์ CHANGEME.txt บน master อยู่ใน state เดิม ก่อนการแยก branch
โดยหากเรามีการแก้ไขข้อมูลใน CHANGEME.txt บน master โดยให้ commit โค้ดตามปกติ
กรณีนี้หากกลับไปตรวจสอบข้อมูลของ CHANGEME.txt บน new-branch จะพบว่าข้อความที่เพิ่มเข้าไปบน master จะไม่ปรากฎใน new-branch
คำสั่ง rebase นั้น จะช่วยให้เราสามารถนำส่วนที่พัฒนาเพิ่มเติมบน new-branch ไปประกอบเข้ากับ master โดยหลักการดังภาพที่อธิบายไว้ด้านบน ด้วยคำสั่ง
$ git rebase -i master
ซึ่งจะเปิด editor ขึ้นมา โดยให้เรากำหนดรายละเอียด หากตรวจสอบ และพบว่าไม่มีการเปลี่ยนแปลง หรือแก้ไขรูปแบบการทำ rebase แต่อย่างไร สามารถปิดตัว editor ไปได้เลย
จากนั้นผลลัพธ์ของคำสั่ง git rebase
ก็จะปรากฏให้เห็น โดยทดลองตรวจสอบข้อมูลในไฟล์ CHANGEME.txt ดังรูปด้านล่าง
หลังจากนั้น หากต้องการยืนยันการ rebase ให้ใช้คำสั่ง
$ git rebase --continue
ซึ่งจะได้ผลลัพธ์ตามรูปด้านล่าง
หรือถ้าต้องการยกเลิกคำสั่ง rebase สามารถทำได้โดยใช้คำสั่ง
$ git rebase --abort
แทน ซึ่งคำสั่ง rebase จะถูกยกเลิกทันที