อย่างที่ชื่อบอกเป็นไปได้ไหมที่จะเพิ่ม "ไฟล์ที่ไม่มีจุด" ลงในไฟล์ gitignore
ฉันคิดว่านี่จะดูแลไฟล์นามสกุลที่น่ารำคาญเหล่านั้นทั้งหมด
อย่างที่ชื่อบอกเป็นไปได้ไหมที่จะเพิ่ม "ไฟล์ที่ไม่มีจุด" ลงในไฟล์ gitignore
ฉันคิดว่านี่จะดูแลไฟล์นามสกุลที่น่ารำคาญเหล่านั้นทั้งหมด
คำตอบ:
คุณสามารถลองใช้ชุดค่าผสมที่คล้ายกับ:
*
!/**/
!*.*
gitignore
กฎการยกเว้นนั้น( รูปแบบที่เป็นลบ ) ควรละเว้นไฟล์ทั้งหมดยกเว้นไฟล์ที่มีนามสกุล
ดังที่กล่าวไว้ด้านล่างโดยMad Physicistกฎคือ:
ไม่สามารถรวมไฟล์ใหม่ได้หากไม่รวมไดเร็กทอรีหลักของไฟล์นั้น (*
)
(*
: เว้นแต่เงื่อนไขบางประการจะตรงตาม git 2.?+ ดูด้านล่าง)
นั่นคือเหตุผลว่าทำไมจึง!/**/
มีความสำคัญ (การทำรายการโฟลเดอร์หลักซ้ำ ๆ เป็นสีขาว) หากเราต้องการทำรายการไฟล์สีขาว
ฉันพูดถึงกฎเดียวกันนี้ในกรณีที่คล้ายกันเช่น:
ในฐานะที่เป็นยาคุบบNarębski ความคิดเห็นที่คุณอาจไม่ต้องการที่จะไม่สนใจทุกไฟล์ extensionless
คำแนะนำของฉัน:
.gitignore
ตามที่แสดงด้านบน: ไฟล์ที่มีเวอร์ชันแล้วจะไม่ถูกเพิกเฉย (แม้ว่าจะไม่มีนามสกุลก็ตาม) คนอื่น ๆ ทั้งหมดจะถูกละเว้นสำหรับไฟล์ที่ไม่มีนามสกุลในอนาคตที่คุณต้องการเป็นเวอร์ชัน:
git add -f -- myFile
โปรดทราบว่ามีคอมไพล์ 2.9.x / 2.10 (กลาง 2016?) ก็อาจจะเป็นไปได้อีกครั้งรวมถึงไฟล์ถ้าไดเรกทอรีแม่ของไฟล์ที่ได้รับการยกเว้นในกรณีที่มีสัญลักษณ์แทนในเส้นทางใหม่รวมถึงไม่มี
NguyễnTháiNgọc Duy ( pclouds
)กำลังพยายามเพิ่มคุณสมบัตินี้:
อย่างไรก็ตามเนื่องจากกฎข้อหนึ่งในการรวมเข้าใหม่คือ:
ส่วนไดเร็กทอรีในกฎการรวมซ้ำต้องเป็นตัวอักษร (เช่นไม่มีสัญลักษณ์แทน)
สิ่งนี้จะไม่ได้ผลที่นี่ต่อไป
.gitignore
ที่จะเป็นและ**
!**.*
ฉันรู้ว่าสิ่งนี้ไม่ได้สร้างความแตกต่างหากวางดอกจันไว้ข้างหน้า แต่จะมีความชัดเจนและชัดเจนยิ่งขึ้นเมื่อเชลล์จัดการกับสัญลักษณ์แทน ...
!Makefile
. ระวังว่าฉันประสบปัญหากับโซลูชันนี้ใน Git 1.7.1 ในขณะที่ใช้งานได้ดีใน 1.9.0 ในกรณีของฉันการเพิ่มไฟล์ในไดเร็กทอรีรูททำงานได้ดี แต่การเพิ่มไฟล์ที่มีนามสกุลภายในไดเร็กทอรีย่อยถูกแสดงว่าละเว้น ดูเหมือนว่าจะเป็นเพราะ 1.7.1 ยังไม่รองรับ**
รูปแบบดูที่นี่ !
**
ถูกเพิ่มเข้ามาใน 1.8.2
Git มีข้อเสียมากกว่าการใช้!*/
แทน!/**/
หรือไม่?
*
!*/
!*.*
*
บอกให้คอมไพล์ละเว้นทุกสิ่ง
!*/
จากนั้นยกเลิกการให้ชื่อสิ่งที่เป็นไดเร็กทอรี นี่เป็นสิ่งสำคัญ
!*.*
ยกเลิกการกำหนดไฟล์ทั้งหมดที่มีนามสกุล
หากไม่มี!*/
กฎไดเรกทอรีที่ไม่มี.
ชื่อจะไม่ปรากฏในรายการและจะไม่มีการเพิ่มไฟล์ที่คุณต้องการนอกโฟลเดอร์รูท
สำหรับการอ้างอิงโปรดอ่านสองส่วนนี้ในเอกสาร. gitignore ที่โดดเด่น:
คำนำหน้า "!" ซึ่งลบล้างรูปแบบ ไฟล์ที่ตรงกันใด ๆ ที่ถูกยกเว้นโดยรูปแบบก่อนหน้านี้จะรวมอีกครั้ง ไม่สามารถรวมไฟล์ใหม่ได้หากไม่รวมไดเร็กทอรีหลักของไฟล์นั้น Git ไม่แสดงรายการไดเรกทอรีที่ยกเว้นเนื่องจากเหตุผลด้านประสิทธิภาพดังนั้นรูปแบบใด ๆ ในไฟล์ที่มีจะไม่มีผลไม่ว่าจะกำหนดไว้ที่ใดก็ตาม ใส่แบ็กสแลช ("\") ไว้ข้างหน้า "!" อันแรก สำหรับรูปแบบที่ขึ้นต้นด้วยตัวอักษร "!" ตัวอย่างเช่น "! important! .txt"
หากรูปแบบลงท้ายด้วยเครื่องหมายทับจะถูกลบออกตามวัตถุประสงค์ของคำอธิบายต่อไปนี้ แต่จะพบเฉพาะไดเร็กทอรี กล่าวอีกนัยหนึ่ง foo / จะจับคู่ไดเร็กทอรี foo และพา ธ ที่อยู่ด้านล่าง แต่จะไม่ตรงกับไฟล์ปกติหรือลิงก์สัญลักษณ์ foo (ซึ่งสอดคล้องกับวิธีการทำงานของ pathspec โดยทั่วไปใน Git)
ในโฟลเดอร์ของฉันมีไฟล์มากมายที่มี*.c, *.h, *.txt, *.csv
นามสกุลอื่น ๆ และไฟล์ไบนารีที่ไม่มีนามสกุลใด ๆ ดังนั้นฉันจึงต้องละเว้นไฟล์ทั้งหมดที่ถูก execpt *.c,*.h
และ.gitignore
สิ่งนี้ใช้ได้กับฉันจาก.gitignore
ตัวอย่าง:
*/* #ignore all files in each directory
!*/*.c #unignore .c files in each directory
!*/*.h #unignore .h header files in each directory
!.gitignore #unignore .gitignore
README
,LICENSE
หรือCOPYING
,INSTALL
,Makefile
ฯลฯ แต่คุณก็สามารถบังคับให้เพิ่มพวกเขาและพวกเขาก็มีการติดตาม