คุณเคยเจอปัญหาเหล่านี้ไหม?
node_modules ที่มีไฟล์เป็นหมื่นๆ ขึ้นไปด้วย.env ที่มีรหัสผ่าน Database จนต้องรีบแก้แทบไม่ทันถ้าคำตอบคือ "เคย" บทความนี้คือคำตอบสำหรับคุณครับ เพราะพระเอกที่จะมาแก้ปัญหานี้คือไฟล์เล็กๆ ที่ชื่อว่า .gitignore
.gitignore คือ Text file ธรรมดาๆ ไฟล์หนึ่งที่วางอยู่ในโปรเจกต์ของเรา หน้าที่ของมันเปรียบเสมือน "ยาม" ที่คอยบอก Git ว่า "เฮ้ย! ไฟล์พวกนี้ไม่ต้องสนใจนะ ไม่ต้อง Track การเปลี่ยนแปลง และไม่ต้อง Commit ขึ้นไปบน Server"
เราไม่ได้ต้องการเก็บทุกไฟล์ไว้ใน Git เสมอไป เหตุผลหลักๆ มี 3 ข้อคือ:
.env) ห้ามหลุดออกไปสู่สาธารณะเด็ดขาดnode_modules, โฟลเดอร์ dist หรือ build ไฟล์เหล่านี้เราสามารถสร้างใหม่ได้เสมอจากการรันคำสั่ง จึงไม่จำเป็นต้องเก็บไว้ให้รก.DS_Store (ของ Mac) หรือ Thumbs.db (ของ Windows) ที่ไม่มีประโยชน์กับคนอื่นในทีมการเขียน .gitignore นั้นง่ายมาก แค่ระบุชื่อไฟล์หรือโฟลเดอร์ที่ต้องการซ่อน แต่ก็มีลูกเล่นนิดหน่อยที่ควรรู้:
ระบุชื่อไฟล์ลงไปตรงๆ
secrets.txt
config.jsonใส่ / ปิดท้ายชื่อโฟลเดอร์
node_modules/
dist/
build/ใช้เครื่องหมายดอกจัน * เพื่อเหมารวมไฟล์ที่มีนามสกุลเหมือนกัน
*.log # ซ่อนทุกไฟล์ที่ลงท้ายด้วย .log
*.zip # ซ่อนไฟล์ zip ทั้งหมดถ้าเราสั่งซ่อนทั้งหมด แต่ "ยกเว้น" ไฟล์เดียว ให้ใช้เครื่องหมายตกใจ ! นำหน้า
*.log # ซ่อนไฟล์ .log ทั้งหมด
!debug.log # แต่ไม่ซ่อน debug.log นะ (เก็บตัวนี้ไว้)ใช้เครื่องหมายชาร์ป # เพื่อเขียนคำอธิบาย (Git จะไม่อ่านบรรทัดนี้)
# Dependencies
node_modules/
# Environment Variables
.envนี่คือตัวอย่างไฟล์ .gitignore พื้นฐานสำหรับโปรเจกต์ทั่วไป:
# ระบบปฏิบัติการ (System Files)
.DS_Store
Thumbs.db
# Logs
logs
*.log
npm-debug.log*
# Runtime data
pids
*.pid
*.seed
# Dependencies (สำคัญมาก!)
node_modules/
jspm_packages/
# Build / Dist output
dist/
build/
# Environment Variables (ห้ามลืม!)
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# IDE Settings (VS Code, JetBrains)
.vscode/
.idea/นี่คือปัญหาที่มือใหม่ (และมือเก๋า) เจอบ่อยที่สุด:
"เขียนกฎใน .gitignore แล้วนะ แต่ทำไมไฟล์นั้นยังถูก Commit ขึ้นไปอยู่ดี?"
สาเหตุ: เพราะ Git ได้ทำการ Track ไฟล์นั้นไป ก่อน ที่คุณจะเขียนกฎใน .gitignore ครับ พอมันรู้จักไฟล์นั้นไปแล้ว มันจะไม่สนใจกฎ ignore อีกต่อไป
วิธีแก้: คุณต้องลบไฟล์นั้นออกจาก "Cache" ของ Git ก่อน ด้วยคำสั่งนี้:
1. เพิ่มกฎในไฟล์ .gitignore ให้เรียบร้อย
2. รันคำสั่งใน Terminal:
git rm -r --cached .(คำสั่งนี้ไม่ได้ลบไฟล์งานของคุณจริงๆ แต่เป็นการลบออกจากความทรงจำของ Git)
3. จากนั้นให้ Add และ Commit ใหม่ทั้งหมด:
git add .
git commit -m "Fix: update .gitignore and remove cached files"คุณไม่จำเป็นต้องจำกฎทั้งหมดเอง มีเว็บไซต์ที่ช่วยสร้างไฟล์ .gitignore ให้คุณแบบอัตโนมัติตามภาษาหรือ Framework ที่คุณใช้
แนะนำเว็บ: gitignore.io
วิธีใช้:
Node, Windows, macOS, VSCode.gitignore ของคุณ จบปิ๊ง!.gitignore เป็นเรื่องเล็กๆ ที่สร้างผลกระทบที่ยิ่งใหญ่ต่อโปรเจกต์ การจัดการ .gitignore ที่ดีจะช่วยให้ Repository ของคุณสะอาด ปลอดภัย และทำงานร่วมกับคนอื่นได้อย่างราบรื่น