Gitignore 不适用于嵌套文件

Gitignore not working for nested files

我有一个目录结构如下的仓库:

src/
    main/
        resources/
            application-local.properties
            application-local-db.properties
        java/
            <lots of source files here>
.gitignore

还有一个 git忽略看起来像:

/.project
/target/
/bin/
/.settings/
/.classpath
/generated/
.idea
*.iml

我现在想将 src/main/resources/application-local.* 添加到我的 git 忽略中,这样对此文件的更改不会得到 committed/pushed。所以我将 gitignore 更改为:

/.project
/target/
/bin/
/.settings/
/.classpath
/generated/
.idea
*.iml
/application-local-memcached.properties
/application-local.properties

然后我对 application-local.properties 做了一些更改,当我执行 git add . -n 时,我看到 git 准备好进行更改! 为什么 git 不尊重我的 git忽略更改以忽略对 application-local.* 的更改?

我假设 application-local.properties 已经 checked-in 到 repo。如果是,您必须将其删除(或在此期间制作一个副本),提交删除文件,将您创建的副本重命名为原始文件名和 post .gitignore将开始忽略对该文件的更改。

或者,从 Git 的角度来看,src/main/resources/ 在技术上是空的,因为您希望 Git 忽略那些 属性 文件。 Git 不允许将空目录添加到 repo,但如果您仍想保留此目录结构,请创建一个虚拟文件 src/main/resources/.gitkeep 以便您可以实际提交和维护该目录路径回购。