0Pricing
Git & GitHub Professional Workflow · บทเรียน

Git Reflog และการกู้คืนประวัติ

เรียนรู้ `git reflog` เพื่อกู้คืนคอมมิตหรือสาขาที่สูญหาย ช่วยเป็นตาข่ายนิรภัยสำหรับงานของคุณ

Git Reflog และการกู้คืนประวัติ เป็นบทเรียน Git & GitHub Professional Workflow ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Git & GitHub Professional Workflow และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Git & GitHub Professional Workflow มีบทเรียนทั้งหมด 4 บทเรียน

Git Reflog คืออะไร

เคยลบสาขาหรือรีเซ็ตไปยังคอมมิตที่ไม่ถูกต้องโดยไม่ตั้งใจไหมครับ ไม่ต้องตกใจ! Git มีตาข่ายนิรภัยอันทรงพลังที่เรียกว่า Reflog

รีฟล็อก (บันทึกการอ้างอิง) คือบันทึกตำแหน่งที่ HEAD และตัวชี้สาขาเคยอยู่ในคลัง ภายในเครื่องของคุณ

รีฟล็อกติดตามประวัติอย่างไร

ต่างจากประวัติคอมมิต (git log) ที่ติดตามการเปลี่ยนแปลงในไฟล์โครงการของคุณ รีฟล็อกจะติดตามการเปลี่ยนแปลงของการอ้างอิงในคลังของคุณ

ทุกครั้งที่ HEAD (คอมมิตปัจจุบันของคุณ) หรือตัวชี้สาขาเคลื่อนที่ Git จะบันทึกเหตุการณ์นี้ไว้ในรีฟล็อก ซึ่งรวมถึง:

  • การคอมมิตการเปลี่ยนแปลง
  • การสลับสาขา
  • การผสานหรือการรีเบส
  • การดำเนินการรีเซ็ต
  • การโคลนคลัง

การดูรีฟล็อกของคุณ

หากต้องการดูรีฟล็อก เพียงใช้คำสั่ง git reflog คำสั่งนี้จะแสดงรายการการกระทำและสถานะของ HEAD ในขณะนั้น

มาจำลองการกระทำบางอย่าง แล้วดูรีฟล็อกกัน:

git init my_repo
cd my_repo

echo "First line" > file.txt
git add file.txt
git commit -m "Initial commit"

echo "Second line" >> file.txt
git add file.txt
git commit -m "Add second line"

git reflog

ถอดรหัสรายการรีฟล็อก

รายการรีฟล็อกแต่ละรายการมีรูปแบบเฉพาะ มาลองแยกดูรายการทั่วไปที่คุณอาจพบ:

a1b2c3d HEAD@{0}: commit: Add new feature

  • a1b2c3d: ค่าแฮช SHA-1 ของคอมมิตที่ HEAD อยู่ ณ ขณะนั้น
  • HEAD@{0}: นี่คือตัวชี้ "รายการรีฟล็อก" โดย @{0} คือสถานะล่าสุด @{1} คือสถานะก่อนหน้านั้น และไล่ต่อไปเช่นนี้
  • commit: Add new feature: คำอธิบายการกระทำที่ทำให้ HEAD เคลื่อนที่

ตัวชี้เหล่านี้สำคัญอย่างยิ่งต่อการกู้คืน!

สถานการณ์: กู้คืนคอมมิตที่สูญหาย

ลองนึกภาพว่าคุณสร้างคอมมิตหนึ่งรายการ แล้วเผลอยกเลิกด้วย git reset --soft HEAD~1 คอมมิตของคุณไม่อยู่ในประวัติสาขาปัจจุบันแล้ว แต่ยังไม่ได้หายไปจริง!

รีฟล็อกยังจำคอมมิตนั้นได้ มาจำลองข้อผิดพลาดที่เกิดขึ้นบ่อยนี้กัน:

git init my_project_recovery
cd my_project_recovery

echo "Initial content" > start.txt
git add start.txt
git commit -m "Initial commit"

echo "Important feature" > feature.txt
git add feature.txt
git commit -m "Added an important feature"

# Oops! Accidentally reset
git reset --soft HEAD~1

git reflog

นำคอมมิตกลับคืนมา

หลังจากรีเซ็ต หากคุณเรียกใช้ git reflog คุณจะเห็นรายการของคอมมิต "Added an important feature" ซึ่งอาจอยู่ที่ HEAD@{1} หรือรายการที่ใกล้เคียง

หากต้องการกู้คืน คุณสามารถใช้ git reset ร่วมกับรายการรีฟล็อกได้ ตัวอย่างเช่น หากแฮชของคอมมิตที่สูญหายคือ abcdefg หรือรายการรีฟล็อกคือ HEAD@{1}:

# Assuming the lost commit was HEAD@{1} in the reflog
git reset --hard HEAD@{1}

# Or using the specific commit hash from reflog
# git reset --hard abcdefg

# Now, check your log. The commit is back!
git log --oneline

สถานการณ์: เรียกคืนสาขาที่ถูกลบ

จะเกิดอะไรขึ้นหากคุณเผลอลบทั้งสาขาก่อนผสานสาขา หรือคิดว่าไม่จำเป็นต้องใช้สาขานั้นอีกแล้ว

