ฉันสับสนเล็กน้อยเกี่ยวกับข้อดีข้อเสียของการใช้.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 และสร้างอาร์ติแฟกต์ซึ่งมีไว้สำหรับโครงการและควรจะเหมือนกันสำหรับทุกคนในโครงการ
ที่ช่วย?