我有一个.gitignore像这样的文件:
# no binaries
*/
!*.go/
!.gitignore
Run Code Online (Sandbox Code Playgroud)
我认为这*/意味着忽略所有子目录中的所有文件(因此每个文件),!*.go/意味着不忽略*.go所有子目录中的所有文件,并且!.gitignore意味着不忽略.gitignore。
但是,我现在遇到的问题是,当我*.go在子目录中创建新文件时,现在将其忽略。
如何正确gitignore所有编译的二进制文件,而不忽略*.go文件?
我现在有
**/*
!**/*.go
!.gitignore
Run Code Online (Sandbox Code Playgroud)
但是它仍然忽略ch1目录中的所有* .go文件。其他人有想法吗?
这将忽略除.go文件以外的所有内容,并且也适用于子目录:
**/*
!**/*.go
!**/
Run Code Online (Sandbox Code Playgroud)
您可能还想看看这个问题,它询问的内容非常相似。
您需要使用:
**/*.go
Run Code Online (Sandbox Code Playgroud)
用于**忽略任何文件夹内的文件,而不仅仅是当前文件夹中的文件。
允许较晚的内容
!/abc/def覆盖 出现在同一文件中的较早的/abc内容,以便更容易表达。.gitignore
everything in /abc directory is ignored, except for ...
.gitignore文档中:与完整路径名匹配的模式中的两个连续星号 (
**)可能具有特殊含义:
Leading **
A leading **接下来是所有目录slash中的均值匹配。 例如,匹配任意位置的文件或目录,与模式相同。匹配直接位于目录下任何位置的文件或目录“bar” 。**/foofoofoo
**/foo/barfoo
Trailing **
A trailing /**与里面的一切相匹配。
例如,abc/**匹配目录内的所有文件abc,相对于文件的位置.gitignore,具有无限深度。
/**/斜杠后跟两个连续的星号,然后斜杠匹配零个或多个目录。
例如,a/**/b匹配a/b、a/x/b、a/x/y/b等。