กลับไปหน้าบทความ
#git#git-stash#version-control#workflow#developer-tools

Git Stash คืออะไร ใช้อย่างไรให้สลับงานได้เร็วโดยไม่สับสน

`git stash` เป็นคำสั่งสำหรับพักงานที่ค้างอยู่ใน working tree ชั่วคราว เพื่อให้สลับไปทำงานอื่นได้โดยไม่ต้อง commit ทันที แต่ควรใช้อย่างระวังและไม่ใช้แทนการ commit หรือสร้าง branch ระยะยาว

21 มิถุนายน 2569อ่านประมาณ 2 นาที

แชร์บทความ

Git Stash คืออะไร ใช้อย่างไรให้สลับงานได้เร็วโดยไม่สับสน

Git Stash คืออะไร ใช้อย่างไรให้สลับงานได้เร็วโดยไม่สับสน

git stash คือคำสั่งที่ช่วยเก็บการเปลี่ยนแปลงใน working tree ไว้ชั่วคราว เพื่อทำให้ branch กลับมาอยู่ในสถานะสะอาดอีกครั้ง เหมาะมากในสถานการณ์ที่กำลังทำงานค้างอยู่ แต่จำเป็นต้องสลับไปทำอย่างอื่นก่อน เช่น แก้บั๊กด่วน หรือ pull งานใหม่ที่ต้องการ working tree ที่ clean

พูดง่าย ๆ คือ git stash เปรียบเหมือน “ลิ้นชักพักงาน” ที่ช่วยเก็บงานไว้ก่อน แล้วค่อยหยิบกลับมาทำต่อเมื่อพร้อม

สถานการณ์ที่เหมาะกับการใช้ Git Stash

กรณีที่พบบ่อยที่สุดคือกำลังแก้โค้ดอยู่ครึ่งทาง แต่ยังไม่พร้อม commit เพราะงานยังไม่สมบูรณ์ ทว่าเกิดงานด่วนแทรกเข้ามา เช่น

  • ต้องสลับ branch ไปแก้ bug ด่วน
  • ต้อง pull หรือ rebase งานใหม่
  • ต้องการ working tree ที่สะอาดก่อนทำคำสั่งบางอย่าง

ในกรณีแบบนี้ git stash จะช่วยให้พักงานชั่วคราวได้อย่างรวดเร็ว โดยไม่ต้องรีบ commit งานที่ยังไม่พร้อม

คำสั่งพื้นฐานที่ควรรู้

การใช้งานพื้นฐานเริ่มจากการ stash งานปัจจุบันก่อน

git stash

เมื่อพร้อมกลับมาทำงานต่อ ให้ดึงงานกลับมาด้วย

git stash pop

ถ้าคุณมี stash หลายชุด การตั้งชื่อจะช่วยให้จำได้ง่ายขึ้นมาก เช่น

git stash push -m "work on login form"

การใส่ message ทำให้มองเห็นได้ทันทีว่า stash แต่ละก้อนเกี่ยวกับอะไร ลดความสับสนเมื่อเวลาผ่านไป

วิธีดูรายการและตรวจสอบสิ่งที่ stash ไว้

หากต้องการดูว่าในเครื่องมี stash อะไรอยู่บ้าง ให้ใช้คำสั่ง

git stash list

และถ้าต้องการดูรายละเอียดว่า stash นั้นเปลี่ยนอะไรไปบ้าง ให้ใช้

git stash show -p

คำสั่งนี้มีประโยชน์มากเมื่อคุณ stash ไว้นานพอจนเริ่มจำไม่ได้ว่าแต่ละอันคืออะไร

การ stash ไฟล์ใหม่ที่ยังไม่ถูก track

จุดที่หลายคนมักพลาดคือ git stash ปกติอาจไม่เก็บไฟล์ใหม่ที่ Git ยังไม่ได้ track หากมีไฟล์ untracked ที่ต้องการเก็บไปพร้อมกัน ควรใช้ option เพิ่มเติม เช่น

