忽略目录...但不是一个或两个子目录

时间:2013-03-14 17:41:43

标签: git gitignore

我一直以为我知道如何忽视和否定模式,但我很难过。我有一个基线Drupal安装,我想忽略sites/文件夹中的所有内容,除了几个特定的​​子目录:sites/allsites/my-project

.vagrant
settings.php

# A directory set aside for user contributed assets
uploads/

# All we care about is sites/all and sites/my-project
www/sites/*
!www/sites/all
!www/sites/my-project

鉴于项目根目录中的上述.gitignore文件,当我执行git add .时,我会从www/sites/all得到我期望的一切,但www/sites/my-project却没有。我在这里错过了什么?现在只有一个我关心的文件(www/sites/my-project/settings.sample.php),但我无法弄清楚为什么它不会像其他一样添加。

我知道我可以强迫它,但我想了解更大的问题。我在这里错过了什么?无论它值多少,这都是我最初的提交。我不以任何方式重要,但我也不知道它没有。

更新

糟糕!看起来我关心的一个文件被忽略(这可以解释为什么忽略该目录)。我不知道在哪里或为什么,但它给了我看的地方......

1 个答案:

答案 0 :(得分:0)

我没有看到问题:

$ find .
.
./.gitignore
./www
./www/sites
./www/sites/ignored
./www/sites/ignored/file
./www/sites/my-project
./www/sites/my-project/file
./www/sites/my-project/settings.sample.php
./www/sites/all
./www/sites/all/file
$ git init
Initialized empty Git repository in /home/desert69/tmp/gitignore/.git/
$ cat .gitignore 
.vagrant
settings.php

# A directory set aside for user contributed assets
uploads/

# All we care about is sites/all and sites/my-project
www/sites/*
!www/sites/all
!www/sites/my-project
$ git add .
$ git status --short
A  .gitignore
A  www/sites/all/file
A  www/sites/my-project/file
A  www/sites/my-project/settings.sample.php
$ git --version
git version 1.7.10.4

所以一切似乎都在起作用。

尝试执行rm -rf .git/ && git init以防您之前忽略或添加任何其他文件。

我想也许settings.php中的点被解释为*,因此它与.sample.匹配,但似乎没有。

尝试删除并重新init存储库。