กลับไปหน้าบทความ
#Git#Worktree#Developer Tools#Workflow#Version Control

Git Worktree: วิธีทำงานหลายฟีเจอร์พร้อมกันแบบไม่ต้อง clone repo ซ้ำ

Git Worktree คือความสามารถของ Git ที่ช่วยให้เราเปิดหลายโฟลเดอร์ทำงานจาก repository เดียวกันได้ พร้อมทำหลาย branch ไปพร้อมกันอย่างเป็นระเบียบ รวดเร็ว และประหยัดพื้นที่มากกว่าเดิม

17 กุมภาพันธ์ 2569อ่านประมาณ 2 นาที

แชร์บทความ

Git Worktree: วิธีทำงานหลายฟีเจอร์พร้อมกันแบบไม่ต้อง clone repo ซ้ำ

Git Worktree: เปลี่ยนการทำงานหลายฟีเจอร์พร้อมกันให้ง่ายขึ้น

เวลาต้องพัฒนาหลายงานพร้อมกัน เช่น ทำฟีเจอร์ใหม่ไปพร้อมกับแก้ hotfix หลายคนมักเลือกวิธี clone repository ซ้ำออกมาเป็นหลายโฟลเดอร์ เพื่อให้แต่ละงานแยกกันชัดเจน วิธีนี้ใช้ได้ก็จริง แต่ก็มักพ่วงปัญหาตามมาหลายอย่าง ทั้งเปลืองพื้นที่ดิสก์ ต้องติดตั้ง dependency ซ้ำ และสร้างความสับสนเวลาสลับ branch จนไฟล์ในโฟลเดอร์เปลี่ยนไปทั้งชุด

Git Worktree เป็นอีกทางเลือกที่ตอบโจทย์กว่า เพราะช่วยให้เราใช้ repository เดียว แต่เปิด working directory ได้หลายชุดตาม branch ที่ต้องการ โดยยังใช้ object database กลางร่วมกัน ทำให้ทั้งเบาและเร็วกว่าแนวทาง clone ซ้ำอย่างชัดเจน

Git Worktree คืออะไร

ถ้าให้นึกภาพง่ายๆ Git Worktree คือการมี “คลังประวัติ Git” กลางอยู่หนึ่งชุด แล้วเราสามารถสร้างโฟลเดอร์ทำงานเพิ่มออกมาได้หลายโฟลเดอร์ตาม branch ที่ต้องใช้

ผลลัพธ์คือ เราสามารถเปิดงานหลายชุดพร้อมกันได้ เช่น

  • โฟลเดอร์หนึ่งทำ feature A
  • อีกโฟลเดอร์หนึ่งทำ hotfix
  • อีกโฟลเดอร์หนึ่งใช้ review PR หรือ debug ปัญหาเก่า

ทั้งหมดนี้เกิดขึ้นโดยไม่ต้อง clone repository ใหม่ทุกครั้ง

ทำไม Git Worktree ถึงเหมาะกับสายพัฒนา

จุดเด่นของ Git Worktree คือช่วยให้ workflow สะอาดขึ้นมาก โดยเฉพาะคนที่ต้องสลับบริบทการทำงานบ่อยๆ เช่น

  1. ทำ feature และ hotfix พร้อมกันได้ ไม่ต้อง stash งานไปมาให้เสียเวลา และไม่ต้องกังวลว่าไฟล์ในโฟลเดอร์เดิมจะเปลี่ยนตาม branch ที่ checkout

  2. แยกโฟลเดอร์สำหรับ review หรือ debug ได้ทันที ถ้าต้องย้อนกลับไปดู branch เก่า หรือเปิด PR ของเพื่อนร่วมทีม ก็สามารถเปิดอีก worktree ขึ้นมาใช้งานได้เลย โดยไม่กระทบงานหลัก

  3. เปรียบเทียบผลลัพธ์ระหว่างหลาย branch ได้สะดวก เช่น เปิดสองหน้าต่างเทียบผลลัพธ์ build หรือ behavior ของระบบแบบ side-by-side

  4. เหมาะกับโปรเจกต์ที่มี dependency หรือ runtime ต่างกัน บาง branch อาจใช้ Node หรือ Java คนละเวอร์ชัน การแยก worktree ทำให้จัดการแต่ละสภาพแวดล้อมได้ง่ายขึ้น

  5. รองรับงานรันเทสหรือ CI ในเครื่องพร้อมกัน เมื่อแต่ละ branch มี working directory ของตัวเอง ก็ลดปัญหาไฟล์ build ชนกันระหว่างการทดสอบ

เริ่มใช้ Git Worktree แบบรวดเร็ว

สมมติว่าเรามี repository หลักชื่อ myrepo และกำลังอยู่บน branch main