git stash -u

วิธีนี้จะช่วยให้ stash ครอบคลุมไฟล์ใหม่ด้วย เหมาะในกรณีที่คุณเพิ่งสร้างไฟล์ระหว่างทำงานแต่ยังไม่ได้ git add

ข้อควรระวังในการใช้ Git Stash

แม้ git stash จะสะดวกมาก แต่ไม่ควรใช้เป็นที่เก็บงานระยะยาว เพราะมีโอกาสลืมง่าย และเมื่อเวลาผ่านไป context ของงานจะหาย ทำให้กลับมาอ่านแล้วไม่แน่ใจว่า stash นั้นทำไว้เพื่ออะไร

โดยเฉพาะถ้ามี stash หลายก้อนที่ไม่มีชื่อกำกับ จะยิ่งทำให้สับสนมากขึ้น ดังนั้นควรหลีกเลี่ยงการ stash แบบไม่ใส่ message ติดต่อกันหลายครั้ง

ถ้างานที่ค้างอยู่เริ่มมี logic สำคัญ ใช้เวลาทำมาหลายชั่วโมง หรือมีขนาดใหญ่ขึ้นเรื่อย ๆ ทางเลือกที่ดีกว่าคือ

  • สร้าง branch ใหม่
  • commit แบบ WIP (Work in Progress)

วิธีนี้ช่วยให้ค้นหางานย้อนหลังได้ง่ายกว่า และยังแชร์ต่อให้ทีมดูได้สะดวกกว่าการเก็บไว้ใน stash

ถ้า stash pop แล้วเกิด conflict ต้องทำอย่างไร

บางครั้งเมื่อใช้ git stash pop อาจเกิด conflict ได้ โดยเฉพาะถ้าระหว่างที่ stash ไว้ มีการเปลี่ยนแปลงใน branch ปลายทางเกิดขึ้นแล้ว

เมื่อเกิดปัญหา ให้จัดการเหมือน conflict ปกติ คือ

  1. เปิดไฟล์ที่มี conflict แล้วแก้ไขให้เรียบร้อย
  2. ตรวจสอบสถานะด้วย git status
  3. รันทดสอบเพื่อให้มั่นใจว่างานยังทำงานถูกต้อง
  4. จากนั้นจึงค่อย commit

การแก้อย่างเป็นขั้นตอนจะช่วยลดโอกาสพลาด โดยเฉพาะในงานที่มีการแก้ไขหลายไฟล์พร้อมกัน

Workflow ที่แนะนำในการใช้ Git Stash

แนวทางที่ดีคือใช้ stash เฉพาะกับงานชั่วคราวจริง ๆ เช่น

  • ยังไม่พร้อม commit
  • ต้องเปลี่ยน task แบบเร่งด่วน
  • ต้องการเคลียร์ working tree ชั่วคราว

แต่ถ้างานเริ่มจริงจังขึ้น มีโค้ดสำคัญ หรืออาจต้องกลับมาทบทวนภายหลัง การใช้ branch และ commit จะเหมาะสมกว่าในระยะยาว

สรุป

git stash เป็นเครื่องมือที่มีประโยชน์มากสำหรับการพักงานชั่วคราวและสลับบริบทการทำงานได้รวดเร็ว ช่วยให้ working tree กลับมาสะอาดโดยไม่ต้อง commit งานที่ยังไม่พร้อม

อย่างไรก็ตาม ควรใช้มันอย่างมีวินัย ตั้งชื่อ stash ให้ชัดเจน ตรวจสอบรายการเป็นระยะ และไม่ใช้ stash เป็นที่เก็บงานระยะยาว หากงานเริ่มมีความสำคัญหรือมีขนาดใหญ่ขึ้น การสร้าง branch และ commit แบบ WIP จะเป็นแนวทางที่ปลอดภัยและจัดการได้ดีกว่า