Data Recovery
รูปแบบนี้จะเป็นการเลือกย้อนไปยังการ commit ที่เราต้องการและล้างการแก้ไขก่อนหน้าการ commit ครั้งนั้นทั้งหมดคำสั่งเรียกดูประวัติการ commit ของ git
เมื่อใช้คำสั่งแล้วจะแสดงประวัติการ commit โดยจะแสดงตัวเลขฐาน 16 และ comment ที่เรา commit ไว้git log --pretty=oneline
คำสั่งกู้คืนการแก้ไขข้อมูลที่เคย commit ไว้ เป็นการย้อนสถาณะของไฟล์ทั้งหมดกลับไปเหมือนตอนที่ commit ครั้งนั้นไว้
git reset --hard 8436f9b2b51283f5088f2de488b58282c7a5e432
โดยใส่ตัวเลขด้านหน้า commit ที่เราต้องการกู้คืนเมื่อใช้คำสั่งแล้วจะเห็นว่า commit ล่าสุดจะเป็น commit ที่เราต้องการ
ศึกษาเพิ่มเติม :
http://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery#_data_recovery
Unmodifying a Modified File
รูปแบบนี้จะเป็นการล้างการแก้ไขก่อนหน้าการ commit ครั้งล่าสุด
ลองทำการแก้ไขไฟล์ที่ได้ commit ไปแล้ว (functional_tests.py) ก่อนหน้าการ commit จะเป็นลักษณะดังภาพ
ลองทำการแก้ไขไฟล์ที่ได้ commit ไปแล้ว (functional_tests.py) ก่อนหน้าการ commit จะเป็นลักษณะดังภาพ
ทดลองใส่ comment code ส่วนฟังก์ชััน setUp และ tearDown (ทำการแก้ไขไฟล์)
เช็ค git status จะเห็นว่าไฟล์ functional_tests.py ถูกแก้ไข และบอกว่าการแก้ไขนั้นยังไม่ได้ถูก commit ไปยัง git
หากต้องการให้เนื้อหาของไฟล์กลับไปเป็นเหมือนก่อนหน้าที่ commit ใช้คำสั่ง
git checkout -- ชื่อไฟล์เมื่อลองใช้คำสั่งและลองเช็ค git status จะเห็นว่าไม่มีการแก้ไขไฟล์ functional_tests.py แล้ว
เมื่อลองดูไฟล์ functional_tests.py จะเห็นว่าไม่มีการ comment code เหมือนกับก่อนที่จะทำการ commit
ศึกษาเพิ่มเติม :
http://git-scm.com/book/en/v2/Git-Basics-Undoing-Things
Branches
รูปแบบนี้จะเป็นการสร้าง "กิ่ง" แยกออกไปเพื่อแก้ไขเพิ่มเติม และเมื่ออยากกลับมาเริ่มแก้ไขที่ commit เก่าๆก็สามารถสร้างกิ่งใหม่ออกไปอีกทาง โดยจะไม่มีผลกระทบต่อกัน และไม่มีผลกระทบต่อ commit เดิมด้วยเริ่มต้นด้วยการดูการ commit ครั้งล่าสุดด้วยคำสั่ง
git log --oneline --decorate
โดยคำสั่ง --decorate จะแสดงกิ่งและตัวชี้(pointer)ว่าขณะนี้อยู่ที่ commit ไหน โดยกิ่งที่ git จะสร้างขึ้นมาตั้งแต่เริ่มต้นจะชื่อว่า master ซึ่งจะอยู่ที่ commit ครั้งล่าสุดของเรา และมีตัวชี้ชื่อว่า HEAD
จากนั้นเราจะสร้างกิ่งใหม่ชื่อว่า testing โดยใช้คำสั่ง
git branch testing
จะได้กิ่งใหม่ขึ้นมาอยู่ตำแหน่งเดียวกับกิ่งที่เราทำงานด้วยอยู่ปัจจุบันคือ master
จากนั้นเราจะย้ายตัว pointer ไปยังกิ่ง testing เพื่อเริ่มทำงานที่กิ่ง testing ใช้คำสั่ง
git checkout testing
ทดลองทำการสร้างไฟล์ชื่อว่า new_file.py
ทำการ add ไฟล์นี้ไปยัง git และทำการ commit การแก้ไขนี้ว่า 'made a change'
เมื่อลองใช้คำสั่ง git log --oneline --decorate อีกครั้งจะเห็นว่ามีการ commit เพิ่มขึ้นมา
สังเกตว่าตัวกิ่ง master ไม่ได้ตามมาด้วย
เมื่อลองกลับไปให้ HEAD ชี้ที่ master ใช้คำสั่ง
git checkout master
จะเห็นว่าไฟล์ new_file.py หายไปเมื่อลองกลับมาที่ testing ไฟล์ new_file.py ก็จะกลับมา
ศึกษาเพิ่มเติม :
http://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell












ไม่มีความคิดเห็น:
แสดงความคิดเห็น