Skip to main content

Askboon

เรื่องยุ่งๆของ Gitignore

gitignore เป็นไฟล์ที่ใช้เป็นตัวกำหนดว่า จะยกเว้นไม่ให้ git ทำการ track ไฟล์อะไรในโฟวเดอร์ของเราบ้าง การบริหารจัดการรายชื่อไฟล์ใน gitignore จึงเป็นเรื่องที่จะช่วยให้เราทำงานได้มีประสิทธิภาพมากขึ้น

Gitignore

ไฟล์ Gitignore จะเป็นชื่อไฟล์ที่นำหน้าด้วยเครื่องหมายจุด (”.") ซึ่งจะเป็นไฟล์ที่ถูกซ่อนไว้มองไม่เห็นในการใช้งานปกติ

ตัวอย่างการใช้งาน

การยกเว้นการ track

1
2
3
themes/*
themes/
themes

ตัวอย่างทั้ง 3 แบบด้านบนเป็นการยกเว้นการ track ทั้งโฟวเดอร์ ใช้ได้เหมือนกันหมด เลือกใช้แบบเดียว

ส่วนการยกเว้นการ track ไฟล์ก็ใส่ชื่อไฟล์เข้าไปตรงๆ ดังนี้ครับ

1
*.dll

การยกเว้น “การยกเว้น”

อ่านแล้วอย่าเพิ่งงงนะครับ อันนี้จะหมายถึงว่า หากใน gitignore เราทำการยกเว้นไฟล์อะไรไว้ แต่ยังอยากให้ทำการ track บางไฟล์อยู่ ก็ให้ใช้เครื่องหมาย “!” กำหนดได้ว่าจะยังคงให้ track ไฟล์อะไร ตัวอย่างเช่น

1
2
*.dll
!myfile.dll

เป็นการบอก git ว่าให้ยกเว้นการ track *.dll แต่ยังให้คง track ไฟล์ที่ชื่อ myfile.dll อยู่

ส่วนการยกเว้นการ ignore แบบโฟวเดอร์ ใช้รูปแบบด้านล่างนี้ครับ

1
2
MyFolder/*
!MyFolder/MyFile.txt

มีข้อพึงระวังว่า การยกเว้นการ ignore ไฟล์ในโฟว์เดอร์ การที่จะระบุโฟวเดอร์ที่ ignore ต้องใช้รูปแบบ MyFolder/* เท่านั้น ไม่สามารถใช้ MyFolder หรือ MyFolder/ เฉยๆได้

ปัญหาในการใช้งาน

หากบางครั้ง gitignore เองไม่สนใจการแก้ไขรายการในไฟล์ .gitignore แสดงว่าอาจเกิดปัญหากับ cache ของ git ให้ทำการ commit change ล่าสุดก่อน แล้วค่อยใช้คำสั่งด้านล่างนี้

1
2
3
git rm -r --cached .
git add .
git commit -m "fixed untracked files"