我的软件项目是模块化的。某些文件由开发人员在指定的子目录下提交,其他文件未解压缩以提供用于开发的环境运行时(Web资源),并且不应提交。
- webapp
- common (provided)
- error (provided)
- secure
- admin (provided)
- audit (provided)
- ftt (provided)
- WEB-INF (to ignore)
我想忽略webapp 下的所有内容,但 /webapp/secure/ftt
及其子目录下的所有文件。
我试过
/webapp
!/webapp/secure/ftt
但是Git仍然无视ftt。
我希望这些目录只包含.jsp
和.js
个文件。但我不知道将来会发生什么(例如gif,pdf等)
如何告诉Git将/webapp/secure/ftt
下的文件列入白名单并忽略/webapp
下的所有其他内容?
根据我的研究,我发现如果没有列出每个特定的子目录和文件模式,可能是不可能的。
在@DevDonkey评论之后[添加]我试图清空我的整个gitignore文件并留下他发布的内容
/webapp/*
!/webapp/secure/ftt
除了现在可用于索引的无用文件(例如.class文件)之外,因为我说我清空了gitignore,我发现sample.jsp仍然被忽略
答案 0 :(得分:1)
怎么样
/webapp/*
!/webapp/secure/ftt
在我当地工作。注意添加斜杠和通配符,因此git保留根文件夹,但随后处理其余的文件夹。
答案 1 :(得分:0)
您应该遵循一些不优雅的解决方案,例如根据以下内容将单独的.gitignore
文件部署到/webapp/secure/ftt
目录:
# Ignore any file in this directory except for this file and *.foo files
*
!/.gitignore
!*.foo
如果您不愿意或无法添加.gitignore文件,则会有一个不太优雅的解决方案:
# Ignore any file but *.foo under Resources. Update this if we add deeper directories
Resources/*
!Resources/*/
!Resources/*.foo
Resources/*/*
!Resources/*/*/
!Resources/*/*.foo
Resources/*/*/*
!Resources/*/*/*/
!Resources/*/*/*.foo
Resources/*/*/*/*
!Resources/*/*/*/*/
!Resources/*/*/*/*.foo