我的实际问题
我希望只有根目录下的.gitignore
文件忽略文件,即子目录中的.gitignore
文件不应该忽略文件。
明确一下
我不想忽略其他的.gitignore
文件。 我希望它们被提交到git中,但是我不希望它们忽略其他文件。
具体用例
假设我想将一个样板项目结构提交到git。 假设项目结构如下:
project-root/
│
├── boilerplate/
│ ├──directory/
│ ├──some-other-directory/
│ ├──.env
└── └──.gitignore // Has a line ".env" which will ignore the .env file in this directory
│
├── boilerplate2/
│ ├──directory/
│ ├──some-other-directory/
│ ├──.env
└── └──.gitignore
│
└── .gitignore // The .gitignore in root
现在,在
boilerplate
目录中的.gitignore
文件将忽略.env
,而我不想要这个。我该如何阻止嵌套的.gitignore
文件生效?
我尝试了什么?
我在主.gitignore
文件中尝试使用否定(!
)运算符。对于上面的示例结构,它等同于!boilerplate/.env
。根目录下的.gitignore
文件无法覆盖指定目录中的.gitignore
文件。为什么会这样呢?有没有解决方法?
编辑:
VonC建议使用脚本自动化处理,但这不是问题所在。问题是,如果可能的话,如何仅使用.gitignore
来解决这个问题。
.env
也没有提交boilerplate/
。只有根目录下的.gitignore
被提交了。但是当我执行git status
时,由于boilerplate/.gitignore
(也未提交),git会忽略boilerplate/.env
。 - Shivang Kakkar.env
重命名为.env.tpl
作为模板文件。然后,你提供了一个脚本,如果不存在.env.tpl
则创建一个.env.tpl
。如果我重命名文件,整个过程就不需要了,因为.gitignore
无论如何都不会忽略.env.tpl
。然后我可以将文件重命名为.env
。但这违背了问题的目的,因为它应该与“如何使用.gitignore”相关,而不是与“bash脚本”相关。 - Shivang Kakkar