สำหรับการใช้งาน Git จัดการกับ Source code ที่พัฒนาอยู่นั้น บางครั้งเราไม่อยากเก็บไฟล์บางไฟล์ลงไปใน Repository จริงอยู่ที่ว่า ก็ไม่ต้อง Add ไฟล์ลงไป แต่เราก็จะเห็นไฟล์เหล่านั้น อยู่ในสถานะ Untrack ตลอดเวลา
ไฟล์ .gitignore นั้น เราสามารถสร้างมันขึ้นมา และกำหนดเองได้ว่า ไฟล์ไหนบ้าง ที่ไม่อยากให้ Git มายุ่ง~!!
ผมจึงขอแนะนำให้รู้จักไฟล์ .gitignore กันสักหน่อย…
รูปต่อไปนี้ เป็นตัวอย่างที่ผมจำลองขึ้นมา เปิดด้วย Git GUI โดย 4 ไฟล์ที่อยู่ใน Unstaged Changes คือไฟล์ที่เราจะไม่เก็บลง Repository

จริงอยู่ที่เราสามารถกำหนดให้ Git GUI ไม่แสดงผลไฟล์ที่ Untrack ได้ โดยกำหนดที่เมนู Edit > Options…

แล้วสามารถติ๊กถูก ที่ช่อง Show untracked files ออกได้

ถึงแม้ Git GUI จะไม่แสดง Untrack ไฟล์แล้ว แต่หากใช้ Git Bash สั่ง git status ดู ก็ยังเห็นอยู่ดี

และหากมีการเพิ่มไฟล์ใหม่ และต้องการทำการ Track (หรือสั่ง git add) เพื่อเก็บลง Repository นั้น ก็ต้องมาติ๊กใน Git GUI ให้แสดงผลอีก ซึ่งมีความเสี่ยงต่อการ “ลืม” Track ไฟล์ ทำให้การ Commit ครั้งต่อไป ไม่ได้เก็บไฟล์ใหม่ลงไปด้วย
หลายคนคงเคยพลาดมาแล้ว~!!
ด้วยเหตุนี้ จึงไม่แนะนำให้ซ่อน Untrack file แต่จะทำยังไงล่ะ… ให้ Git ไม่ต้องมายุ่งกับไฟล์ที่เราไม่ต้องการ Track ไฟล์ .gitignore จึงได้เป็นพระเอกของงานนี้
วิธีใช้งาน เริ่มจากสร้างไฟล์ .gitignore (ไฟล์ไม่มีชื่อ แต่มีนามสกุลเป็น gitignore) ขึ้นมา ภายใน Working Directory ของเรา…
สร้างยัง..
สร้างยาง…….
สร้างย๊างงงงงงงง………….
อ่ะ… ใครที่สร้างไฟล์ .gitignore ไม่ได้ แสดงว่าใช้ Git บน Windows ล่ะซิ
เพราะ Microsoft Windows ไม่สามารถสร้างไฟล์หรือเปลี่ยนชื่อไฟล์จากไฟล์อื่น ให้เป็นไฟล์ที่ ไม่มีชื่อ ได้ จะต้องทำบน dos แต่ใช้ Git Bash ง่ายกว่า…
ก็แค่ใช้คำสั่งต่อไปนี้ บน Git Bash ก็จะได้ไฟล์ .gitignore มาแล้ววววววว
1 |
touch .gitignore |
ก็จะเห็นไฟล์ .gitignore เพิ่มเข้ามาแล้ว

ต่อไปก็ใช้ Text Editor ตัวไหนก็ได้ ไปกำหนดไฟล์ที่จะ Ignore ไว้ในไฟล์ .gitignore ทำการเซฟให้เรียบร้อย
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# ignore "no keep *.txt" in all directory no keep *.txt # ignore "no keep *.txt" in root directory /no keep *.txt # ignore "no keep *.txt" in directory "keep/no keep" in root directory /keep/no keep/no keep *.txt # ignore "all" file in directory "no keep" in root directory /no keep/ |
- บรรทัดที่มี # นำหน้า คือการใส่ Comment ทำให้ไม่มีผลใด ๆ
- บรรทัดที่ 2 เป็นการกำหนดให้ทุกไฟล์ที่มีชื่อขึ้นต้นว่า “no keep “ และมีนามสกุลเป็น “.txt” ซึ่งอยู่ใน Directory ไหนก็ได้ จากตัวอย่าง จะมีผลกับไฟล์ใน Unstaged Changes ทุกไฟล์
- บรรทัดที่ 5 เป็นการกำหนดให้ทุกไฟล์ที่มีชื่อขึ้นต้นว่า “no keep “ และมีนามสกุลเป็น “.txt” ซึ่งอยู่ใน Directory ชั้นนอกสุดเท่านั้น จากตัวอย่าง จะมีผลกับไฟล์ใน Unstaged Changes เฉพาะ (1) และ (2)
- บรรทัดที่ 8 เป็นการกำหนดให้ทุกไฟล์ที่มีชื่อขึ้นต้นว่า “no keep “ และมีนามสกุลเป็น “.txt” ซึ่งอยู่ใน Directory /keep/no keep เท่านั้น จากตัวอย่าง จะมีผลกับไฟล์ใน Unstaged Changes เฉพาะ (3)
- บรรทัดที่ 11 เป็นการกำหนดให้ทุกไฟล์ที่อยู่ใน Directory /no keep ทั้งหมด จากตัวอย่าง จะมีผลกับไฟล์ใน Unstaged Changes เฉพาะ (4)

เท่านี้เราก็สามารถกำหนดให้ Git ไม่ต้องยุ่งกับไฟล์ที่เราไม่ต้องการได้แล้ว
สำหรับไฟล์ .gitignore ไม่จำเป็นต้องอยู่ชั้นนอกสุดของ Working Directory แต่การอ้างถึงไฟล์ต่าง ๆ ภายในไฟล์ .gitignore ก็จะขึ้นกับที่อยู่ของ .gitignore ด้วย
และเราสามารถ ignore ไฟล์ .gitignore ได้ด้วย โดยการเพิ่มชื่อไฟล์ .gitignore ลงในไฟล์ .gitignore
ไม่งงใช่ไม๊~!!
แต่ผมแนะนำว่า Commit ไฟล์ .gitignore ไปด้วยเลยดีกว่า…
นอกจากนี้ เรายังสามารถกำหนดใน .gitignore ด้วยคำสั่ง หรือเงื่อนไขแปลก ๆ ได้อีกมากมาย เช่นการใช้เครื่องหมาย ! เพื่อกำหนดไฟล์ที่จะไม่ ignore โดยผลการทำงาน จะเรียงตามบรรทัดบนลงล่าง สามารถศึกษาเพิ่มเติมได้จาก Documentation ครับ