我有一个.gitignore
这样的文件:
# no binaries
*/
!*.go/
!.gitignore
我认为*/
表示忽略所有子目录中的所有文件(因此每个文件都有),!*.go/
表示不忽略所有子目录中的所有*.go
文件,!.gitignore
意味着不要忽略.gitignore
。
但是,我现在遇到的问题是,当我在子目录中创建一个新的*.go
文件时,它现在被忽略了。
如何正确gitignore所有已编译的二进制文件,但不忽略*.go
个文件?
我现在有
**/*
!**/*.go
!.gitignore
但它仍然忽略ch1目录中的所有* .go文件。其他人有想法吗?
答案 0 :(得分:4)
答案 1 :(得分:3)
您需要使用:
**/*.go
**
用于忽略任何文件夹内的文件,而不仅仅是当前文件夹中的文件。
允许稍后的
!/abc/def
覆盖之前的/abc
出现在同一.gitignore
文件中,以便更容易表达 的everything in /abc directory is ignored, except for ...
强>
.gitignore
文档:与完整路径名匹配的模式中的两个连续星号(
**
)可能具有特殊含义:
Leading **
强>
A leading **
后跟slash
表示匹配所有目录。
例如,**/foo
匹配文件或目录foo
任何地方,与模式foo
相同。
**/foo/bar
匹配文件或目录" bar"直接位于目录foo
下的任何地方。
Trailing **
强>
A trailing /**
匹配里面的所有内容 例如,abc/**
匹配 目录abc
内的所有文件,相对于.gitignore
文件的位置,具有无限深度。
/**/
强> 斜杠后跟两个连续的星号,然后斜杠匹配零个或多个目录。
例如,a/**/b
匹配a/b
,a/x/b
,a/x/y/b
等等。
答案 2 :(得分:-2)
而不是你拥有的,试试这个:
*.go
如果您在忽略文件中使用此文件,则将忽略此类型的所有文件。