$ git --version
git version 2.6.4
Run Code Online (Sandbox Code Playgroud)
我意识到这是一个重复,但另一个问题的答案没有帮助.
文件夹结构
/
-- dist/
---- samples/
---- README.md
---- foo/
---- bar/
---- baz.js
Run Code Online (Sandbox Code Playgroud)
除了samples和README.md之外,我想忽略dist中的所有内容.我的前几次尝试都没有用,所以我决定放弃自述文件:
dist
!dist/samples/README.md
Run Code Online (Sandbox Code Playgroud)
README是一个全新的文件.dist文件夹根本不在源代码管理中.但是当我检查忽略时,它仍然被忽略:
$ git check-ignore dist/samples/README.md
dist/samples/README.md
$ git check-ignore src
# empty line
Run Code Online (Sandbox Code Playgroud)
我试过了:
dist/**/README.md/*的末尾添加一个dist唯一被忽略的是*.js,*.js.map,temp和node_modules.有趣的是,Webstorm认为文件没有被忽略(它会改变颜色),但命令行工具确实认为它被忽略了.
我不明白我做错了什么.模式似乎很简单:
但它显然不起作用.
pok*_*oke 28
问题仅仅是因为您忽略了目录dist.所以Git将不再查看目录以查找其他文件.
正如在解释这个相关的答案,你需要加入白名单的目录,只有忽略它的内容.由于你有一个嵌套的结构,这最终会有点复杂:
# ignore everything in the `dist` folder
dist/*
# … but don’t ignore the `dist/samples` folder
!dist/samples/
# … but ignore everything inside that `dist/samples` folder
dist/samples/*
# … except the `README.md` there
!dist/samples/README.md
Run Code Online (Sandbox Code Playgroud)
gitignore文档中也明确提到了这一点(强调我的):
一个可选的前缀"
!",它否定了模式; 之前模式排除的任何匹配文件将再次包含在内.如果排除该文件的父目录,则无法重新包含文件.出于性能原因,Git不会列出排除的目录,因此无论在何处定义,所包含文件的任何模式都不起作用.