[Dev] Git ไม่ต้องมายุ่งน่า~!! มาทำความรู้จักกับไฟล์ .gitignore กันหน่อย

สำหรับการใช้งาน Git จัดการกับ Source code ที่พัฒนาอยู่นั้น บางครั้งเราไม่อยากเก็บไฟล์บางไฟล์ลงไปใน Repository จริงอยู่ที่ว่า ก็ไม่ต้อง Add ไฟล์ลงไป แต่เราก็จะเห็นไฟล์เหล่านั้น อยู่ในสถานะ Untrack ตลอดเวลา

Git-Logo-2Color

ไฟล์ .gitignore นั้น เราสามารถสร้างมันขึ้นมา และกำหนดเองได้ว่า ไฟล์ไหนบ้าง ที่ไม่อยากให้ Git มายุ่ง~!!

ผมจึงขอแนะนำให้รู้จักไฟล์ .gitignore กันสักหน่อย…

รูปต่อไปนี้ เป็นตัวอย่างที่ผมจำลองขึ้นมา เปิดด้วย Git GUI โดย 4 ไฟล์ที่อยู่ใน Unstaged Changes คือไฟล์ที่เราจะไม่เก็บลง Repository

Git GUI แสดงไฟล์ที่ Track และ Untrack
Git GUI แสดงไฟล์ที่ Track และ Untrack

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

Git GUI เมนู Edit
Git GUI เมนู Edit

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

Option สำหรับเลือกแสดง/ซ่อน Untrack file
Option สำหรับเลือกแสดง/ซ่อน Untrack file

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

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

และหากมีการเพิ่มไฟล์ใหม่ และต้องการทำการ 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 มาแล้ววววววว

ก็จะเห็นไฟล์ .gitignore เพิ่มเข้ามาแล้ว

ใช้ Git Bash สร้างไฟล์ .gitignore
ใช้ Git Bash สร้างไฟล์ .gitignore

ต่อไปก็ใช้ Text Editor ตัวไหนก็ได้ ไปกำหนดไฟล์ที่จะ Ignore ไว้ในไฟล์ .gitignore ทำการเซฟให้เรียบร้อย

  • บรรทัดที่มี # นำหน้า คือการใส่ 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 GUI และ Git Bash แสดงผลเมื่อใช้งาน .gitignore
Git GUI และ Git Bash แสดงผลเมื่อใช้งาน .gitignore

เท่านี้เราก็สามารถกำหนดให้ Git ไม่ต้องยุ่งกับไฟล์ที่เราไม่ต้องการได้แล้ว

สำหรับไฟล์ .gitignore ไม่จำเป็นต้องอยู่ชั้นนอกสุดของ Working Directory แต่การอ้างถึงไฟล์ต่าง ๆ ภายในไฟล์ .gitignore ก็จะขึ้นกับที่อยู่ของ .gitignore ด้วย

และเราสามารถ ignore ไฟล์ .gitignore ได้ด้วย โดยการเพิ่มชื่อไฟล์ .gitignore ลงในไฟล์ .gitignore

ไม่งงใช่ไม๊~!!

แต่ผมแนะนำว่า Commit ไฟล์ .gitignore ไปด้วยเลยดีกว่า…

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

Leave a Reply

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.