GitHub ได้กลายเป็นผู้บุกเบิกชั้นนำในด้านการทำงานร่วมกันของรหัสและการแบ่งปันพื้นที่เก็บข้อมูล GitHub เป็นซอฟต์แวร์ควบคุมเวอร์ชันเป็นหลัก ซึ่งอนุญาตให้ผู้ใช้ควบคุมการควบคุมเวอร์ชันแบบกระจายและ SCM (การจัดการซอร์สโค้ด) แพลตฟอร์มนี้ใช้โดยธุรกิจและบริษัทขนาดใหญ่ทั่วโลก
แพลตฟอร์มเช่นนี้มีเทคนิคและปัญหา ปัญหาเฉพาะอย่างหนึ่งที่ผู้เขียนโค้ดพบคือ .gitignore ไม่ทำงานใน GitHub แพลตฟอร์มไม่สนใจ .gitignore หรือทำงานเพียงบางส่วน เป็นที่น่าสนใจที่จะทราบว่าปัญหาอาจแตกต่างกันเล็กน้อยในแต่ละกรณีเนื่องจากแต่ละกรณีเป็นสถานการณ์ที่แตกต่างกันโดยสิ้นเชิง อย่างไรก็ตาม โซลูชันที่เราแสดงรายการจะมีการแก้ไขซึ่งจะใช้ได้ในระดับสากล
.gitignore คืออะไร
Git (หรือ GitHub) ดูทุกไฟล์ในไดเร็กทอรีการทำงานของคุณ มันกำหนดลักษณะแต่ละไฟล์เป็นหนึ่งในสาม:
- ติดตาม: ไฟล์เหล่านี้มีการคอมมิตหรือจัดฉากก่อนหน้านี้ในประวัติศาสตร์
- ไม่ถูกติดตาม: ไฟล์เหล่านี้ยังไม่เคยถูกจัดฉากหรือคอมมิตมาก่อน
- ละเว้น: ไฟล์เหล่านี้เป็นไฟล์ที่ผู้ใช้บอก Git ให้เพิกเฉยโดยสิ้นเชิง
ไฟล์ที่ถูกละเว้นเหล่านี้อาจแตกต่างกันไปตามสถานการณ์ และส่วนใหญ่เป็นไฟล์ที่สร้างโดยเครื่องหรือสร้างสิ่งประดิษฐ์ นี่เป็นวิธีปฏิบัติทั่วไป คุณอาจละเลยไฟล์อื่น ๆ ตามความต้องการของคุณเอง ตัวอย่างของไฟล์เหล่านี้ได้แก่:
- โค้ดที่คอมไพล์แล้ว: ไฟล์เหล่านี้มักจะมีนามสกุล .class, .pyc, .ccp เป็นต้น
- ไฟล์ระบบที่ซ่อนอยู่: ไฟล์เหล่านี้เป็นไฟล์ที่ระบบใช้ในการดำเนินการ แต่ถูกซ่อนจากมุมมองธรรมดา เช่น DS_Store หรือ Thumbs.db เป็นต้น
- สร้างไดเร็กทอรีเอาต์พุต: ส่วนใหญ่เป็นไดเร็กทอรีของ /bin, /out ฯลฯ
- แคชการพึ่งพา: ไฟล์เหล่านี้อาจเป็นเนื้อหาของโมดูล /node หรือ /packages
- ไฟล์การกำหนดค่า IDE: ไฟล์เหล่านี้เป็นไฟล์กำหนดค่าซึ่งส่วนใหญ่สร้างหรือจัดการโดยซอฟต์แวร์ IDE ของคุณ
- ไฟล์ที่สร้างขึ้นขณะรันไทม์: มีบางโปรแกรมที่สร้างไฟล์ในขณะใช้งาน หากมีการเรียกใช้รหัสดังกล่าว ไฟล์บางไฟล์อาจถูกสร้างขึ้นในขณะใช้งานในโฟลเดอร์การทำงานของคุณ และคุณอาจละเว้นใน Git
ไฟล์ใดก็ตามที่คุณต้องการละเว้นจะถูกติดตามในไฟล์พิเศษชื่อ .gitignore ซึ่งส่วนใหญ่จะถูกตรวจสอบในรูทของที่เก็บที่ทำงานของคุณ ตามเอกสารอย่างเป็นทางการของ GitHub ในเรื่องนั้น ไม่มีคำสั่ง gitignore ที่เฉพาะเจาะจง คุณต้องแก้ไขไฟล์ที่คุณต้องการละเว้นด้วยตนเอง ไฟล์ .gitignore มีรูปแบบที่ตรงกับชื่อไฟล์ในที่เก็บที่ทำงานของคุณ และสิ่งเหล่านี้ถูกใช้เพื่อช่วยพิจารณาว่าไฟล์ใดไฟล์หนึ่งควรถูกละเว้นหรือไม่
อะไรทำให้ .gitignore ไม่ทำงาน
ฟีเจอร์ .gitignore อาจทำงานได้อย่างสมบูรณ์ แต่คุณอาจกำหนดค่าไว้ไม่ถูกต้อง ในแบบสำรวจทั้งหมดของเรา เราได้ข้อสรุปว่าโมดูลนี้ใช้งานได้จริง สาเหตุที่ผู้เขียนโค้ดไม่สามารถใช้คุณลักษณะนี้ได้เป็นส่วนใหญ่เนื่องจากไม่ได้กำหนดค่าไฟล์อย่างถูกต้องหรือมีเงื่อนไขบางอย่างที่ไม่เป็นไปตามโค้ดพื้นฐาน
นี่คือวิธีแก้ปัญหาบางอย่างที่อาจได้ผลสำหรับคุณ วิธีแก้ปัญหาแต่ละวิธีอาจไม่สามารถใช้ได้ในกรณีของคุณ ดังนั้นตรวจสอบให้แน่ใจว่าคุณเปลี่ยนไปใช้วิธีถัดไปหากไม่ตรงตามเงื่อนไขเริ่มต้น
โซลูชันที่ 1:การตรวจสอบไฟล์ .gitignore
กรณีที่น่าสนใจเกิดขึ้นเมื่อเราเห็นว่าไฟล์ .gitignore ถูกสร้างขึ้นในรูปแบบที่ไม่ถูกต้อง ปัญหานี้เกิดขึ้นเมื่อผู้ใช้สร้างไฟล์โดยใช้แอปพลิเคชันเริ่มต้นของ Notepad ใน Windows OS ปรากฎว่า Notepad เขียนไฟล์ใน Unicode แทนรูปแบบ ANSI ในวิธีแก้ปัญหานี้ เราจะบันทึกการเปลี่ยนแปลงของ Notepad ในรูปแบบที่ถูกต้องของ .gitignore และดูว่าวิธีนี้ช่วยแก้ปัญหาได้หรือไม่
หมายเหตุ: คุณต้องลบนามสกุล .txt ออกจากไฟล์เมื่อคุณสร้างไฟล์ใหม่โดยใช้ Notepad
- หลังจากเขียนโค้ดหรือเปลี่ยนแปลงในเอกสารข้อความใหม่ใน Notepad แล้ว ให้คลิกที่ ไฟล์ และเลือก บันทึกเป็น .
- อยู่หน้า การเข้ารหัส , เลือก ANSI . ตอนนี้ให้ลบนามสกุลไฟล์ .txt และบันทึกไฟล์ด้วยชื่อ '.gitignore ’ เลือกไดเร็กทอรีที่ถูกต้องและบันทึก
- ไปที่ไดเร็กทอรีและตรวจสอบว่าไฟล์ถูกสร้างหรือไม่ ตอนนี้ให้ทดสอบอีกครั้งด้วย Git และดูว่าคุณลักษณะละเว้นทำงานตามที่คาดไว้หรือไม่
นักพัฒนาซอฟต์แวร์ควรละเว้นจากการใช้ Notepad เริ่มต้นใน Windows คุณควรใช้แผ่นจดบันทึก 'โปรแกรมเมอร์' ที่เหมาะสมแทน ตัวอย่างบางส่วน ได้แก่ Notepad++ เป็นต้น ซึ่งคุณจะไม่มีปัญหาเช่นนี้
หมายเหตุ: หากไฟล์ของคุณได้รับการบันทึกในรูปแบบ UNICODE แล้ว คุณควรบันทึกเนื้อหาในรูปแบบ ANSI อย่างถูกต้อง หากคุณต้องการให้ Git ตรวจพบไฟล์ของคุณอย่างเหมาะสม
แนวทางที่ 2:การตรวจสอบไฟล์ที่คุณพยายามเพิกเฉย
อีกเงื่อนไขหนึ่งที่ .gitignore ใช้งานได้คือไฟล์ของคุณไม่ควร เป็นส่วนหนึ่งของที่เก็บ . นี่เป็นส่วนสำคัญอย่างยิ่ง ราวกับว่าสิ่งนี้เป็นความจริง ไฟล์จะไม่ถูกละเลยเนื่องจาก เพิ่มแล้ว ไปยังที่เก็บ Git ไม่สามารถละเลยสิ่งนั้นได้ แม้ว่าคุณจะใส่ชื่อหรือกฎของมันในไฟล์ .gitignore โดยพื้นฐานแล้ว Git จะไม่สนใจเฉพาะ ไฟล์ที่ไม่ได้ติดตาม .
คุณควรดูที่โครงสร้างของคุณ (ที่เก็บ) และตรวจสอบให้แน่ใจว่าไฟล์ที่คุณกำลังพยายามเพิกเฉยไม่ได้ถูกเพิ่มไปยังที่เก็บ หากใช่ คุณจะต้องลบไฟล์ออกจากที่เก็บและหลังจากการเปลี่ยนแปลงล่าสุดแล้ว ให้เพิ่มชื่อไฟล์ใน .gitignore (คุณยังสามารถคัดลอกเนื้อหาของไฟล์และหลังจากลบแล้ว ให้ทำซ้ำโดยใช้ชื่ออื่น) .
โซลูชันที่ 3:การเพิ่มไฟล์ไปยังที่เก็บอีกครั้ง
หากคุณได้เพิ่มกฎลงใน .gitignore แล้ว แต่ไฟล์ที่คุณต้องการละเว้นถูกเพิ่มไว้แล้ว เราสามารถเพิ่มไฟล์ใหม่ได้ การเพิ่มหมายความว่าเราจะลบทุกอย่างออกจากดัชนีของ Git แล้วเพิ่มทุกอย่างกลับเข้าไปในที่เก็บของคุณอีกครั้ง เมื่อเราเพิ่มไฟล์อีกครั้งตั้งแต่ต้น กฎจะถูกเก็บไว้ในใจที่คุณได้เพิ่มใน .gitignore และเพิ่มเฉพาะไฟล์ที่ถูกต้องเท่านั้น
หมายเหตุ: คุณควรสำรองรหัสของคุณไว้ที่อื่นด้วยก่อนที่จะดำเนินการแก้ไขปัญหานี้ เป็นเรื่องดีเสมอที่จะสำรองข้อมูลไว้เผื่อไว้
- ดำเนินการคำสั่งต่อไปนี้ การดำเนินการนี้จะยกเลิกขั้นตอนและลบเส้นทางไปยังไฟล์ของคุณออกจากดัชนี git ในลักษณะเรียกซ้ำ
git rm -r --cached .
- หลังจากดำเนินการนี้แล้ว คุณควรดำเนินการคำสั่งต่อไปนี้ การดำเนินการนี้จะเพิ่มไฟล์ทั้งหมดของคุณกลับเข้าไป และเนื่องจาก .gitignore จะมีกฎเกณฑ์ เฉพาะไฟล์ที่ถูกต้องเท่านั้นที่จะได้รับการอัปเดต
git add .
- ตอนนี้ เราจะส่งไฟล์ทั้งหมดของคุณกลับเข้าไปในดัชนีโดยใช้โค้ดด้านล่าง:
git commit -m ".gitignore is now working"
ตอนนี้ให้ตรวจสอบไฟล์ของคุณและดูว่าปัญหาได้รับการแก้ไขหรือไม่ และคุณสามารถใช้ .gitignore อีกครั้งโดยไม่มีปัญหาใดๆ