สาขาเป็นเพียงตัวชี้ไปยังคอมมิต หากคุณลบสาขา คอมมิตที่สาขานั้นชี้อยู่จะไม่ถูกลบออกจากคลังของคุณทันที รีฟล็อกยังจำได้ว่า HEAD ของสาขานั้นเคยอยู่ที่ใด!

กู้คืนสาขาจากรีฟล็อก

สมมติว่าคุณมีสาขาชื่อ feature-x ทำงานอยู่บนสาขานั้น แล้วลบด้วย git branch -D feature-x

เมื่อคุณเรียกใช้ git reflog คุณอาจเห็นรายการดังนี้:

1234567 HEAD@{5}: branch: Created branch feature-x หรือ
abcdefg HEAD@{2}: checkout: moving from feature-x to master

คุณสามารถใช้แฮชคอมมิต (เช่น 1234567 หรือ abcdefg) จากรายการรีฟล็อกที่สาขายังทำงานอยู่ เพื่อสร้างสาขานั้นขึ้นใหม่:

# Assume 'feature-x' was deleted and its last commit was '1234567'

# Create a new branch pointing to that commit
git branch feature-x-recovered 1234567

# Now, check out your recovered branch
git checkout feature-x-recovered

# Verify its history
git log --oneline

รายการรีฟล็อกหมดอายุ

แม้รีฟล็อกจะเป็นตาข่ายนิรภัยที่ทรงพลัง แต่รายการต่าง ๆ ไม่ได้อยู่ตลอดไป Git จะล้างรายการรีฟล็อกเก่าหลังผ่านช่วงเวลาหนึ่ง

  • โดยค่าเริ่มต้น รายการที่เข้าถึงได้ (จาก HEAD ปัจจุบันของคุณ) จะหมดอายุหลังผ่านไป 90 วัน
  • รายการที่เข้าถึงไม่ได้ (เช่น จากสาขาหรือคอมมิตที่ถูกลบและไม่มีการอ้างอิงอีกต่อไป) จะหมดอายุหลังผ่านไป 30 วัน

ดังนั้นควรกู้คืนงานที่ "สูญหาย" ให้เร็วที่สุด!

โจทย์ท้าทายการกู้คืนด้วยรีฟล็อก

คุณสร้างสาขาฟีเจอร์ใหม่ สร้างคอมมิตหลายรายการ แล้วเผลอลบสาขานั้นโดยไม่ได้ผสาน คุณเรียกใช้ git reflog และเห็นรายการนี้:

...
c0ffee1 HEAD@{3}: commit: Implement new user profile page
bada55e HEAD@{4}: checkout: moving from feature/profile to main
...

ลำดับคำสั่งใดจะสร้างสาขา feature/profile ขึ้นใหม่ได้อย่างถูกต้อง โดยให้ชี้ไปยังคอมมิตล่าสุดที่สาขานี้มีอยู่ก่อนถูกลบ

รีฟล็อก: ตาข่ายนิรภัยของ Git

คุณเชี่ยวชาญการใช้ git reflog ซึ่งเป็นเครื่องมือสำคัญสำหรับกู้คืนงานที่ "สูญหาย" ในคลัง Git ภายในเครื่องของคุณแล้ว โปรดจำไว้ว่า:

  • รีฟล็อกติดตามตำแหน่งที่ HEAD และตัวชี้สาขาเคยอยู่
  • ใช้ git reflog เพื่อดูประวัตินี้
  • คุณสามารถกู้คืนคอมมิตหรือสาขาได้โดยใช้ git reset หรือ git branch ร่วมกับรายการรีฟล็อก (HEAD@{n} หรือแฮชคอมมิต)
  • รายการรีฟล็อกมีวันหมดอายุ ดังนั้นหากต้องการกู้คืนสิ่งใดควรดำเนินการโดยเร็ว!

รักษาประวัติ Git ให้สะอาด แต่โปรดทราบว่ารีฟล็อกพร้อมช่วยเหลือเมื่อเกิดเหตุฉุกเฉิน!

คำถามที่พบบ่อย

บทเรียน “Git Reflog และการกู้คืนประวัติ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Git Reflog และการกู้คืนประวัติ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Git & GitHub Professional Workflow ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Git & GitHub Professional Workflow มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Git Reflog และการกู้คืนประวัติ”

เรียนรู้ `git reflog` เพื่อกู้คืนคอมมิตหรือสาขาที่สูญหาย ช่วยเป็นตาข่ายนิรภัยสำหรับงานของคุณ คุณปฏิบัติ Git & GitHub Professional Workflow ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Git & GitHub Professional Workflow หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Git & GitHub Professional Workflow บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “Git Reflog และการกู้คืนประวัติ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Git & GitHub Professional Workflow นี้ได้ไหม

ได้ บทเรียน Git & GitHub Professional Workflow ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Git Reflog และการกู้คืนประวัติ
  2. Git Bisect สำหรับการแก้ไขข้อบกพร่อง
  3. การบำรุงรักษาและจัดระเบียบคลังเก็บ
  4. การเขียนประวัติใหม่ด้วย git filter-repo
← กลับไปที่ Git & GitHub Professional Workflow