我有两个我想忽略的文件:
我认为将这条规则添加到.gitignore就足够了:
.idea/workspace.xml
但它只捕获顶级.idea / workspace.xml(git status显示someapp / src / .idea / workspace.xml为未跟踪)。
我也试过**/.idea/workspace.xml
,但这根本不起作用。帮助
答案 0 :(得分:21)
使用平台fnmatch(3)函数(很多地方,如pathspec匹配,.gitignore和.gitattributes)已被wildmatch取代,允许“foo / ** / bar”匹配“foo / bar”,“foo / a / bar“等等。
**/.idea/workspace.xml
现在可以在此示例中使用。
答案 1 :(得分:11)
- [...]
- 如果模式不包含斜杠/,git将其视为shell glob模式,并检查相对于.gitignore文件位置的路径名匹配(相对于工作树的顶层,如果不是一个.gitignore文件)。
- 否则,git将模式视为适合fnmatch(3)使用FNM_PATHNAME标志的shell glob:模式中的通配符与路径名中的/不匹配。 [...]
一旦路径包含斜杠,Git将不再检查路径中的匹配,而是直接使用glob行为。因此,您无法匹配.idea/workspace.xml
,只能匹配workspace.xml
。
答案 2 :(得分:5)
请参阅gitignore手册中的示例:
“Documentation / * .html”匹配“Documentation / git.html”但不匹配 “Documentation / ppc / ppc.html”或“tools / perf / Documentation / perf.html”
因此.idea/workspace.xml
将匹配根{但someapp/src/.idea/workspace.xml
但是根据你的fnmatch实现,这是你在.gitignore中所需要的:
.idea/workspace.xml
**/.idea/workspace.xml
答案 3 :(得分:2)
试试这个
/**/.idea/workspace.xml
答案 4 :(得分:0)
根据gitignore手册页:
从与路径相同的目录中的.gitignore文件读取的模式,或在任何父目录中读取的模式,其中较高级别文件中的模式(直到工作树的顶层)被较低级别文件中的模式覆盖到包含该文件的目录。 这些模式相对于.gitignore文件的位置匹配。项目通常在其存储库中包含此类.gitignore文件,其中包含作为项目构建的一部分生成的文件的模式。
(强调我的)