หลังๆ มาในคอร์ส MEAN Stack 2017 รวมถึงคอร์สสร้างโมบายล์แอพพลิเคชั่น อย่าง Ionic และ Xamarin มักมีคนถามเรื่องการใช้ Git โดยเฉพาะเรื่องไฟล์ gitignore ที่เพิ่มเข้ามาในโปรเจคทีหลัง แบบว่าเพิ่งนึกได้ แล้วไฟล์มันไม่ ignore ให้
เลยขอมาเล่าวิธีแก้ปัญหาไว้ที่นี่ เผื่อเป็นประโยชน์ และกันพลลืม ฮ่าๆ
Git ignore เบื้องต้น
สำหรับคนที่เพิ่งเริ่มใช้ Git ในโปรเจคใหม่ๆ Git Ignore ควรเป็นสิ่งที่ทำความเข้าใจไว้ เพราะมันจะทำให้โปรเจคที่เราเก็บและทำงานมีขนาดเล็กลง โดยตัดไฟล์ที่ไม่จำเป็นออกจาก Repository
ในหลายๆ ครั้ง โปรเจคที่เรากำลังพัฒนาอยู่จะมีไฟล์ที่ใช้แค่อ้างอิงในการทำงาน เช่น
- โฟลเดอร์ node_modules ใน Node.js และ MEAN Stack
- โฟลเดอร์ obj และ bin ใน Xamarin (ได้จากการ Build โปรเจค)
ซึ่งไฟล์ และโฟลเดอร์พวกนี้ไม่จำเป็นต้องทำการ track การทำงาน หรือเอาขึ้นไปเก็บไว้ที่ Repository ของเรา Git Ignore เลยเข้ามามีบทบาทตรงนี้
ไฟล์ Git Ignore หรือ .gitignore จะเป็นไฟล์เล็กๆ ที่อยู่ในโฟลเดอร์โปรเจคของเรา ไม่ได้ซ้อนอยู่ในโฟลเดอร์ย่อยแต่อย่างใด
วิธีการเขียนแจ้งไฟล์ และโฟลเดอร์ใน .gitignore ก็จะคล้ายๆ กับการเขียน Regular Expression เช่นในที่นี้เป็นส่วนที่พลใช้กับโปรเจค Angular 2 และ MEAN Stack
app//*.js
app//*.map
bower_components
aot/*
dist/*
yarn.lock
logs
.log
npm-debug.log
build/Release
node_modules
jspm_packages
.npm
วิธีแก้ไข Git ไม่ ignore
ปัญหาเริ่มขึ้นในกรณีที่เราทำงานกับโปรเจคมาได้ระยะหนึ่งแล้ว ลืมไปว่าต้องเว้นไฟล์ขยะบางอย่าง แต่เราดัน commit ขึ้น Repository ไปแล้ว พอใส่ .gitignore มันก็ยังอ่านไฟล์ที่ไม่ต้องการเข้าไปอีก
มีวิธีแก้ครับ โดยการเคลียร์ไฟล์ออกจาก Repository ในเครื่องเรา และสั่ง commit ใหม่ ด้วยการสั่งคำสั่งต่อไปนี้จาก Terminal ของโฟลเดอร์โปรเจคที่ติดปัญหาของเรา
git rm -rf --cached .
git add .
แต่วิธีนี้มีข้อควรระวังคือ ให้ทำการ commit ไฟล์ทั้งหมดให้เรียบร้อยก่อนที่จะรันคำสั่งนะครับ ไม่งั้นการเปลี่ยนแปลงที่ไม่ได้ commit ไว้ทั้งหมดจะอัตรธานหายไปแน่นอน
หวังว่าจะช่วยแก้ปัญหาให้พวกเราได้
อ้างอิง – StackOverflow