.gitignore ความสามารถของ git และการใช้งานอย่างง่าย

Wasith T. (Bai-Phai)
odds.team
Published in
2 min readJul 24, 2017

ถ้าใครยังไม่รู้ว่า Git คืออะไรสามารถอ่านได้ที่ Blognone

ปกติแล้วเราจะไม่บันทึกทุกอย่างลง version control เช่น

  • ไฟล์ของระบบปฏิบัติการ
  • ไฟล์ที่ build จาก source code
  • dependencies ที่ดาวโหลดมา
  • ไฟล์ config ของ IDE: Integrated development environment
  • properties file หรือ config file ของ production server

ไฟล์เหล่านี้เป็นสิ่งที่ไม่จำเป็นใน version control เนื่องจากสามารถ generate ได้, ดาวโหลดได้, เป็นของใช้ส่วนบุคคล หรือมีข้อมูลลับที่สำคัญ เราจึงจะทำการเขียนกฎเพื่อ ignore ไฟล์เหล่านี้เอาไว้ จะไม่ได้ไม่เผลอใส่ไฟล์พวกนี้เข้าไปใน version control

จะทำประหยัดพื้นที่ในการจัดเก็บ และยังคงรักษาความลับไว้ได้ เช่น ip, username, password, port ของ database เป็นต้น

ถ้าอยากทำผมขอแนะนำวิธีที่ง่ายที่สุด ให้เข้าไปที่เว็บไซต์ gitignore.io แล้วกรอกในช่องตรงกลางเช่น ระบบปฏิบัติการที่ใช้ เครื่องมือที่ใช้ ภาษาโปรแกรมที่ใช้ เมื่อกรอกครบตามที่ต้องการแล้วให้กด “Create”

gitignore.io’s Home Page

เมื่อผมลองกรอก osx, java, macos, linux, windows, intellij แล้วกด “Create” มันก็จะพาไปที่ https://www.gitignore.io/api/osx%2Cjava%2Cmacos%2Clinux%2Cwindows%2Cintellij พร้อมกับ text ที่ generate ขึ้นประมาณรูปด้านล่าง

ให้คัดลอกข้อความนี้ไปใส่ไว้ใน text file ที่ชื่อ “.gitignore” ใน directory หรือ folder ของ project ที่อยู่ใต้ git เท่านี้คุณจะได้ชุดของไฟล์ที่จะถูก ignore

ถ้าไฟล์นั้นยังไม่เคยถูก track เลย แล้วเพิ่ม .gitignore เข้าไป จะทำให้ git ไม่สนใจไฟล์นั้น ๆ ทันที

ก่อนมี .gitignore จะเห็น directory build/ และ out/

เพิ่มไฟล์ “.gitignore”

text ในไฟล์ .gitignore ไม่สนใจ 3 directories คือ bin, out, build
พอสร้างเสร็จจะแล้วพิมพ์​ git status อีกครั้งจะเห็นว่ามัน folder มันหายไปแล้ว
ทั้งที่ถ้าพิมพ์ ls -alh ก็ยังอยู่

ซึ่งคุณสามารถเขียนกฎได้เองด้วยเหมือนกัน (อ่านเพิ่ม https://git-scm.com/docs/gitignore)

ทั้งนี้สามารถใช้บริการของ gitignore.io ผ่านทางช่องทางอื่นได้ เช่น command line ดูเพิ่มเติมในเว็บไวต์

แถม

** ไฟล์ที่เคยถูก commit แล้วจะยังไม่ถูกลบออกไปหลังจากเพิ่มกฎเข้าไปใน .gitginore ต้องลบไฟล์เหล่านั้นเองด้วยคำสั่ง

$ git rm --cached ชื่อไฟล์

** ถ้าต้องการบังคับใช้กฎทุกที่ในเครื่องคุณที่ใช้ Git โดยการเอากฎที่ต้องการไปใส่ไว้ที่ text ไฟล์ที่ชื่อ .gitignore_global ที่ directory home ของคุณ

~/.gitignore_global

** ปกติแล้วไฟล์ .gitignore สามารถ commit เข้าไปเพื่อบังคับใช้กฎการ ignore ใน repository นั้น ๆ ได้ แต่ถ้าต้องการบังคับใช้กฎเฉพาะ repository แต่ไม่อยากแชร์กฎที่เขียนไว้ สามารถเอากฎไปใส่ไว้ใน text file ที่ .git/info/exculde ที่อยู่ภายใน repository นั้น ๆ ของคุณได้

--

--

Wasith T. (Bai-Phai)
odds.team

ตบมือเป็นกำลังใจให้ผมด้วยนะครับ 😘