簡體   English   中英

.gitignore如何忽略目錄中的第一級文件但不忽略子文件?

[英].gitignore How to ignore first level files in a directory but not sub-files?

如果你有一個類似的文件結構?

foo
├── bar
│   ├── file1.coffee
│   ├── file2.coffee
│   └── file3.coffee
├── file1.js
├── file2.js
└── file3.js

如何忽略第一級的文件foo目錄( file1.jsfile2.jsfile3.js ),但不能忽略的一切bar目錄( file1.coffeefile2.coffeefile3.coffee

提供結構保持相同/相似,但文件名和擴展名當然會有所不同。

是否有可能在沒有每個目錄擁有自己的.gitignore和白名單的情況下執行此操作? 文檔似乎沒有提到如何實現這一點。

使用*作為第一個規則也會忽略文件夾,並且:

如果排除該文件的父目錄,則無法重新包含文件。 *
* :除非在git 2.?+中滿足某些條件,見下文)

所以你需要在忽略第一級后列出文件夾。
然后,您將列出白名單文件夾下的所有內容列入白名單:

*
!*/
!*/**

或者,使用Sven Marnach的變體,使用/*僅針對第一級的文件和文件夾:

/*
!*/

請注意,使用git 2.9.x / 2.10(2016年中期?), 如果在重新包含的路徑中沒有通配符 ,則可以重新包含該文件的文件。

NguyễnTháiNgọcDuy( pclouds正在嘗試添加此功能:

但是,由於重新納入的條件之一是:

重新包含規則中的目錄部分必須是文字(即沒有通配符)

除非我們只談論foo和bar文件夾,否則無論如何都不會在這里工作:

foo/
!foo/bar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM