LEVEL 2 · ระดับกลาง
ทิ้ง/ย้อนงานที่ยังไม่แชร์
ความกลัวที่สุดของมือใหม่คือ "ทำพัง แล้วงานหาย" ความจริงคือ Git ออกแบบมาให้กู้คืนได้แทบทุกอย่าง ขอแค่เคย commit ไว้ บทนี้ว่าด้วยการทิ้ง/ย้อนงานที่ ยังไม่แชร์กับใคร — ยังอยู่ในเครื่องคุณคนเดียว จึงย้อนได้อย่างอิสระเต็มที่โดยไม่กระทบใคร กุญแจคือเข้าใจว่าแต่ละคำสั่ง "ย้อน" คนละชั้นกัน (งานที่ push แชร์ไปแล้วมีกติกาต่างออกไป — บทที่ 7)
6.1 restore — ทิ้งการแก้ที่ยังไม่ commit
แก้ไฟล์มั่วจนอยากเริ่มใหม่? git restore <file> ดึงไฟล์กลับไปเป็นเหมือน commit ล่าสุด ส่วน git restore --staged <file> เอาไฟล์ออกจากพื้นที่จัดเตรียม (ถอน add) โดยไม่ทิ้งการแก้
6.2 reset — เลื่อนป้าย branch ถอยหลัง
เข้าใจ reset ได้ทันทีถ้าจำว่ามันแค่ เลื่อนป้าย branch ไปชี้ commit อื่น ความต่างอยู่ที่ว่ามันจะแตะพื้นที่จัดเตรียมและไฟล์จริงด้วยไหม:
--soft แตะแค่ป้าย, --mixed แตะป้าย+staging, --hard แตะถึงไฟล์จริง — จุดเดียวที่ทำให้งานหายถาวร| โหมด | เลื่อนป้าย | พื้นที่จัดเตรียม | ไฟล์จริง | ใช้เมื่อ |
|---|---|---|---|---|
--soft | ✓ | คงไว้ | คงไว้ | รวมหลาย commit เป็นอันเดียว, แก้ข้อความ |
--mixed (ค่าเริ่มต้น) | ✓ | ล้าง | คงไว้ | ถอน commit แต่เก็บงานไว้ add ใหม่ |
--hard | ✓ | ล้าง | ลบทิ้ง | ทิ้งทุกอย่าง กลับไปจุดเดิมจริง ๆ |
✅ สรุปบทที่ 6 —
restoreทิ้งการแก้ที่ยังไม่ commit ·resetเลื่อนป้าย branch (soft เก็บงาน, hard ลบงาน) ·commit --amendแก้ commit ล่าสุด · ทั้งหมดนี้ทำได้อย่างอิสระเพราะยังไม่แชร์กับใคร — พอ push แล้วกติกาเปลี่ยนทันที (บทที่ 7)