gitignore不会忽略子目录中的文件

时间:2014-11-09 19:03:24

标签: git autoconf

所以,我希望git忽略git仓库中子目录中的一些文件。

项目目录结构布局基本如下:

GIT_ROOT
---project1
------src

我希望git忽略GIT_ROOT/project1中的某些文件。我这样做是通过创建.gitignore文件并忽略Makefile或其他autoconf生成的绒毛之类的东西。但是,autoconf也会在子目录中创建Makefile,因此也会在GIT_ROOT/project1/src中生成Makefile。当然,我想忽略GIT_ROOT/projectGIT_ROOT/project/src中的所有Makefile。

我想我可以通过在.gitignore中的GIT_ROOT/project1文件中添加以下内容来实现此目的:

**/Makefile
**/Makefile.in

我的理解是,这应该指示git忽略出现在GIT_ROOT/project1中的任何 Makefile - 或出现在子目录中的任何Makefile,例如GIT_ROOT/project1/src。但是,当我实际提交并推送到远程主服务器时,git 忽略GIT_ROOT/project1中的Makefile - 但它不会忽略更深层目录中的任何Makefile。

我是否需要在每个子目录中包含.gitignore文件?如果没有,为什么.gitignore 中的GIT_ROOT/project1文件不适用于GIT_ROOT/project1/src中的Makefile?

1 个答案:

答案 0 :(得分:3)

您只需添加到.gitignore中的GIT_ROOT/project1文件:

Makefile
Makefile.in

不需要' *'通配符。
这将应用于project1和任何子文件夹 您可以使用git check-ignore -v -- project1/xxx/Makefile检查该内容。

如果它们没有被忽略,那意味着它们已经被版本化:git rm --cached可以将它们从索引中删除。