GitXamarin

วิธีแก้ปัญหา เมื่อ Git ไม่ ignore!

เรื่องที่เกี่ยวข้อง -

หลังๆ มาในคอร์ส 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 จะเป็นไฟล์เล็กๆ ที่อยู่ในโฟลเดอร์โปรเจคของเรา ไม่ได้ซ้อนอยู่ในโฟลเดอร์ย่อยแต่อย่างใด

Git Ignore in Node Project Visual Studio code.png

วิธีการเขียนแจ้งไฟล์ และโฟลเดอร์ใน .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

Loading Facebook Comments ...

Leave a Reply

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

Fill out this field
Fill out this field
Please enter a valid email address.

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

Menu