สร้าง worktree สำหรับ branch ที่มีอยู่แล้ว

git worktree add ../myrepo-login feature/login

คำสั่งนี้จะ:

  • สร้างโฟลเดอร์ ../myrepo-login
  • checkout ไปที่ branch feature/login ในโฟลเดอร์นั้นทันที
  • โดยที่ repository หลักยังคงอยู่ branch เดิม ไม่ถูกสลับตาม

สร้าง branch ใหม่พร้อม worktree ในครั้งเดียว

git worktree add -b feature/payment ../myrepo-payment main

คำสั่งนี้จะ:

  • สร้าง branch feature/payment โดยอิงจาก main
  • สร้างโฟลเดอร์ ../myrepo-payment
  • ผูก branch ใหม่เข้ากับ worktree นั้นให้พร้อมใช้งานทันที

ดูรายการ worktree ทั้งหมด

git worktree list

เราจะเห็นรายละเอียดของแต่ละ worktree เช่น path, branch และ commit ที่กำลังใช้งานอยู่ในแต่ละโฟลเดอร์

สิ่งที่ควรรู้ก่อนใช้งานจริง

หนึ่งในคุณสมบัติที่มีประโยชน์มากของ Git Worktree คือ Git จะ “ล็อก” branch ที่ถูกใช้งานอยู่กับ worktree นั้นไว้ ทำให้เราไม่เผลอลบ branch ที่ยังมีโฟลเดอร์ใช้งานอยู่

ถ้าต้องการลบ worktree ออก ต้องลบตัว worktree ก่อน เช่น

git worktree remove ../myrepo-login

จากนั้นถ้าต้องการลบ branch ค่อยสั่ง

git branch -d feature/login

อีกเรื่องที่ควรระวังคือ แต่ละ worktree มีไฟล์ทำงานของตัวเองจริง แต่ไฟล์ .git ภายในเป็นตัวชี้ไปยังข้อมูลกลางของ repository ดังนั้นไม่ควรย้ายหรือก๊อปปี้โฟลเดอร์ worktree แบบสุ่ม เพราะอาจทำให้โครงสร้างอ้างอิงเสียหายได้

เวิร์กโฟลว์ที่แนะนำสำหรับทีม

สำหรับทีมพัฒนา สามารถวางรูปแบบการใช้งานได้ง่ายและเป็นระเบียบ เช่น

  • โฟลเดอร์หลัก ใช้สำหรับ main หรือ develop
  • ฟีเจอร์ใหม่แต่ละงาน สร้าง worktree แยกตามชื่อ branch
  • เปิดแต่ละโฟลเดอร์ใน VS Code คนละหน้าต่างเพื่อแยกบริบทการทำงาน

ตัวอย่างโครงสร้างโฟลเดอร์:

  • myrepo
  • myrepo-login
  • myrepo-payment
  • myrepo-hotfix

รูปแบบนี้ช่วยให้เห็นชัดว่าตอนนี้กำลังทำงานอะไรอยู่ในแต่ละหน้าต่าง และลดความเสี่ยงจากการสลับ branch ผิดโฟลเดอร์

ทำไมควรเริ่มลองใช้ตั้งแต่วันนี้

ถ้าคุณเคยรู้สึกว่า workflow ปัจจุบันมีความยุ่งยาก เช่น ต้อง clone repo ซ้ำ ต้อง stash บ่อย หรือเสียเวลาจัดการ environment ใหม่ทุกครั้ง Git Worktree คือเครื่องมือเล็กๆ ที่ช่วยเปลี่ยนวิธีทำงานได้มากกว่าที่คิด

โดยเฉพาะกับงานประเภทต่อไปนี้ Git Worktree จะเห็นผลชัดมาก:

  • งาน hotfix ที่ต้องแทรกกลางระหว่างทำฟีเจอร์
  • การ review PR โดยไม่แตะงานหลัก
  • การ debug ปัญหาใน branch เก่า
  • การรัน build หรือเทสหลายชุดพร้อมกัน

สรุป

Git Worktree ช่วยให้เราทำงานหลาย branch พร้อมกันได้อย่างสะอาด รวดเร็ว และประหยัดทรัพยากรกว่าการ clone repository ซ้ำหลายรอบ เราสามารถแยกโฟลเดอร์สำหรับแต่ละงานได้ชัดเจน โดยยังใช้ข้อมูล Git ชุดเดียวกันอยู่เบื้องหลัง

ถ้าอยากเริ่มต้นแบบง่ายที่สุด ลองสร้าง worktree สักหนึ่งชุดสำหรับงาน hotfix หรือ PR review แล้วคุณจะเห็นทันทีว่าการทำงานหลายบริบทใน Git ไม่จำเป็นต้องวุ่นวายอีกต่อไป