• ติดตามบน
.gitignore คืออะไร? ทำไมโปรแกรมเมอร์ต้องรู้

.gitignore คืออะไร? ทำไมโปรแกรมเมอร์ต้องรู้

Chalothorn Kosakul 05-02-2026 28

คุณเคยเจอปัญหาเหล่านี้ไหม?

  • Push โค้ดขึ้น GitHub แล้วติดโฟลเดอร์ node_modules ที่มีไฟล์เป็นหมื่นๆ ขึ้นไปด้วย
  • เผลออัปโหลดไฟล์ .env ที่มีรหัสผ่าน Database จนต้องรีบแก้แทบไม่ทัน
  • เพื่อนร่วมทีมบ่นว่าไฟล์ Config ของเครื่องเรา ไปกวนการทำงานของเครื่องเขา

ถ้าคำตอบคือ "เคย" บทความนี้คือคำตอบสำหรับคุณครับ เพราะพระเอกที่จะมาแก้ปัญหานี้คือไฟล์เล็กๆ ที่ชื่อว่า .gitignore


.gitignore คืออะไร?

.gitignore คือ Text file ธรรมดาๆ ไฟล์หนึ่งที่วางอยู่ในโปรเจกต์ของเรา หน้าที่ของมันเปรียบเสมือน "ยาม" ที่คอยบอก Git ว่า "เฮ้ย! ไฟล์พวกนี้ไม่ต้องสนใจนะ ไม่ต้อง Track การเปลี่ยนแปลง และไม่ต้อง Commit ขึ้นไปบน Server"

ทำไมเราต้อง Ignore บางไฟล์?

เราไม่ได้ต้องการเก็บทุกไฟล์ไว้ใน Git เสมอไป เหตุผลหลักๆ มี 3 ข้อคือ:

  1. ความปลอดภัย (Security): ไฟล์ที่มีข้อมูลความลับ เช่น API Key, Password หรือ Database URL (เช่นไฟล์ .env) ห้ามหลุดออกไปสู่สาธารณะเด็ดขาด
  2. ความสะอาด (Cleanliness): ไฟล์ที่ถูกสร้างขึ้นโดยอัตโนมัติ (Generated files) เช่น node_modules, โฟลเดอร์ dist หรือ build ไฟล์เหล่านี้เราสามารถสร้างใหม่ได้เสมอจากการรันคำสั่ง จึงไม่จำเป็นต้องเก็บไว้ให้รก
  3. ไฟล์เฉพาะเครื่อง (System Files): ไฟล์ขยะของระบบปฏิบัติการ เช่น .DS_Store (ของ Mac) หรือ Thumbs.db (ของ Windows) ที่ไม่มีประโยชน์กับคนอื่นในทีม

กฎการเขียน .gitignore (Syntax)

การเขียน .gitignore นั้นง่ายมาก แค่ระบุชื่อไฟล์หรือโฟลเดอร์ที่ต้องการซ่อน แต่ก็มีลูกเล่นนิดหน่อยที่ควรรู้:

1. ซ่อนเฉพาะไฟล์

ระบุชื่อไฟล์ลงไปตรงๆ

secrets.txt
config.json

2. ซ่อนทั้งโฟลเดอร์

ใส่ / ปิดท้ายชื่อโฟลเดอร์

node_modules/
dist/
build/

3. ใช้ Wildcard (*)

ใช้เครื่องหมายดอกจัน * เพื่อเหมารวมไฟล์ที่มีนามสกุลเหมือนกัน

*.log       # ซ่อนทุกไฟล์ที่ลงท้ายด้วย .log
*.zip       # ซ่อนไฟล์ zip ทั้งหมด

4. ยกเว้นบางไฟล์ (!)

ถ้าเราสั่งซ่อนทั้งหมด แต่ "ยกเว้น" ไฟล์เดียว ให้ใช้เครื่องหมายตกใจ ! นำหน้า

*.log       # ซ่อนไฟล์ .log ทั้งหมด
!debug.log  # แต่ไม่ซ่อน debug.log นะ (เก็บตัวนี้ไว้)

5. การใส่ Comment (#)

ใช้เครื่องหมายชาร์ป # เพื่อเขียนคำอธิบาย (Git จะไม่อ่านบรรทัดนี้)

# Dependencies
node_modules/

# Environment Variables
.env

ตัวอย่าง .gitignore ยอดฮิต

นี่คือตัวอย่างไฟล์ .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 แล้ว แต่ Git ก็ยัง Track อยู่!

นี่คือปัญหาที่มือใหม่ (และมือเก๋า) เจอบ่อยที่สุด:

"เขียนกฎใน .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

วิธีใช้:

  1. เข้าไปที่เว็บ
  2. พิมพ์ keyword ของสิ่งที่คุณใช้ เช่น Node, Windows, macOS, VSCode
  3. กด Create
  4. Copy โค้ดทั้งหมดมาแปะในไฟล์ .gitignore ของคุณ จบปิ๊ง!

สรุป

.gitignore เป็นเรื่องเล็กๆ ที่สร้างผลกระทบที่ยิ่งใหญ่ต่อโปรเจกต์ การจัดการ .gitignore ที่ดีจะช่วยให้ Repository ของคุณสะอาด ปลอดภัย และทำงานร่วมกับคนอื่นได้อย่างราบรื่น


แชร์บทความนี้