ไฟล์. gitignore ฉันควรวางไว้ที่ไหนในโครงการ xcode ของฉัน


102

ฉันต้องการให้คอมไพล์ละเว้นUserInterfaceState.xcuserstateไฟล์ของฉันในโปรเจ็กต์ XCode4 ของฉัน แต่ฉันควรวาง.gitignoreไฟล์ไว้ที่ไหนมันอยู่ใน.gitโฟลเดอร์หรือไม่ หรือออก? .gitอยู่ในโฟลเดอร์เดียวกันกับProjectName.xcodeprojไฟล์


อาจซ้ำกันได้ของไฟล์. gitignore อยู่ที่ไหน?
Pavan Gupta

คำตอบ:


124

คุณสามารถมี.gitignoreไดเร็กทอรีเดียวของโครงการของคุณ

อย่างไรก็ตามแนวทางปฏิบัติที่ดีที่สุดคือการมี.gitignoreไฟล์เดียวในไดเร็กทอรีรากของโปรเจ็กต์และวางไฟล์ทั้งหมดที่คุณต้องการละเว้นไว้ในนั้นดังนี้:

ignoredFile.whatever
ignoredDirectory/*
directory/ignoredFileInsideDirectory
.svn

เมื่อคุณสร้าง.gitignoreไฟล์ไฟล์ละเว้นที่มีการเปลี่ยนแปลงหรือเป็นไฟล์ใหม่ในที่เก็บจะไม่แสดงเป็นรอการคอมมิต

คุณยังสามารถมีไฟล์ละเว้น git ภายในเครื่องเดียวซึ่งจะจัดการที่เก็บ git ทั้งหมดของคุณ

git config --global core.excludesfile ~/.gitignore_global

ทางเลือกนี้น่าสนใจอย่างยิ่งสำหรับไฟล์ที่ถูกละเว้นซึ่งไม่เกี่ยวข้องกับโครงการเช่นไฟล์ที่เกี่ยวข้องกับ IDE เป็นต้น


1
ควรเพิ่ม. gitignore ที่จุดเริ่มต้นหรือในสำเนาหลัก / local-repo ของคุณ?
Adil

1
ในพื้นที่ (แน่นอนว่าคุณจะผลักดันมันไปยังจุดเริ่มต้นในบางจุด)
Daniel Ribeiro

21

มีวิธีการละเว้นไฟล์ใน git:

  1. การละเว้นคอมไพล์ส่วนกลาง: - ในวิธีนี้กฎที่กำหนดเองของคุณจะถูกนำไปใช้กับไดเร็กทอรี git ทุกตัวในเครื่องของคุณ โดยปกติไฟล์นี้อาจถูกสร้างขึ้นภายใต้~/.gitignore_globalพา ธ วิธีนี้ดีหากคุณต้องการยกเว้นไฟล์บางประเภทที่สร้างโดยระบบปฏิบัติการหรือเครื่องมือบันทึกการแคชและอื่น ๆ
  2. การละเว้น git ต่อที่เก็บ: - ในวิธีนี้กฎที่กำหนดเองของคุณจะถูกนำไปใช้กับไดเร็กทอรี git เฉพาะในเครื่องของคุณ สามารถเพิ่มกฎโลคัลต่อที่เก็บลงใน.git/info/excludeไฟล์ในที่เก็บของคุณ กฎที่ระบุภายใต้ไฟล์นี้จะไม่ถูกผูกมัดซึ่งหมายความว่าจะไม่ถูกแชร์กับผู้อื่น โดยทั่วไปวิธีนี้มีประโยชน์ในการป้องกันการคอมมิตไฟล์ที่สร้างขึ้นภายในเครื่อง ตัวอย่างเช่นสำหรับไฟล์ที่สร้างโดยผู้แก้ไขของคุณ
  3. ต่อพา ธ git ไม่สนใจ: - ในกรณีนี้กฎที่กำหนดเองของคุณจะถูกนำไปใช้กับเส้นทางย่อยของที่เก็บ git ที่ระบุ คุณสามารถสร้าง.gitignoreในพา ธ ย่อยของที่เก็บเฉพาะของคุณ วิธีนี้มักใช้เพื่อละเว้นไฟล์บางประเภทภายใต้โฟลเดอร์เฉพาะของที่เก็บเฉพาะ แม้ว่าไฟล์นี้สามารถเพิ่มลงในการควบคุมเวอร์ชันโดยพา ธ อื่นและที่เก็บอื่น ๆ

ดังนั้นคำแนะนำของฉันสำหรับคุณคือถ้าคุณต้องการละเว้นไฟล์เฉพาะของคุณ ( UserInterfaceState.xcuserstate) ในที่เก็บทั้งหมดของคุณแนวทางที่ดีที่สุดคือการใช้ global git ไม่สนใจวิธีการ อย่างไรก็ตามหากไฟล์ของคุณสร้างขึ้นเฉพาะในที่เก็บเฉพาะคุณสามารถใช้วิธีละเว้น git ต่อที่เก็บได้

สำหรับข้อมูลเพิ่มเติมคุณสามารถอ่านนี้โพสต์บล็อกที่ดี และมีการต่อเฉพาะภาษา Git ไม่สนใจกฎสามารถก่อตั้งขึ้นที่นี่ และคุณสามารถสร้างกฎการละเว้นคอมไพล์ทั่วไปโดยอัตโนมัติสำหรับภาษาเครื่องมือหรือระบบปฏิบัติการเฉพาะโดยใช้เว็บไซต์นี้



12

ฉันควรวาง.gitignoreไฟล์ไว้ที่ไหนมันอยู่ในโฟลเดอร์. git หรือไม่

ไม่มี.gitignoreภายใน.gitโฟลเดอร์
อย่างไรก็ตาม.git/info/excludeไฟล์นี้เป็นไฟล์ที่ช่วยให้คุณสามารถยกเว้นไฟล์ในเครื่องได้โดยทั่วไปเมื่อคุณต้องการยกเว้นไฟล์สำหรับ repo เฉพาะนี้ (ที่มีนามแฝงเช่นนี้ ):

git config alias.exclude "!sh -c 'echo \"$1\" >> .git/info/exclude' -"
git exclude UserInterfaceState.xcuserstate

หากคุณต้องการยกเว้นไฟล์นี้สำหรับโปรเจ็กต์ที่คล้ายกันทั้งหมดตามที่Elnur Abdurrakhimovกล่าวถึงในคำตอบของเขาให้ไม่รวมไฟล์นี้ทั่วโลก

echo UserInterfaceState.xcuserstate >> ~/.gitignore

แต่ตามที่กล่าวไว้ใน " เราจำเป็นต้องเช็คอิน * .xcuserstate หรือไม่ " หากเป็นไฟล์ประเภทหนึ่งที่ผู้ใช้ repo นั้นควรละเว้นฉันจะใช้เวอร์ชัน. gitignore ที่ด้านบนของ repo ที่มีเนื้อหาคล้ายกับ:

*.xcuserstate 

ด้วยวิธีนี้ผู้ใช้ repo นั้นจะไม่รู้ด้วยซ้ำว่ามีไฟล์นี้อยู่และถูกสร้างขึ้น (ไม่ว่าจะเป็นชื่ออะไรก็ตาม) มันจะไม่ปรากฏขึ้นgit statusเลย

หรือคุณสามารถละเว้นxcuserdata/ทั้งหมด (ทั้งในส่วนกลาง.gitignoreหรือในเวอร์ชันที่เป็นเวอร์ชันเช่นไฟล์GitHub ทั่วไปObjective-C.gitignore


คุณคือตำนานของ GIT! คำตอบของคุณมีประโยชน์ที่สุดเสมอ
Jad Chahine

@JadChahine ขอบคุณครับ ดีใจที่ได้ช่วยเหลือ (อย่างน้อยการเขียนคำตอบเหล่านั้นก็ช่วยให้ฉันเรียนรู้คอมไพล์)
VonC

@tymac ไม่ค่อยนะ) ฉันไปเยี่ยมเป็นประจำ ( meta.stackexchange.com/questions/122976/… )
VonC

9

คุณไม่ควรใส่ไฟล์เฉพาะเครื่องมือลงในไฟล์ของโปรเจ็กต์.gitignore- เว้นแต่ว่าผู้พัฒนาแต่ละรายของโปรเจ็กต์จะต้องใช้เครื่องมือนั้น

ให้สร้าง.gitignoreไฟล์ส่วนกลางส่วนบุคคลของคุณในโฮมไดเร็กทอรีของคุณแทนและเปิดใช้งาน:

git config --global core.excludesfile ~/.gitignore

ตอนนี้คุณสามารถใส่ไฟล์ใดก็ได้ที่สร้างโดยเครื่องมือพัฒนาของคุณลงใน.gitignoreไฟล์ของคุณ


6

โดยทั่วไปแนวทางปฏิบัติที่ดีที่สุดในการรวม.gitignoreไฟล์ไว้ในไดเรกทอรีรากของโครงการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.