git ไม่สนใจไฟล์ทั้งหมดบางประเภทยกเว้นไฟล์ในโฟลเดอร์ย่อยที่เฉพาะเจาะจง


194

ฉันมีโครงสร้างไดเรกทอรีเช่นนี้

  • ราก
    • folder1
      • abc.json
      • def.json
      • somedir
        • more.json
    • folder2
      • qwe.json
      • rty.json
    • ข้อมูลจำเพาะ
      • mock1.json
      • mock2.json
      • somedir
        • more_mocks.json

ตอนนี้ใช้.gitignoreฉันต้องการที่จะไม่สนใจทุกไฟล์ยกเว้นสำหรับคนที่อยู่ในนั้น*.json specฉันไม่ต้องการที่จะใช้.gitignoreในfolder1และfolder2เพราะมีตันของเหล่านี้และพวกเขาจะได้รับการบันทึกจำนวนมากและผมมั่นใจว่าผมจะลืมที่จะย้ายที่เหมาะสม.gitignoreไฟล์ในสถานที่

นอกจากนี้อาจมีไดเร็กทอรีที่ซ้อนกันมากขึ้นพร้อมไฟล์ json และกฎนี้จำเป็นต้องใช้กับไดเร็กทอรีย่อยทั้งหมดด้วย

ดังนั้นฉันจะละเว้นไฟล์ทั้งหมดของประเภทยกเว้นไดเรกทอรีย่อยที่แน่นอนได้อย่างไร

คำตอบ:


304

คำนำหน้าตัวเลือก!ซึ่งขัดแย้งกับรูปแบบ; ไฟล์ที่ตรงกันใด ๆ ที่ยกเว้นโดยรูปแบบก่อนหน้านี้จะถูกรวมอีกครั้ง หากรูปแบบเมื่อตะกี้ตรงนี้จะแทนที่แหล่งที่มาของรูปแบบที่ต่ำกว่า

http://schacon.github.com/git/gitignore.html

*.json
!spec/*.json

4
นอกจากนี้คุณยังสามารถเพิ่ม. gitignore เพื่อสเป็คที่มี! / *. json หากคุณต้องการ
เดวิดมิตเชลล์

2
ขอบคุณ! แม้ว่าในกรณีของฉันฉันรู้ว่าฉันต้องการละเว้นอะไรในไดเรกทอรีข้อมูลจำเพาะของฉันเลย !specดังนั้นฉันสามารถที่จะได้รับไปกับที่ง่ายมาก ทำงานเหมือนจับใจ
Alex Wayne

7
แม้ว่าคำตอบของแอมเบอร์จะทำงานเมื่อสเป็คเป็นไดเรกทอรีภายใต้ระดับบนสุด (เช่น / spec) แต่ก็ไม่ได้ผลสำหรับฉันเมื่อสเป็คเป็นไดเรกทอรีย่อยเช่น / a / spec หรือ a / b / spec ใช้ git 1.7.5.4
Peter Lewis

7
@PeterLewis (สำหรับผู้เยี่ยมชมในอนาคต): กรณีดังกล่าวสามารถจัดการได้โดยการสร้างไฟล์. gitignore ในไดเรกทอรีย่อยที่เกี่ยวข้อง
cmbuckley

3
วิธีแก้ปัญหานี้สำหรับฉันเท่านั้นไม่สนใจjsonไฟล์ในspecโดยตรงไม่ใช่ในsomedirไดเรกทอรีย่อยจากคำถาม ฉันจำเป็นต้องใช้!spec/**/*.jsonเพื่อให้แน่ใจว่าmore_mocks.jsonมีความมุ่งมั่นเช่นกัน
ลี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.