Server Disk เต็ม — Git Worktree ลด 90% ทันที
เลิกใช้ ~/workspace/ แล้ว — ระบบ worktree ใหม่ประหยัด disk 90% เพิ่มคนใหม่ได้ไม่จำกัด แค่เปลี่ยน folder ที่เปิดใน Cursor

เปลี่ยน folder เดียว ประหยัด Disk 90%
คู่มือสำหรับทีม Viber ทุกคน — อ่านจบแล้วทำตามได้เลย
อัปเดตล่าสุด: 2026-03-21
สรุปสั้นๆ — อ่านแค่นี้ก็เข้าใจ
- เลิกใช้ ~/workspace/ชื่อตัวเอง/ → ใช้ /srv/projects/<project>/<ชื่อ>/ แทน
- Git Worktree (ระบบแยก folder ทำงานจาก code ชุดเดียว) ประหยัด disk จาก 7.7 GB เหลือ 0.8 GB (ลด 90%)
- เพิ่มคนใหม่ไม่กิน disk — รัน command เดียว เสร็จใน 5 วินาที
- ทุกอย่างเหมือนเดิม แค่เปลี่ยน folder ที่เปิดใน Cursor
ทำไมต้องเปลี่ยนวิธีทำงานบน Server?
Disk บน server ใกล้เต็มเพราะ node_modules (folder ที่เก็บ library/package ทั้งหมดของ project) ถูก clone (คัดลอก) ซ้ำทุกคน — code ชุดเดียวกันกิน disk ซ้ำ 6-7 เท่า ระบบ Git Worktree (แยก folder ทำงานจาก code ต้นฉบับชุดเดียว) แก้ปัญหานี้ได้หมด แค่เปลี่ยน path ที่เปิดใน Cursor
เปลี่ยนแค่ path ที่เปิด — นอกนั้นทุกอย่างเหมือนเดิม ไม่ต้องเรียนอะไรใหม่
ก่อนหน้านี้ทีมทำงานยังไง?
ทุกคน SSH (Secure Shell — เชื่อมต่อ server ระยะไกล) เข้า server ผ่าน Cursor แล้วเปิด folder ของตัวเองที่ ~/workspace/ชื่อตัวเอง/ ข้างในก็ clone repo ทุกตัวมา — Project-A, Project-B, Project-C — ทุกคนได้ code ชุดเดียวกัน แต่ คนละ copy
├── dev-a/
│ ├── Project-A/ ← dev-a clone มาทำงาน
│ ├── Project-B/ ← dev-a clone มาทำงาน
│ └── Project-C/ ← dev-a clone มาทำงาน
├── dev-b/
│ ├── Project-A/ ← dev-b ก็ clone ชุดเดียวกัน
│ ├── Project-B/ ← dev-b ก็ clone ชุดเดียวกัน
│ └── Project-C/ ← dev-b ก็ clone ชุดเดียวกัน
├── dev-c/
│ └── ... ← dev-c ก็ clone ซ้ำอีก
└── ...
เปรียบเทียบให้เห็นภาพ
ลองนึกว่า project คือ หนังสือ 1 เล่ม
แบบเดิม = ถ่ายเอกสาร
ถ่ายเอกสารหนังสือให้ทุกคน คนละ 1 ชุด
6 คน = 6 ชุด = 7.2 GB สำหรับ code ชุดเดียวกัน
แบบใหม่ = ห้องสมุด
หนังสือมี 1 ชุดในห้องสมุด
ทุกคนนั่งอ่านโต๊ะตัวเอง จดโน้ตแยก
ไม่ว่ากี่คนก็ไม่เพิ่ม disk
ระบบเดิมมีปัญหาอะไรบ้าง?
ปัญหาหลัก 3 ข้อที่ทำให้ระบบเดิมใช้ต่อไม่ได้ — ทั้งเรื่อง disk, permission (สิทธิ์เข้าถึงไฟล์), และการขยายทีม (วัดขนาด disk บน server จริง เทียบก่อน-หลังเปลี่ยนระบบ)
Disk ใกล้เต็ม
194 GB ใช้ไป 143 GB — node_modules ซ้ำทุกคน กิน 1.1 GB ต่อ copy
Permission วุ่นวาย
folder เปิดสิทธิ์หมด ใครก็แก้/ลบไฟล์คนอื่นได้ ถ้าพิมพ์ผิด = จบ
ขยายทีมไม่ได้
เพิ่ม 1 คน = clone + ติดตั้ง dependencies ทุก repo กิน disk อีก 3-5 GB
Disk Usage — เห็นชัดเลยว่ากินเท่าไหร่
code จริงๆ มีแค่ไม่กี่ MB — ที่กิน disk คือ node_modules ที่ถ่ายเอกสารซ้ำทุกคน
Git Worktree แก้ปัญหานี้ได้ยังไง?
Git Worktree (ระบบแยก folder ทำงานจาก repo เดียว) ทำให้ทุกคนทำงานกับ code ต้นฉบับชุดเดียวกัน แต่แต่ละคนได้ "โต๊ะทำงาน" (worktree) แยกของตัวเอง — แก้ไฟล์ได้โดยไม่กระทบคนอื่น
โครงสร้างใหม่บน Server
│
├── .repos/ ← ห้องสมุด (ห้ามแตะ!)
│ ├── Project-A.git/
│ ├── Project-B.git/
│ └── Project-C.git/
│
├── Project-A/ ← project A
│ ├── main/ ← production (ดูอย่างเดียว)
│ ├── develop/ ← staging (รวมงานก่อนขึ้น production)
│ ├── dev-a/ ← โต๊ะของ dev-a
│ ├── dev-b/ ← โต๊ะของ dev-b
│ └── dev-c/ ← โต๊ะของ dev-c
│
├── Project-B/ ← project B
│ ├── main/ · develop/ · dev-a/ · dev-b/ · ...
│
└── Project-C/ ← project C
├── main/ · develop/ · dev-a/ · ...
ต้นฉบับ 1 ชุด = ไม่ว่ากี่คนก็ไม่เพิ่ม disk — เพิ่มคนใหม่รัน command เดียว เสร็จภายใน 5 วินาที
เปลี่ยนมาใช้ระบบใหม่ต้องทำยังไง?
แค่ 5 ขั้นตอน — ทำงานเหมือนเดิมทุกอย่าง เปลี่ยนแค่ folder ที่เปิดใน Cursor ไม่ต้องเรียนเครื่องมือใหม่ ไม่ต้องจำอะไรเพิ่ม
01เปิด Cursor เข้า folder ใหม่
Remote SSH (เชื่อมต่อ server ระยะไกล) เข้า server เหมือนเดิม แต่เปลี่ยน path:
❌ เดิม: /home/admin/workspace/dev-a/Project-B/
✅ ใหม่: /srv/projects/Project-B/dev-a/
02ติดตั้ง Dependencies (ครั้งแรกครั้งเดียว)
พิมพ์ใน Cursor AI:
AI จะติดตั้ง dependencies ให้อัตโนมัติ — ทำครั้งเดียวพอ ไม่ต้องทำอีก ยกเว้นมีคนเพิ่ม package ใหม่
03เขียน code ตามปกติ
สั่ง AI ผ่าน Cursor ได้เลย — เช่น:
AI จะสร้าง component + เขียน code ให้ — ตรวจผลลัพธ์แล้วกด Accept
04บันทึกงาน (Git)
พิมพ์ใน Cursor AI:
AI จะบันทึกและส่ง code ขึ้น GitLab ให้ — เปลี่ยน {{ชื่อตัวเอง}} เป็นชื่อจริง เช่น feature/dev-a, feature/dev-b
ถ้าอยากพิมพ์ command เองก็ได้
git add .
git commit -m "feat: เพิ่มหน้า login"
git push origin feature/{{ชื่อตัวเอง}}
05สร้าง MR (Merge Request — คำขอรวม code) บน GitLab
เปิด GitLab → กดปุ่ม "Create Merge Request" ที่ขึ้นมาหลัง push → เขียนรายละเอียดสั้นๆ → รอ Maintainer review
Flow ทั้งหมดในภาพเดียว
เขียน code
ใน folder ตัวเอง
commit
บันทึกในเครื่อง
push
ส่งขึ้น GitLab
Merge Request
ขอ review + merge
commit บ่อยๆ push ทุกวัน — ป้องกัน code หาย ถ้า server มีปัญหา
ถึงครึ่งทางแล้ว
ข้างบนเข้าใจ "ทำไม" กับ "ทำยังไง" ต่อไปคือ "กฎที่ต้องจำ" + FAQ
ต้องจำกฎอะไรบ้าง?
กฎไม่เยอะ จำแค่ 2 หมวด — "ห้ามทำ" กับ "ต้องทำ" ถ้าทำตามนี้ครบจะไม่มีปัญหาอะไรเลย
🚫 ห้ามทำ
- ห้ามแก้ไฟล์ใน folder main/ — production ห้ามแตะ
- ห้ามแก้ไฟล์ใน folder develop/ — ให้ merge ผ่าน GitLab
- ห้ามเข้า folder ของคนอื่น — เช่น dev-a ห้ามไปแก้ใน dev-b/
- ห้ามแตะ folder .repos/ — ห้องสมุดกลาง ถ้าพัง = ทุกคนพัง
- ห้าม merge เข้า main เอง — ต้องผ่าน MR (Merge Request) + review เท่านั้น
✅ ต้องทำ
- ทำงานใน folder ชื่อตัวเอง เท่านั้น
- commit บ่อยๆ อย่ารอสะสม — commit ทุกครั้งที่ทำ feature ย่อยเสร็จ
- push ขึ้น GitLab ทุกวัน — ป้องกัน code หาย
- สร้าง Merge Request เมื่อ feature เสร็จ — ให้คนอื่น review ก่อน merge
เกือบจบแล้ว — เหลือ FAQ กับ Cheat Sheet
อ่านถึงตรงนี้ = เข้าใจระบบใหม่ครบแล้ว ข้างล่างเป็นคำถามที่มักจะถาม + คำสั่งที่ใช้ทุกวัน
คำถามที่ทีมมักจะถาม?
รวมคำถามที่ทีมน่าจะสงสัย — ถ้ามีคำถามเพิ่มเติมถาม Lead Dev ได้เลย
ต้องย้าย code จาก ~/workspace/ มาไหม?
ไม่ต้อง — folder ใหม่มี code ชุดเดียวกันอยู่แล้ว แค่เปิด Cursor ชี้ไปที่ใหม่ เช่น /srv/projects/Project-B/dev-a/
ถ้ามี code ที่ยังไม่ได้บันทึกใน workspace เดิม ให้สั่ง Cursor: "commit งานแล้ว push ขึ้น GitLab" ก่อน แล้วเข้า folder ใหม่สั่ง "pull code ล่าสุดมา"
npm install ต้องทำทุกครั้งไหม?
ไม่ต้อง — ทำครั้งแรกครั้งเดียวเมื่อเข้า folder ใหม่ หลังจากนั้นไม่ต้องทำอีก ยกเว้นมีคนเพิ่ม package ใหม่ใน package.json
ถ้า 2 คนแก้ไฟล์เดียวกันจะเป็นยังไง?
ไม่มีปัญหา เพราะแต่ละคนทำงานใน folder แยก — dev-a แก้ page.tsx ใน /dev-a/ ส่วน dev-b แก้ page.tsx ใน /dev-b/ ไฟล์คนละชุดกัน ไม่ทับกัน ตอน merge บน GitLab ถ้ามี conflict (แก้ไฟล์เดียวกันตรงจุดเดียวกัน) ค่อยแก้ตอนนั้น
จะดู code ของคนอื่นได้ไหม?
ได้ ดูได้ แต่ห้ามแก้ เข้าไปดูได้ที่ /srv/projects/Project-B/dev-b/ (เปลี่ยนชื่อเป็นคนที่อยากดู)
อยากทดสอบ code ของ develop (รวมงานทุกคน)?
เปิด Cursor ชี้ไปที่ /srv/projects/Project-B/develop/ แล้วสั่ง Cursor: "pull code ล่าสุด, install dependencies, แล้ว start dev server" — แต่ดูได้อย่างเดียว ห้ามแก้ไฟล์ใน develop/
มีคนใหม่เข้าทีม ต้องทำยังไง?
บอก Admin รัน command เดียว:
/srv/projects/add-member.sh Project-B {{ชื่อคนใหม่}}เสร็จ — คนใหม่เปิด Cursor ชี้ไป folder ได้เลย
workspace เดิมจะลบเมื่อไหร่?
เก็บไว้เป็น backup ก่อน — เมื่อทุกคนย้ายมาใช้ folder ใหม่ครบแล้วค่อยลบ
Cursor Prompt ไหนที่ใช้บ่อยทุกวัน?
Prompt (คำสั่ง) สำหรับ Cursor AI ที่ใช้ทุกวัน — copy ไปวางใน Cursor ได้เลย
// ดูว่าอยู่ branch อะไร + แก้ไฟล์อะไรไปบ้าง"ดูสถานะ git ให้หน่อย อยู่ branch อะไร แก้ไฟล์อะไรไปบ้าง"
// บันทึกงาน + ส่งขึ้น GitLab"commit งานที่แก้ไป แล้ว push ขึ้น GitLab branch feature/{{ชื่อตัวเอง}}"
// ดึง code ล่าสุดจาก develop มารวม"pull code ล่าสุดจาก develop มา merge กับ branch ปัจจุบัน"
// เปิด dev server"start dev server ให้หน่อย"
// ถ้ามี error"error นี้แก้ยังไง [paste error message]"
อยากพิมพ์ command เองก็ได้ — กดดู
git branch # ดูว่าอยู่ branch อะไร
git status # ดูว่าแก้ไฟล์อะไรไปบ้าง
git add . # เตรียมไฟล์
git commit -m "feat: เพิ่ม xxx" # บันทึก
git push origin feature/{{ชื่อตัวเอง}} # ส่งขึ้น GitLab
git pull origin develop # ดึง code ล่าสุด
npm run dev # เปิด dev server
รูปแบบ Commit Message
Path ของแต่ละคน — เปิด Cursor ชี้ไปที่นี่
| สมาชิก | Project-A | Project-B | Project-C |
|---|---|---|---|
| dev-a | /srv/projects/Project-A/dev-a/ | /srv/projects/Project-B/dev-a/ | /srv/projects/Project-C/dev-a/ |
| dev-b | /srv/projects/Project-A/dev-b/ | /srv/projects/Project-B/dev-b/ | /srv/projects/Project-C/dev-b/ |
| dev-c | /srv/projects/Project-A/dev-c/ | /srv/projects/Project-B/dev-c/ | /srv/projects/Project-C/dev-c/ |
| dev-d | /srv/projects/Project-A/dev-d/ | /srv/projects/Project-B/dev-d/ | /srv/projects/Project-C/dev-d/ |
| dev-e | /srv/projects/Project-A/dev-e/ | /srv/projects/Project-B/dev-e/ | /srv/projects/Project-C/dev-e/ |
เริ่มจากตรงนี้
เลิกใช้ ~/workspace/ชื่อตัวเอง/
→ ใช้ที่ใหม่ /srv/projects/<project>/<ชื่อตัวเอง>/
ตัวอย่าง: dev-a เปิด Cursor → /srv/projects/Project-B/dev-a/
ทุกอย่างเหมือนเดิม แค่เปลี่ยน folder ที่เปิด
ชอบบทความนี้ใช่ไหม?
สมัครสมาชิก Idea2Level เพื่อเข้าถึง Content, Template และ Community คุณภาพสูง
สมัครสมาชิกบทความที่เกี่ยวข้อง

Git Worktree — ทีมทำงาน Server เดียว ไม่ชนกัน
หลาย Project บน Server เดียว ทีมหลายคน clone แยก กิน Disk มหาศาล → ใช้ Bare Repo + Worktree แชร์ .git เดียว ประหยัด Disk ~80% + wt helper script ทีมสร้าง worktree ได้ใน 30 วินาที
สร้าง idea2logic.com ด้วย AI — เปิดโครงสร้าง 30+ หน้า 40+ API ทั้งระบบ
สร้าง idea2logic.com ทั้งระบบด้วย AI — 30+ หน้า, 40+ API, 14 database tables ค่า server ไม่ถึง 1,000 บาท/เดือน บทความนี้เปิดโครงสร้างทั้งหมดด้วย Interactive Diagram

สร้าง AI Chatbot 77 ฟีเจอร์ ใน 10 สัปดาห์ ได้ยังไง?
เปิดทุกอย่างเบื้องหลังการวางแผน Jigsaw Web Chat — AI chatbot platform สำหรับธุรกิจไทย 77 ฟีเจอร์ 4 Phases ทีม 8 คน ตั้งแต่ tech stack, pricing, team allocation ไม่มีซ่อน