ฉันสับสนเล็กน้อยเกี่ยวกับข้อดีข้อเสียของการใช้.git/info/excludeและ.gitignoreการยกเว้นไฟล์
ทั้งสองอยู่ในระดับของที่เก็บ / โครงการดังนั้นจึงแตกต่างกันอย่างไรและควรใช้เมื่อ.git/info/excludeใด
ฉันสับสนเล็กน้อยเกี่ยวกับข้อดีข้อเสียของการใช้.git/info/excludeและ.gitignoreการยกเว้นไฟล์
ทั้งสองอยู่ในระดับของที่เก็บ / โครงการดังนั้นจึงแตกต่างกันอย่างไรและควรใช้เมื่อ.git/info/excludeใด
คำตอบ:
ประโยชน์ของการก็คือว่ามันสามารถตรวจสอบได้ลงพื้นที่เก็บข้อมูลของตัวเองแตกต่างจาก.gitignore .git/info/excludeข้อดีก็คือว่าคุณสามารถมีหลาย.gitignoreไฟล์หนึ่งในแต่ละไดเรกทอรี / .git/info/excludeไดเรกทอรีย่อยสำหรับเฉพาะไดเรกทอรีละเว้นกฎซึ่งแตกต่างจาก
ดังนั้นจึง.gitignoreสามารถใช้ได้กับทุกโคลนของที่เก็บ ดังนั้นในทีมขนาดใหญ่ทุกคนจะไม่สนใจชนิดเดียวกันของไฟล์ตัวอย่าง ,*.db *.logและคุณสามารถมีกฎการละเว้นที่เฉพาะเจาะจงมากขึ้นได้เนื่องจากมีหลาย.gitignoreข้อ
.git/info/excludeสามารถใช้ได้สำหรับการโคลนแต่ละคนเท่านั้นดังนั้นสิ่งที่คน ๆ หนึ่งเพิกเฉยในร่างโคลนของเขาจึงไม่มีอยู่ในร่างโคลนของคนอื่น ตัวอย่างเช่นหากมีคนใช้Eclipseเพื่อการพัฒนาอาจเป็นเรื่องที่สมเหตุสมผลสำหรับนักพัฒนารายนั้นที่จะเพิ่ม.buildโฟลเดอร์เข้าไป.git/info/excludeเนื่องจากนักพัฒนาอื่น ๆ อาจไม่ได้ใช้ Eclipse
โดยทั่วไปไฟล์ / ละเว้นกฎที่ต้องถูกละเว้นในระดับสากลควรเข้าไปใน.gitignoreมิฉะนั้นไฟล์ที่คุณต้องการละเว้นเฉพาะในโคลนภายในของคุณควรเข้าสู่.git/info/exclude
~/.gitignoreในความคิดเห็นของคุณด้านบน ความเข้าใจของฉันคือการละเว้นกฎสามารถมีได้ 3 ระดับ - $PROJECT/.git/info/excludeสำหรับกฎการละเว้นเฉพาะ (โปรเจ็กต์ผู้ใช้) $PROJECT/<any number of directories>/.gitignoreซึ่งมีไว้สำหรับกฎการละเว้นเฉพาะโปรเจ็กต์สำหรับผู้ใช้ทุกราย (เมื่อเช็คอิน) ~/.gitignore สำหรับกฎการละเว้นเฉพาะผู้ใช้สำหรับโปรเจ็กต์ใด ๆ สำหรับผู้ใช้ บนเครื่องนั้น ขึ้นอยู่กับวัตถุประสงค์ที่คุณเลือกสถานที่ที่จะนำรายการใน.
git rm --cached <path-name>จะลบออกจากที่เก็บ แต่เก็บไว้ในเครื่อง git update-index --skip-worktree <path-name>จะละเว้นการเปลี่ยนแปลงของไฟล์ แต่เก็บไว้ในที่เก็บ จากความอยากรู้: ทำไมคุณถึงต้องการยกเว้นไฟล์ sln? เป็นส่วนสำคัญของโซลูชัน. Net ใช่ไหม
Googled: 3 วิธีในการยกเว้นไฟล์
.gitignore ใช้กับทุกโคลนของที่เก็บนี้ (ทุกคนจะมีเวอร์ชัน).git/info/exclude ใช้กับสำเนาท้องถิ่นของที่เก็บนี้ของคุณเท่านั้น (ในเครื่องไม่แชร์กับผู้อื่น)~/.gitignore ใช้กับที่เก็บทั้งหมดบนคอมพิวเตอร์ของคุณ (ภายในเครื่องไม่ใช้ร่วมกับผู้อื่น)3. ต้องตั้งค่าบนคอมพิวเตอร์ของคุณจริง:
git config --global core.excludesfile '~/.gitignore'
.git/info/excludesเมื่อควรจะ.git/info/excludeเป็นตามที่ยืนยันโดยเอกสารที่ลิงก์ไป
เพียงแค่นำเสนอประสบการณ์ (โลกแห่งความจริง) ของเรา: เราเริ่มใช้. git / info / exclude เมื่อเราต้องปรับแต่งไฟล์กำหนดค่าบางไฟล์ในแต่ละสภาพแวดล้อมการพัฒนา แต่ยังคงต้องการให้แหล่งที่มาได้รับการดูแลใน repo และพร้อมให้นักพัฒนารายอื่น ๆ
ด้วยวิธีนี้ไฟล์โลคัลเมื่อโคลนและแก้ไขแล้วสามารถแยกออกจากคอมมิตได้โดยไม่ส่งผลกระทบต่อไฟล์ต้นฉบับใน repo แต่ไม่จำเป็นต้องถูกละเว้นใน repo ด้วย
ใช้.gitignoreสำหรับการละเว้นกฎที่มีความเฉพาะเจาะจงกับโครงการ การใช้งานexcludeหรือไม่สนใจทั่วโลกไฟล์ไม่สนใจกฎระเบียบที่มีเฉพาะของคุณสภาพแวดล้อม
ตัวอย่างเช่นไฟล์ที่ไม่สนใจทั่วโลกของฉันจะเพิกเฉยต่อไฟล์ชั่วคราวที่สร้างขึ้นโดยตัวแก้ไขใด ๆ ก็ตามที่ฉันใช้กฎนั้นเฉพาะสำหรับสภาพแวดล้อมของฉันและอาจแตกต่างกันไปสำหรับนักพัฒนารายอื่นในโครงการเดียวกัน (บางทีอาจใช้โปรแกรมแก้ไขอื่น) OTOH .gitignoreไฟล์โครงการของฉันจะเพิกเฉยต่อสิ่งต่างๆเช่นคีย์ API และสร้างอาร์ติแฟกต์ซึ่งมีไว้สำหรับโครงการและควรจะเหมือนกันสำหรับทุกคนในโครงการ
ที่ช่วย?